The software, specification and programmer’s guide are accessible from:
with the following respective filenames and md5 checksums:
upcxx-2019.3.0.tar.gz 74677feb23b466578ed83824bd3d3cdb
upcxx-spec-V1.0-Draft10.pdf c8fb6c8c55cb818ad8cec125a9e8affd
upcxx-guide-2019.3.0.tar.gz 1053977a9f483676f1c7ae8abbbc3216
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: pag...@lbl.gov.
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 10 Specification, dated March 15, 2019.
New features/enhancements: (see specification and programmer's guide for full details)
Prototype Memory Kinds support for CUDA-based NVIDIA GPUs, see INSTALL.md.
Note the CUDA support in this UPC++ release is a proof-of-concept reference implementation which has not been tuned for performance.
In particular, the current implementation of upcxx::copy does not utilize hardware offload and is expected to underperform relative to solutions
using RDMA, GPUDirect and similar technologies. Performance will improve in an upcoming release.
Support for interoperability with Berkeley UPC, see upc-hybrid.md.
There is now an offline installer package for UPC++, for systems lacking connectivity
Barrier synchronization performance has been improved
Installer now defaults to more build parallelism, improving efficiency (see UPCXX_MAKE)
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
Notable bug fixes:
issue #100: Fix shared heap setting propagation on loosely-coupled clusters
issue #118: Enforce GEX version interlock at compile time
issue #177: Completion broken for non-fetching binary AMOs
issue #183: bench/{put_flood,nebr_exchange} were failing to compile
issue #185: Fix argument order for dist_object constructor to match spec
issue #187: Improve Python detection logic for the install script
issue #190: Teach upcxx-run to honor UPCXX_PYTHON
issue #202: Make global_ptr::operator bool conversion explicit
issue #205: incorrect metadata handling in ~persona_scope()
Breaking changes:
envvar UPCXX_SEGMENT_MB has been renamed to UPCXX_SHARED_HEAP_SIZE.
For backwards compat, the former is still accepted when the latter is unset.
The minimum-supported version of GNU g++ is now 6.4.0
This also applies to the stdlibc++ used by Clang or Intel compilers
The minimum-supported version of llvm/clang for Linux is now 4.0