UPC++ 2020.10.0 Release Announcement

16 views
Skip to first unread message

Paul H. Hargrove

unread,
Oct 30, 2020, 6:26:59 PM10/30/20
to UPC++, upcxx-a...@lbl.gov

The Pagoda project at Lawrence Berkeley National Laboratory is proud to announce the release of UPC++ 2020.10.0, now available from upcxx.lbl.gov.  This release introduces numerous enhancements and usability improvements, as detailed in the ChangeLog. Highlights are listed below.


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.


We would like users of NERSC, ALCF and OLCF systems to be aware that we maintain public installs of UPC++ at all three centers, with usage instructions here. The 2020.10.0 release is now installed on Cori, Theta and Summit.


We also would like to take this opportunity to advertise our upcoming (Tue Nov 10, 2020) virtual tutorial at SC20.  Speakers notably include Professor Katherine Yelick, a highly distinguished lecturer and internationally recognized and decorated researcher. Participants will gain hands-on experience incorporating UPC++ features into several application examples. We also examine three irregular applications (COVID-19 lung simulation, metagenomic assembler and multifrontal sparse solver) and describe how they leverage UPC++ features to optimize communication performance.


-Paul H. Hargrove, on behalf of the Pagoda project at LBNL



Change Highlights:


General features/enhancements: (see specification and programmer's guide for full details)

  • Added support for global_ptr<const T> with implicit conversion from global_ptr<T> to global_ptr<const T>. Communication operations now take a global_ptr<const T> where appropriate.

  • local_team() creation during upcxx::init() in multi-node runs is now more scalable in time and memory, providing noticeable improvements at large scale.

  • team::destroy() now frees GASNet-level team resources that were previously leaked.

  • when_all(...) now additionally accepts non-future arguments and implicitly promotes them to trivially ready futures (as with to_future) before performing future concatenation. The main consequence is when_all() can now replace most uses of make_future and to_future for constructing trivially ready futures, and continue to serve as the future combinator.

  • Static checking has been strengthened in a number of places, to help provide or improve compile-time diagnostics for incorrect or otherwise problematic use cases.

  • Added many precondition sanity checks in debug mode, to help users find   bugs in their code when compiling with -codemode=debug (aka, upcxx -g).

  • Shared heap exhaustion in upcxx::new_(array) now throws upcxx::bad_shared_alloc (a type derived from std::bad_alloc) which provides additional diagnostics about the failure.


Improvements to RPC and Serialization:

  • Added support for serialization of reference types where the referent is Serializable.

  • Rpc's which return future values experience one less heap allocation and virtual dispatch in the runtime's critical path.

  • Rpc's which return future values no longer copy the underlying data prior to serialization.

  • dist_object<T>::fetch() no longer copies the remote object prior to serialization.

  • Added deserializing_iterator<T>::deserialize_into to avoid copying large objects when iterating over a view of non-TriviallySerializable elements.

  • Objects passed as lvalues to RPC will now be serialized directly from the provided   object, reducing copy overhead and enabling passing of non-copyable (but movable) types.

  • Non-copyable (but movable) types can now be returned from RPC by reference


Build system changes:

  • Improved compatibility with heap analysis tools like Valgrind (at some potential performance cost) using new configure option --enable-valgrind

  • configure --enable-X is now equivalent to --with-X, similarly for --disable/--without

  • Tests run by make check and friends now enforce a 5min time limit by default


Requirements changes:

  • The minimum required gcc environment module version for PrgEnv-gnu and   PrgEnv-intel on a Cray XC has risen from 6.4.0 to 7.1.0.

  • The minimum required Intel compiler version for PrgEnv-intel on a Cray XC has risen from 17.0.2 to 18.0.1.


Download filenames and their md5 checksums:


    upcxx-2020.10.0.tar.gz       252f26f5c2b5c7be30fa898c85e5323e

    upcxx-spec-2020.10.0.pdf     0d631d5620dbb08bea8bc0a62821c31c

    upcxx-guide-2020.10.0.pdf    13e46d8997b31d5029457cf87c0a52a0




Reply all
Reply to author
Forward
0 new messages