Public Release of UPC++ v2018.3.0

Skip to first unread message

Scott Baden

Mar 28, 2018, 6:21:08 PM3/28/18
to Scott Baden, Paul Hargrove
The Pagoda project at Lawrence Berkeley National Lab is proud to announce a public release of UPC++.  This release introduces three major new features: (1) Remote Atomics, (2) Non-contiguous RMA, and (3) View-based Serialization. This release also adds new mechanisms for signalling of asynchronous events which were not part of our previous release in September 2017.  A summary of the changes appears below. As with the previous release, we include a Specification and a Programmer's Guide with many examples to get you started.

The software, specification and programmer’s guide are accessible from:

with the following respective filenames and md5 checksums:

   upcxx-2018.3.0.tar.gz       93c7f4173dae7233e8cbb8dcb92a645f

   upcxx-spec-V1.0-Draft6.pdf  90c088eabd99175ea32d5c6d7ee081ee

   upcxx-guide-2018.3.0.tar.gz 073c7ba2b1ff2258e0462f2ee2fa2575

Please use the issue tracker to report any problems or make feature requests.  Alternatively, if you have private feedback or questions not suited to a public venue, you can email:

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

New features/enhancements:

  • 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 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.

Paul Hargrove

May 10, 2018, 1:04:02 AM5/10/18
to UPC++

Due to a packaging error, we have removed the 2018.3.0 download from our site,, and uploaded a corrected version, labeled as 2018.3.2:

  MD5: 2a567677fdcb22b82f621223da61ca0f

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

Paul H. Hargrove <>
Computer Languages & Systems Software (CLaSS) Group
Computer Science Department
Lawrence Berkeley National Laboratory
Reply all
Reply to author
0 new messages