[cfe-dev] Clang UPC: 3.2 update

Gary Funck gary at intrepid.com
Thu Mar 21 21:04:27 PDT 2013

Recently, the Clang/LLVM version 3.2 release branch was
merged into the clang-upc and llvm-upc projects on Github.
Also some bugs relating to building Clang UPC on the Mac
and using newer versions of Cmake have been fixed.

Details follow.

- Gary Funck

Clang UPC: A UPC Compiler based upon Clang/LLVM

Date: March 21, 2013

An initial implementation of Clang UPC is available for download
(in source form) from:
Clang UPC requires this version of LLVM, which currently has
only minor (but necessary) changes to the base line LLVM:  

For details on how to build, install, and use Clang UPC,
consult the wiki at:

Unified Parallel C (UPC)

Unified Parallel C (UPC) is an extension of the C programming language designed
for high-performance computing on large-scale parallel machines, including
those with a common global address space (SMP and NUMA) and those with
distributed memory (e.g. clusters). 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

    An explicitly parallel execution model
    A shared address space
    Synchronization primitives and a memory consistency model
    Explicit communication primitives, e.g. upc_memput
    Memory management primitives

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

[source: http://en.wikipedia.org/w/index.php?title=Unified_Parallel_C]

For additional information and resources, consult:


If you have an interest in extending Clang UPC, or have any questions
not covered in this announcement, please ask them either on the
Clang Developer's email list:
or send an email to:
 Gary Funck <gary at intrepid.com>

Future Projects

The following projects are provided for discussion purposes.

- Merge Clang UPC into the main Clang/LLVM source code trunk.

- Develop a UPC-to-C translator based upon Clang/UPC.

- Extend the LLVM intermediate form to describe accesses
to distributed shared memory and synchronization constructs
typical of UPC and other distributed parallel programming
languages.  Implement optimizations and analysis tools
that take advantage of the additional information that
is present in this extended LLVM intermediate form.

                          -- end --

More information about the cfe-dev mailing list