Berkeley UPC

From Dcmf

Jump to: navigation, search

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 compile has been ported to a variety of platforms.

For more details about the project and associated publications please visit the Berkeley UPC project website.

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.

Berkeley UPC uses GASNet for the communication. GASNet is a language-independent, low-level networking layer that provides network-independent, high-performance communication primitives tailored for implementing parallel global address space SPMD languages such as UPC, Titanium, and Co-Array Fortran. The interface is primarily intended as a compilation target and for use by runtime library writers (as opposed to end users), and the primary goals are high performance, interface portability, and expressiveness. GASNet stands for "Global-Address Space Networking". As the communication subsystem GASNet interfaces with DCMF to provide high performance communication on the BlueGene/P. The GASNet dcmf-conduit currently only supports the DCMF implementation deployed on the BlueGene/P platform. Future work may expand it to support DCMF on additional systems.

To install the Berkeley UPC compiler on a BlueGene/P system we recommend the following commands:

$ <download the source from http://upc.lbl.gov/download>
$ tar -zxvf berkeley_upc-2.8.0.tar.gz && cd berkeley_upc-2.8.0
$ ln -svf gasnet/other/contrib/cross-configure-bgp .
$ cd .. 
$ mkdir build && cd build
$ ../berkeley_upc-2.8.0/cross-configure-bgp --prefix=/path/to/install --enable-sptr-struct
$ make; make install

By default Berkeley UPC looks for the DCMF libraries and headers in /bgsys/drivers/ppcfloor. This can be modified with the DCMF_HOME environment variable to configure. In addition, by default Berkeley UPC uses a shared pointer representation that limits the number of UPC threads to 1024. We recommend that the --enable-sptr-struct pointer be passed to configure to raise this limit at the cost of slightly slower shared pointer arithmetic.

Advanced options, including how to build a local copy of the UPC-to-C translator can be found on the UPC website. A full set of options and environment variables that the runtime recognizes can be found here.

Please feel free to contact us at upc@lbl.gov with any questions.

Personal tools