The software, specification and programmer’s guide are accessible from:
with the following respective filenames and md5 checksums:
We welcome all feedback, especially with respect to the new features.
Changes since the 2017.9.0 release:
This release supports most of the functionality specified in the UPC++ 1.0 Draft 6 Specification
Non-Contiguous RMA interface is now fully implemented.
Remote Atomics have been revamped, expanded and implemented. The current implementation leverages hardware support in shared memory and NIC offload support in Cray Aries.
View-Based Serialization has been implemented.
Implementation of local memory translation (achieved with global_ptr::local() or global_ptr(T*)). This encompasses a limited implementation of teams to support upcxx::world and upcxx::local_team so clients may query their local neighborhood of ranks.
Generalized completion. This allows the application to be notified about the status of asynchronous UPC++ operations in a handful of ways. For each event, the user is free to choose among: futures, promises, callbacks, delivery of remote rpc, and in some cases even blocking until the event has occurred.
Internal use of lock-free datastructures for lpc queues is now enabled by default. See INSTALL.md for instructions on how to build UPC++ with the older lock-based datastructure.
Improvements to internal assertion checking and diagnostics.
Improvements to upcxx-run and run-tests.
The following features from the specification are not yet implemented:
Teams: team::split, team_id, collectives over teams, passing team& arguments to RPCs, constructing dist_object over teams.
Vector broadcast broadcast(T *buf, size_t count, ...)
Asynchronous barrier, barrier_async
User-defined serialization interface
Notable bug fixes:
Issue 119: Build system is now more robust to GASNet-EX download failures.
Issue 125: Fix upcxx-run exit code handling.
Due to a packaging error, we have removed the 2018.3.0 download from our site, http://upcxx.lbl.gov, and uploaded a corrected version, labeled as 2018.3.2:
We encourage all users who may have the 2018.3.0 release to download this corrected release.
The 2018.3.0 releases of the Specification and Programmer’s Guide are unchanged.
-Paul H. Hargrove on behalf of the Pagoda project at Lawrence Berkeley National Lab