[LBNL]

Berkeley UPC - Unified Parallel C

(A joint project of LBNL and UC Berkeley)
[UCB]

Home
Downloads
Documentation
Bugs
Publications
Demos
Contact
Internal

Berkeley UPC downloads

Latest News: October 21, 2016: Berkeley UPC 2.24.0 released!


Berkeley UPC Documentation
Berkeley UPC Site-wide
Entire Web

Downloading and Installing Berkeley UPC

There are two main steps to get UPC running on your system using the Berkeley UPC Runtime. You will need to build from source on your system, and there are several ways to do this depending on what option(s) you want for UPC translation/compilation.

Required component: The Berkeley UPC Runtime/driver package

The Berkeley UPC Runtime is required by all configurations.

Berkeley UPC runtime (and compiler driver), version 2.24.0

On Mac OS X, Berkeley UPC requires the Apple Xcode command line tools.
On Microsoft Windows, Berkeley UPC requires Cygwin.
Source Download: berkeley_upc-2.24.0.tar.gz (6.8MB)

MD5 Hash = b70a7eb8c507b558a9de9ad769fba318

Change log Browse the archive
Install Instructions   User Documentation
Previous releases Download mirror

The runtime works on all our supported platforms.

The runtime distribution includes the GASNet portable networking library--if you wish to download GASNet separately, you can get it from the GASNet website.

INSTALL.TXT explains how to configure and build the Berkeley UPC runtime, including optional directions for configuring the 'upcc' driver to use any of the five UPC compiler options listed in the next step. The 'upcc' compiler driver defaults to transparently using a public HTTP-based translator for UPC compilation. Provided your system will have an Internet connection during UPC compilation, this is the easiest and quickest install to get started (and you can stop here).

Optional component: Install a UPC translator/compiler

There are several options for UPC compilation using the Berkeley UPC Runtime. In all cases the same 'upcc' driver is used, and the resulting executables are linked to the Berkeley UPC Runtime and GASNet libraries, and can thus run over any of our supported networks, using the same 'upcrun' job spawner.

Currently five options, encompassing four distinct translators and compilers, are supported:
  1. HTTP-based Berkeley UPC-to-C (BUPC) translator (default)
    The 'upcc' compiler driver defaults to transparently using our HTTP-based public Berkeley UPC-to-C translator for UPC compilation. Provided your system will have an Internet connection during UPC compilation, this is the easiest and quickest install to get started and requires no additional steps.
  2. Locally-built Berkeley UPC-to-C (BUPC) translator
    Alternatively, you can download and install the Berkeley UPC-to-C translator, and configure the UPC Runtime to use your local build of the translator. This allows you to compile UPC code without being connected to the Internet, and may also result in slightly faster compilation times than the default.
  3. Locally-built GNU UPC (GUPC) compiler
    You can download and install the GNU UPC compiler. You will then configure the runtime to use your GNU UPC installation. With this configuration, the Berkeley 'upcc' compiler driver uses the GNU UPC 'gupc' compiler to compile UPC code.
  4. Locally-built Clang-based UPC-to-C (CUPC2C) translator
    You can download and install clang-upc. You will then configure the runtime to use the 'clang-upc2c' source-to-source translator from the clang-upc package. With this configuration, the Berkeley 'upcc' compiler driver uses 'clang-upc2c' to perform source-to-source translation.
  5. Locally-built Clang-UPC (CUPC) compiler
    You can download and install clang-upc. You will then configure the runtime to use the 'clang-upc' compiler from clang-upc. With this configuration, the Berkeley 'upcc' compiler driver uses 'clang-upc' to compile UPC code. This option differs from the previous one in that 'clang-upc' compiles UPC directly to binary without source-to-source translation. Also, 'clang-upc' only supports the process-per-UPC-thread model (not the POSIX-thread-per-UPC-thread model).
Additionally, one can choose to build two or more of BUPC, GUPC, CUPC2C, or CUPC and setup the 'upcc' driver to select a translator or compiler based on compile-time arguments. See INSTALL.TXT for more information. Platform support for each option varies - see the documentation for each translator for details.


Supported platforms

Berkeley UPC has been tested and is known to work on the following system configurations:

Platform Characteristic: Tested/supported configurations
Network Hardware / API SMP, MPI 1.1 and higher, Ethernet UDP, OpenIB InfiniBand verbs, Mellanox InfiniBand MXM API, Portals 4.x API, Cray XE/XK Gemini Cray XC Aries Open Fabrics Interfaces libfabric PSM2 for Intel's OmniPath fabric IBM PAMI (for IBM Power 775, BlueGene/Q and others), SHMEM (for SGI Altix systems)
Operating Systems Linux, Mac OS X, Microsoft Windows (Cygwin), Solaris, FreeBSD, NetBSD, OpenBSD, various compute-node kernels
CPU / System Architecture x86, x86-64, PowerPC, MIPS, SPARC v8+, Cray XD1, Cray XT series, Cray XE & XK series, Cray XC series, SGI Altix, IBM BlueBene/Q, IBM Power 775, Playstation3, ARM, AARCH64, Itanium
C compiler GNU GCC, Intel C, Portland Group C, Clang, Sun/Oracle C, IBM VisualAge C, Cray C, Pathscale C, Open64

Most combinations of the platforms above are supported and functional, and other unlisted platforms may work as well. See the GASNet README for the specific combinations that we've personally tested. Many of the systems listed above support both a vendor-specific C compiler and can also use gcc as the underlying C compiler - we generally recommend the vendor C compiler for performance reasons.

Note: on some of these platforms, the Berkeley UPC runtime works, but the Berkeley UPC-to-C translator does not. In such a case, you'll likely want the default upcc configuration which uses our internet-based BUPC translator for building UPC programs, or alternatively can consider one of the other UPC translation options. See here for a list of platforms where a local install of the Berkeley UPC translator is known to work.

We are interested in supporting Berkeley UPC on as wide a variety of parallel systems as possible. If your system or network is not supported, and you are willing to let us use your resources for development, please contact us.


Licensing

The Berkeley UPC suite is comprised entirely of open source code. Different licenses are used for different components, however: For more information, see the LICENSE files in the source distributions.


Known bugs and limitations

A list of known bugs and limitations in the current implementation is kept in the Berkeley UPC User's Guide.


Feedback

If you encounter a bug, please go to our Bugzilla server and enter a new bug report it if the issue is not already in our database.

You may also send email to our mailing list for UPC users:

We are interested in supporting the runtime on as wide a variety of parallel systems as possible. If your system or network is not supported, and you are willing to let us use your resources for development, please contact us.

We very much appreciate your feedback.


Home
Downloads
Documentation
Bugs
Publications
Demos
Contact
Internal

This page last modified on Sunday, 23-Oct-2016 17:57:36 PDT