MuPC is a portable, open source implementation of UPC V1.1.1. It enables UPC programs to run on a variety of platforms. The mupcc compilation script first invokes a UPC-to-C translator to translate your UPC source program to C. References to shared data and other UPC constructs from the original program are translated into calls to functions in the MuPC run time library. The C program is then compiled and linked with the MuPC library. MuPC library functions are implemented using Pthreads and MPI. MuPC is designed to run on any platform that supports those packages. Your system must provide Pthreads and MPI.

MuPC V1.1.2 Beta, released in September, 2005, complies with UPC V1.1.1 and incorporates version 3.4 of the EDG front end. Performance improvements include faster access to shared objects to which a thread has affinity, many improvements to the run time system, and easer installation through the use of GNU Autotools. All known bugs and most application limitations of previous versions have been eliminated. Downloads are available for Linux clusters and Tru 64 platforms. Contact us if you are interested in porting MuPC to other platforms.

MuPC V1.1 Resources

  • Download MuPC for Linux clusters (Tru64 version is temporarily unavailable)
  • Documentation
  • Limitations and user hints
  • Known bugs
  • MuPC publications
  • Download UPC LiveCD (240 MB iso image) MD5SUM = ec0f5db0b931ac217c30d3bd5e5fe01d
  • Michigan Tech UPC home page
  • Contact

  • A simple UPC program

    Source code must include #include <upc.h>. It is assumed that source code files have a ".c" suffix, e.g., upc_hello_world.c below:
    #include <upc.h>
    #include <stdio.h>

    int main ()
      printf ("Hello world from thread %d.\n", MYTHREAD);


    mupcc -f 4 upc_hello_world.c -o upc_hello_world


    mupcrun -n 4 upc_hello_world


    Hello world from thread 0.
    Hello world from thread 1.
    Hello world from thread 2.
    Hello world from thread 3.


    Copyright (C) 2001-2004 Michigan Technological University

    Permission is hereby granted to use, reproduce, prepare derivative works, and to redistribute to others.


    Neither Michigan Technological University, nor any of its employees, makes any warranty express or implied, or assumes any legal liability or responsibility for the accuracy, completeness, or usefulness of any information, apparatus, product, or process disclosed, or represents that its use would not infringe privately owned rights.

    © 2004 Michigan Technological University
    Last modified 7/6/4