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

Title: UPC++ Specification v1.0, Draft 4

Abstract

UPC++ is a C++11 library providing classes and functions that support Asynchronous Partitioned Global Address Space (APGAS) programming. We are revising the library under the auspices of the DOE’s Exascale Computing Project, to meet the needs of applications requiring PGAS support. UPC++ is intended for implementing elaborate distributed data structures where communication is irregular or fine-grained. The UPC++ interfaces for moving non-contiguous data and handling memories with different optimal access methods are composable and similar to those used in conventional C++. The UPC++ programmer can expect communication to run at close to hardware speeds. The key facilities in UPC++ are global pointers, that enable the programmer to express ownership information for improving locality, one-sided communication, both put/get and RPC, futures and continuations. Futures capture data readiness state, which is useful in making scheduling decisions, and continuations provide for completion handling via callbacks. Together, these enable the programmer to chain together a DAG of operations to execute asynchronously as high-latency dependencies become satisfied.

Authors:
; ; ; ; ; ; ; ; ;
Publication Date:
Research Org.:
Lawrence Berkeley National Lab. (LBNL), Berkeley, CA (United States)
Sponsoring Org.:
USDOE Office of Science (SC), Advanced Scientific Computing Research (ASCR) (SC-21); USDOE National Nuclear Security Administration (NNSA)
OSTI Identifier:
1398521
Report Number(s):
LBNL-2001066
ark:/13030/qt2nm9n3jm
DOE Contract Number:
AC02-05CH11231
Resource Type:
Technical Report
Resource Relation:
Related Information: Exascale Computing Project (17-SC-20-SC)
Country of Publication:
United States
Language:
English
Subject:
97 MATHEMATICS AND COMPUTING

Citation Formats

Bachan, J., Baden, S., Bonachea, Dan, Hargrove, P., Hofmeyr, S., Ibrahim, K., Jacquelin, M., Kamil, A., Lelbach, B., and van Straalen, B.. UPC++ Specification v1.0, Draft 4. United States: N. p., 2017. Web. doi:10.2172/1398521.
Bachan, J., Baden, S., Bonachea, Dan, Hargrove, P., Hofmeyr, S., Ibrahim, K., Jacquelin, M., Kamil, A., Lelbach, B., & van Straalen, B.. UPC++ Specification v1.0, Draft 4. United States. doi:10.2172/1398521.
Bachan, J., Baden, S., Bonachea, Dan, Hargrove, P., Hofmeyr, S., Ibrahim, K., Jacquelin, M., Kamil, A., Lelbach, B., and van Straalen, B.. Wed . "UPC++ Specification v1.0, Draft 4". United States. doi:10.2172/1398521. https://www.osti.gov/servlets/purl/1398521.
@article{osti_1398521,
title = {UPC++ Specification v1.0, Draft 4},
author = {Bachan, J. and Baden, S. and Bonachea, Dan and Hargrove, P. and Hofmeyr, S. and Ibrahim, K. and Jacquelin, M. and Kamil, A. and Lelbach, B. and van Straalen, B.},
abstractNote = {UPC++ is a C++11 library providing classes and functions that support Asynchronous Partitioned Global Address Space (APGAS) programming. We are revising the library under the auspices of the DOE’s Exascale Computing Project, to meet the needs of applications requiring PGAS support. UPC++ is intended for implementing elaborate distributed data structures where communication is irregular or fine-grained. The UPC++ interfaces for moving non-contiguous data and handling memories with different optimal access methods are composable and similar to those used in conventional C++. The UPC++ programmer can expect communication to run at close to hardware speeds. The key facilities in UPC++ are global pointers, that enable the programmer to express ownership information for improving locality, one-sided communication, both put/get and RPC, futures and continuations. Futures capture data readiness state, which is useful in making scheduling decisions, and continuations provide for completion handling via callbacks. Together, these enable the programmer to chain together a DAG of operations to execute asynchronously as high-latency dependencies become satisfied.},
doi = {10.2172/1398521},
journal = {},
number = ,
volume = ,
place = {United States},
year = {Wed Sep 27 00:00:00 EDT 2017},
month = {Wed Sep 27 00:00:00 EDT 2017}
}

Technical Report:

Save / Share: