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

Title: UPC++ Programmer’s Guide (v1.0 2017.9)

Abstract

UPC++ is a C++11 library that provides Asynchronous Partitioned Global Address Space (APGAS) programming. It is designed for writing parallel programs that run efficiently and scale well on distributed-memory parallel computers. The APGAS model is single program, multiple-data (SPMD), with each separate thread of execution (referred to as a rank, a term borrowed from MPI) having access to local memory as it would in C++. However, APGAS also provides access to a global address space, which is allocated in shared segments that are distributed over the ranks. UPC++ provides numerous methods for accessing and using global memory. In UPC++, all operations that access remote memory are explicit, which encourages programmers to be aware of the cost of communication and data movement. Moreover, all remote-memory access operations are by default asynchronous, to enable programmers to write code that scales well even on hundreds of thousands of cores.

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); USDOE National Nuclear Security Administration (NNSA)
OSTI Identifier:
1398522
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, D., Hargrove, P., Hofmeyr, S., Ibrahim, K., Jacquelin, M., Kamil, A., and van Straalen, B. UPC++ Programmer’s Guide (v1.0 2017.9). United States: N. p., 2017. Web. doi:10.2172/1398522.
Bachan, J., Baden, S., Bonachea, D., Hargrove, P., Hofmeyr, S., Ibrahim, K., Jacquelin, M., Kamil, A., & van Straalen, B. UPC++ Programmer’s Guide (v1.0 2017.9). United States. https://doi.org/10.2172/1398522
Bachan, J., Baden, S., Bonachea, D., Hargrove, P., Hofmeyr, S., Ibrahim, K., Jacquelin, M., Kamil, A., and van Straalen, B. 2017. "UPC++ Programmer’s Guide (v1.0 2017.9)". United States. https://doi.org/10.2172/1398522. https://www.osti.gov/servlets/purl/1398522.
@article{osti_1398522,
title = {UPC++ Programmer’s Guide (v1.0 2017.9)},
author = {Bachan, J. and Baden, S. and Bonachea, D. and Hargrove, P. and Hofmeyr, S. and Ibrahim, K. and Jacquelin, M. and Kamil, A. and van Straalen, B.},
abstractNote = {UPC++ is a C++11 library that provides Asynchronous Partitioned Global Address Space (APGAS) programming. It is designed for writing parallel programs that run efficiently and scale well on distributed-memory parallel computers. The APGAS model is single program, multiple-data (SPMD), with each separate thread of execution (referred to as a rank, a term borrowed from MPI) having access to local memory as it would in C++. However, APGAS also provides access to a global address space, which is allocated in shared segments that are distributed over the ranks. UPC++ provides numerous methods for accessing and using global memory. In UPC++, all operations that access remote memory are explicit, which encourages programmers to be aware of the cost of communication and data movement. Moreover, all remote-memory access operations are by default asynchronous, to enable programmers to write code that scales well even on hundreds of thousands of cores.},
doi = {10.2172/1398522},
url = {https://www.osti.gov/biblio/1398522}, journal = {},
number = ,
volume = ,
place = {United States},
year = {2017},
month = {9}
}