Question

Where can I find examples of code, written in "Unified Parallel C"?

I also interested in normative documents about this language (standards, reference manuals, online-accessible books and courses). What extensions were added to C to get UPC?

Is this dialect alive or dead?

Was it helpful?

Solution

UPC is still alive as a research project at UC Berkeley and is probably in use by high-performance computing facilities and national labs associated with the research group. You can get the latest version, released November 2009, here. Documentation, sample code, etc. can be found here. The language spec is here; there are many extensions on top of C99 syntax to support threads and inter-thread communication as first-class entities (perhaps not in the strictest sense of "first class", but certainly more so than in C, where you call out to opaque libraries to do synchronization and communication).

UPC is still in use some places; I am not an expert, but from what I can tell using UPC consists of a GCC-based compiler, a runtime, and a messaging layer GASNet that runs on top of your networking stack. These seem to be relatively well-supported on the types of machines for which you might want something like UPC. I wouldn't call it a huge developer community, but if you administer a large parallel machine, it's worth giving it a shot. If you just want something to work on your laptop, desktop, or server box, there is a wide variety of other parallel programming models with commercial support, tools, etc.

OTHER TIPS

Other than the berkley UPC runtime based UPC implementations:

Berkley UPC-to-C translator http://upc.lbl.gov/download/source.shtml and gcc-upc http://www.gccupc.org)

there are also proprietary compilers by HP h30097.www3.hp.com/upc/ and Cray.

I believe that Cray and HP UPC versions both have progress guarentees, where as Berkley derived ones don't (This means that if you write spinlock style code, you have to explicitly call bupc_relax to prod teh runtime into precessing a remote write that would get you out of the loop)

UPC is still very much alive in the HPC community.

The new 1.3 version of the language/library specification was released in Nov 2013 and is available here:

https://upc-lang.org/upc-documentation

The major UPC compilers have already (or soon will) release 1.3 compliant versions.

The UPC specification is written as a "diff" against C99, so it's easy to see what's been added. At a high level it's linguistically a few new keywords and some extensions to the type system to accommodate the PGAS memory model and language-level SPMD threading. There is also a large (and growing) set of libraries for supporting common HPC needs in UPC applications.

There's lots more information on UPC at:

http://upc.lbl.gov/

where you can download a free, open source compiler that runs on vast variety of systems. The runtime source download includes a library of UPC example programs, benchmarks and test suites.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top