GUPC — A UPC implementation for GCC
GNU Unified Parallel C (GUPC)
The GNU UPC project implements a compilation and execution environment for programs written in theUPC (Unified Parallel C)language. The GNU UPC compiler extends the capabilities of GCC. The GUPC compiler is implemented as a C Language dialect translator, in a fashion similar to the implementation of the GNU Objective C compiler.
Project Goal
To encourage the use and adoption of UPC, GUPC provides a free, generally available implementation of the UPC language dialect. By implementing UPC, GUPC provides a high-level tool for creating software targeted at parallel architectures. The UPC language makes it easier to express algorithms that run on parallel, High Performance Computing (HPC) systems.
The GUPC release includes a support library, libupc, and extensions to the "C" parser that recognizes the UPC language syntax.
Features
- UPC 1.2 specification compliant
- UPC collectives library support
- Fast bit packed pointer-to-shared support
- Configurable UPC pointer-to-shared representation
- Pthreads support (where each UPC thread is mapped to a pthread)
- GUPC-provided libupc supports symmetric multiprocessor (SMP) systems
- Libupc will associate each UPC thread with a particular CPU via Linux processor affinity operations and the NUMA library, when available.
Supported Platforms
At this time, GUPC has been tested on the following platforms:
- Intel x86_64 Linux uniprocessor and symmetric multiprocessor systems (Fedora Core 11 and Ubuntu 9.04)
- Intel ia64 (Itanium) Linux uniprocessor and symmetric multiprocessor systems (SUSE Linux Enterprise Server 11)
- Intel x86 Linux uniprocessor and symmetric multiprocessor systems (CentOS 5.3)
- Intel x86 Apple Mac OS X uniprocessor and symmetric multiprocessor systems (Leopard 10.5.7+, Snow Leopard 10.6, and Lion 10.7)
- Mips2 32-bit (-n32) ABI and mips4 64-bit (-n64) ABI (SGI IRIX 6.5)
- Cray XT3/4/5 CNL and Catamount
- As a front-end to the Berkeley UPC Berkeley UPC runtime on various High-Performance Computing (HPC) systems
If you would like to learn of future ports to other platforms, or would like to discuss the feasibility of implementing GUPC on a platform of interest to you, we recommend that you join theGUPC discussion list.
Download
The latest release of GUPC is available for download.
Alternatively, you can access the GUPC branch in the GCC sources.
The GNU UPC Discussion List
The GNU UPC Discussion list provides a forum for tracking the status of UPC compilers based on the GNU GCC compiler. Announcements of new compiler ports, future plans, as well as known problems will be posted to the GUPC discussion list. To subscribe to the GNU UPC list, send an email message togcc-upc-request@hermes.gwu.eduwith the single word "subscribe" (without the quotes) in the body of the message.
Contributing
We encourage everyone tocontribute changesand help test GUPC. GUPC is currently on a development branch.
Reporting Bugs
Bugs in GUPC should be reported to the GCC bug tracker. Please add "UPC" to the keywords field in the bug report.
Status
February 28, 2010
Merged with the current GCC trunk, and checked into the gupc branch.