UPC++: An Asynchronous RMA/RPC Library for Distributed C++ Applications
UPC++ is a C++ library providing classes and functions that support Partitioned Global Address Space (PGAS) programming. The UPC++ API offers low-overhead one-sided RMA communication and Remote Procedure Calls (RPC), along with futures and promises. These constructs enable the programmer to express dependencies between asynchronous computations and data movement. UPC++ supports the implementation of simple, regular data structures as well as more elaborate distributed data structures where communication is fine-grained, irregular, or both. The library’s support for asynchrony enables the application to aggressively overlap and schedule communication and computation to reduce wait times.
UPC++ is highly portable and runs on platforms from laptops to supercomputers, with native implementations for HPC interconnects. As a C++ library, it interoperates smoothly with existing numerical libraries and on-node programming models (e.g., OpenMP, CUDA).
In this webinar, hosted by DOE's Exascale Computing Project and the ALCF, we will introduce basic concepts and advanced optimization techniques of UPC++. We will discuss the UPC++ memory and execution models and walk through basic algorithm implementations. We will also look at irregular applications and show how they can take advantage of UPC++ features to optimize their performance.
About the Speaker
Amir Kamil is a Lecturer in Electrical Engineering and Computer Science at the University of Michigan and a Computer Systems Engineer at Lawrence Berkeley National Laboratory. He earned his Ph.D in Computer Science from UC Berkeley. Prior to joining the University of Michigan, Dr. Kamil was a postdoctoral scholar and lecturer at UC Berkeley and a postdoctoral researcher at Lawrence Berkeley National Laboratory, and he remains affiliated with the Computer Languages and Systems Software group there. His research interests include compiler analysis, optimization, and programming models for high-performance computing, diversity and inclusion in computing, and software tools for computer-science education.