Unified Parallel C 

for Unified Parallel C

unification of three parallel Cs, each with their own model - AC (CCS), Split C (Berkeley) and Parallel C (LLNL)

Related languages
AC => UPC   Incorporated some features of
PCP => UPC   Incorporated some features of
Split-C => UPC   Incorporated some features of
UPC => UPC++   Evolution of

  • Authors:William W. Carlson, Jesse M. Draper, David E. Culler, Kathy Yelick, Eugene Brooks, Karen Warren "Introduction to UPC and Language Specification" CCS-TR-99-157 view details Abstract: UPC is a parallel extension of the C programming language intended for multiprocessors with a common global address space. A descendant of Split-C, AC, and PCP, UPC has two primary objectives: 1) to provide efficient access to the underlying machine, and 2) to establish a common syntax and semantics for explicitly parallel programming in C. The quest for high performance means in particular that UPC tries to minimize the overhead involved in communication, among cooperating threads. When the underlying hardware enables a processor to read and write remote memory without intervention by the remote processor (as in the SGI/Cray T3D and T3E), UPC provides the programmer with a direct and easy mapping from the language to low-level machine instructions. At the same time, UPC?s parallel features can be mapped onto existing message-passing software or onto physically shared memory to make its programs portable from one parallel architecture to another. As a consequence, vendors who wish to implement an explicitly parallel C could use the syntax and semantics of UPC as a basis for a standard. External link: Online copy
  • Gordon, Howard "Compilers on High Performance Computers" March 12, 1999 view details Extract: UPC

    UPC and UPC++

    • UPC is a parallel extension of C
    • Intended for multiprocessors with a
      common global address space.
    • Split-C - David Culler - UC Berkeley
    • PCP - Eugene Brooks - LLNL
    • AC - Bill Carlson - IDA/CCS
    • Establish a common syntax and
      semantics for explicit parallelism


    • Efficient access to the underlying
    • Direct and obvious mapping from the
      language to low-level machine instructions

  • Tarek A. El-Ghazawi, Sabastien Chauvin "Getting Started with UPC" June 2001 view details Abstract: This document gives a quick introduction to UPC through a number of variations of a simple educational example, matrix-vector multiplication, that can expose the readers to key UPC features quickly. These examples are not meant to perform well neither in terms of sequential nor parallel performance. The interested reader may want to consult the UPC web site and the list of references given at the end of this guide.

  • Gary Funck "GCC UPC Compiler for the SGI Origin 2000" 28-Oct-2002 (Revision 1.7) Intrepid Technology, Inc. view details Abstract: This report describes:

    ·        the general approach used to implement UPC on the SGI Origin platform, running the Irix 6.5 (Unix based) operating system

    ·        the overall operation and use of the UPC compiler

    ·        the structure of the source files used to build the UPC compiler

    ·        known bugs, testing results, and future enhancements

    During the investigation phase of this project, several approaches were evaluated as candidates for an efficient and cost-effective method of implementing UPC on the SGI platform. As the implementation progressed, we found it necessary to revisit earlier design decisions, and based upon additional information, we modified elements of earlier designs.  This document describes the UPC compiler and runtime as it is implemented (in version 1.7, dated Aug-9-2001), and supercedes earlier design documents.

    The SGI UPC compiler is an early member of a family of GNU GCC-based UPC compilers. We recommend that you visit the GCC UPC site (http://www.intrepid.com/upc/), if you are interested in following the GCC UPC status and development plans.

    External link: Online copy
  • [Compaq] Unified Parallel C (UPC) Programmer's Guide view details Abstract:

    This manual contains information about the UPC parallel extension to the C
    language, and about developing UPC programs on Tru64 UNIX systems. It
    is intended as a supplement to the Compaq Tru64 UNIX Programmer's
    . Some of the information in this manual has been taken from the
    following sources:

    • The UPC reference page (upc(1))
    • The Introduction to UPC and Language Specification CCS-TR-99-157,
      by William W. Carlson, Jesse M. Draper, et al, May 13, 1999
    • The Quadricstm RMS User Manual

    The information in this manual pertains to the Compaq UPC
    implementation for Tru64 UNIX systems, and is not intended to describe
    either the theoretical UPC language design or the implementation of UPC by any
    other company.

    External link: Online copy
  • Sébastien Chauvin, Proshanta Saha, François Cantonnet, Smita Annareddy, Tarek El-Ghazawi "UPC Manual" Oct 2003 view details Abstract: This manual is intended for all levels of users, from novices who wish to find out features of UPC that may fit their needs, all the way to experts who need a handy reference for the UPC language. It is important to note that this is not a replacement for the UPC Specifications document, upon which the UPC language is built. This manual will introduce the basic concepts most commonly asked about by UPC users. For more intricate details of the language, it is best to refer to the UPC Specifications document. This manual is written under the assumption that the reader understands and is familiar with the C language, and has at least some basic knowledge of parallel programming models such as Message Passing or Shared Memory.