Public Release of UPC++ v2018.9.0

Skip to first unread message

Scott Baden

Sep 27, 2018, 8:33:50 AM9/27/18

The Pagoda project at Lawrence Berkeley National Lab is proud to announce a public release of UPC++.  This release includes two major new features: Team-Aware APIs, and Non-Blocking Collectives. A summary of the changes appears below.  As with the previous release, we include a formal 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.9.0.tar.gz       55ef759e00082fd5ab657a7390bb144f

   upcxx-spec-V1.0-Draft8.pdf  0d8440969d6a56611d8cd4af68521246

   upcxx-guide-2018.9.0.tar.gz ec2c02b64e5cc176d604a32fb430d0e8

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 previous release:

This release supports most of the functionality specified in the UPC++ 1.0 Draft 8 Specification

New features/enhancements:

  • Subset teams and team-aware APIs are added and implemented

  • Non-Blocking Collective operations, with team support: barrier, broadcast, reduce

  • New atomic operations: mul, min, max, bit_{and,or,xor}

  • future::{wait,result}* return types are now "smarter", allowing more concise syntax

  • New upcxx compiler wrapper makes it easier to build UPC++ programs

  • upcxx-run: improved functionality and handling of -shared-heap arguments

  • New supported platforms:

    • GNU g++ compiler on macOS (e.g., as installed by Homebrew or Fink)

    • PrgEnv-intel version 17.0.2 or later on Cray XC x86_64 systems

    • Intel C++ version 17.0.2 or later on x86_64/Linux

    • GNU g++ compiler on ppc64le/Linux

  • rput_{strided,(ir)regular} now provide asynchronous source completion

  • Performance improvements to futures, promises and LPCs

  • UPC++ library now contains ident strings that can be used to query version info from a compiled executable, using the UNIX ident tool.

The following features from the specification are not yet implemented:

  • Non-Blocking collectives currently support only the default future-based completion

  • atomic_domain<float> and atomic_domain<double> are not yet implemented

  • team_id::when_here() is unimplemented

  • User-defined serialization interface

Breaking Changes:

  • global_ptr<T>(T*) "up-cast" constructor has been replaced with to_global_ptr<T>(T*)

  • atomic_domain now requires a call to new collective destroy() before destructor

  • allreduce has been renamed to reduce_all

Notable bug fixes:

  • issue #49: stability and portability issues caused by C++ thread_local

  • issue #141: missing promise move assignment operator

Reply all
Reply to author
0 new messages