Berkeley UPC - Unified Parallel C

(A joint project of LBNL and UC Berkeley)


Planned downtime for upc.lbl.gov: August 17 - 21, 2018

Notice to all Berkeley UPC users:
The Berkeley UPC web site at upc.lbl.gov (downloads, documentation, publications, etc), will be unavailable during the period indicated above due to center-wide maintenance.
The outage is NOT expected to affect the primary BUPC internet translator (upc-translator.lbl.gov) so Berkeley UPC compilations using the internet translator should be unaffected. Similarly, Berkeley Bugzilla should also be unaffected.

NEW July 20, 2018 -- Berkeley UPC version 2.28.0 released!

The UPC Language

Delaunay triangulation
About this UPC program
About this UPC program

 Unified Parallel C (UPC) is an extension of the C programming language designed for high performance computing on large-scale parallel machines.The language provides a uniform programming model for both shared and distributed memory hardware. The programmer is presented with a single shared, partitioned address space, where variables may be directly read and written by any processor, but each variable is physically associated with a single processor. UPC uses a Single Program Multiple Data (SPMD) model of computation in which the amount of parallelism is fixed at program startup time, typically with a single thread of execution per processor.

In order to express parallelism, UPC extends ISO C 99 with the following constructs:

The UPC language evolved from experiences with three other earlier languages that proposed parallel extensions to ISO C 99: AC , Split-C, and Parallel C Preprocessor (PCP). UPC is not a superset of these three languages, but rather an attempt to distill the best characteristics of each. UPC combines the programmability advantages of the shared memory programming paradigm and the control over data layout and performance of the message passing programming paradigm.


Our work at UC Berkeley/LBNL

Berkeley UPC downloads since 01/May/2005
Berkeley UPC Runtime Source 25057
Berkeley UPC Translator Source 7693
Berkeley UPC Cygwin Binary 3307
Berkeley UPC MacOS Binary 10079
Combined Total 46136

The goal of the Berkeley UPC compiler group is to develop a portable, high performance implementation of UPC for large-scale multiprocessors, PC clusters, and clusters of shared memory multiprocessors.  We are actively developing an open-source UPC compiler suite whose goals are portability and high-performance.

The major components of our project are:

Some of the research findings from these areas of work can be found on our publications page.

UPC Compiler Infrastructure

There are multiple compiler infrastructures available for use with the Berkeley UPC runtime and compiler driver. The LLVM-based (Clang-UPC) and GCC-based (GUPC) compilers are developed by INTREPID Technology Inc.. An Open64-based (BUPC) translator is developed at LBNL. Currently multiple options encompassing these technologies are supported, for details please see the download page.

All compilers have been tested using the same procedure and our recommendations in terms of robustness and performance are below.

  1. Clang-UPC source-to-source UPC-to-C (CUPC2C) translator
    We consider this to be the most robust option.
    Though results will vary with your choice of a backend C compiler, this option is likely to result in best performance.
  2. Clang-UPC source-to-binary (CUPC) compiler
    We believe this to be as robust as CUPC2C.
    The performance is determined by LLVM (no option to use other backend compilers).
  3. Open64-based source-to-source UPC-to-C (BUPC) translator
    This is the default compiler, hosted as a netcompile service by LBNL.
    Performance is determined by the backend C compiler.
  4. GNU UPC source-to-binary (GUPC) compiler
    We consider this option to be generally robust.
    The performance is determined by GCC (no option to use other backend compilers)

All of the compiler options above use the Berkeley UPC runtime and compiler driver, which is available on the download page.

Related Links

Principal Investigators:
Scott Baden and Katherine Yelick

General contact info

The Berkeley UPC project is funded by the DOE Office of Science and the Department of Defense.


This page last modified on Friday, 20-Jul-2018 20:02:22 PDT