skip to main content
OSTI.GOV title logo U.S. Department of Energy
Office of Scientific and Technical Information

Title: UPC++

Software ·
DOI:https://doi.org/10.11578/dc.20171025.1487· OSTI ID:1542863 · Code ID:2804

UPC++ is a Partitioned Global Address Space (PGAS) extension for C++, with three main objectives: 1) to provide an object-oriented PGAS programming model in the context of the popular C++ language; 2) to add useful parallel programming idioms unavailable in UPC, such as asynchronous remote function invocation and multidimensional arrays, to support complex scientific applications; 3) to offer an easy on-ramp to PGAS programming through interoperability with other existing parallel programming systems (e.g., MPI, OpenMP, CUDA). UPC++ includes two main features beyond UPC: 1) One of the major limitations of UPC in the context of DOE application is the relatively weak notion of multidimensional arrays, which it inherited from C. To remedy this problem in UPC++, we included a multidimensional domain and array library based on that of Titanium. Titanium's library is similar to Chapel's dense and strided domains, as both were inspired by the dense and strided regions and arrays in ZPL. 2) Another feature provided by UPC++ but not by UPC is remote function invocation, which is inspired by Phalanx, X10, Habanero-C, and C++11. The user may start an asynchronous remote function invocation with the following syntax: "async(place)(function, args...);". UPC++ provides two programming constructs for specifying dynamic dependencies among tasks: 1) event-driven execution as in Phalanx and Habanero-C; 2) finish-async as in X10. We implemented UPC++ with a "compiler-free" approach using C++ templates and runtime libraries. The UPC++ front-end consists of a set of C++ header files that enables the C++ compiler to "translate" UPC++ features in a user program to runtime library calls. In particular, we use templates and operator overloading to customize the behavior of UPC++ types. This software package has been replaced with UPCC++ V 1.0

Short Name / Acronym:
UPC++
Project Type:
Open Source, Publicly Available Repository
Site Accession Number:
2014-095
Software Type:
Scientific
License(s):
Other
Research Organization:
Lawrence Berkeley National Laboratory (LBNL), Berkeley, CA (United States)
Sponsoring Organization:
USDOE

Primary Award/Contract Number:
Other Award/Contract Number:
AC02-05CH11231
Code ID:
2804
OSTI ID:
1542863
Country of Origin:
United States

Similar Records

UPC++: A PGAS extension for C++
Conference · Wed Jan 01 00:00:00 EST 2014 · OSTI ID:1542863

A Hartree-Fock Application Using UPC++ and the New DArray Library
Journal Article · Thu Jul 21 00:00:00 EDT 2016 · Proceedings - IEEE International Parallel and Distributed Processing Symposium (IPDPS) · OSTI ID:1542863

Graph Algorithms in PGAS: Chapel and UPC++
Conference · Wed Sep 25 00:00:00 EDT 2019 · OSTI ID:1542863

Related Subjects