Repository navigation
Release 2020.3.0
·
2132 commits
to develop
since this release
2020.03.12: Release 2020.3.0
Infrastructure and requirements changes:
- The
installandrun-testsscripts have been replaced with aconfigure
script (with GNU autoconf-compatible options) and correspondingmake all,
make checkandmake installsteps.
See INSTALL.md for step-by-step instructions. - The minimum required GNU Make has risen from 3.79 to 3.80 (released in 2002).
- There is no longer a requirement for Python2.7. While
upcxx-runstill
requires a Python interpreter, both Python3 and Python2 (>= 2.7.5) are
acceptable.
New features/enhancements: (see specification and programmer's guide for full details)
- Added support for non-trivial serialization of user-defined types. See the
new chapter of the programmer's guide
for an introduction, and the specification for all
the details. - Implement
upcxx_memberof(_general)(), enabling RMA access to fields of remote objects upcxx::promisenow behaves as a CopyAssignable handle to a reference-counted hidden object,
meaning users no longer have to worry about promise lifetime issues.atomic_domain<T>is now implemented for all 32- and 64-bit integer types,
in addition to the fixed-width integer types,(u)int{32,64}_t.atomic_domain<T>implementation has been streamlined to reduce overhead,
most notably for targets with affinity tolocal_teamusing CPU-based atomics.- Improve GASNet polling heuristic to reduce head-of-line blocking
- Installed CMake package file is now more robust, and supports versioning.
global_ptr<T>now enforces many additional correctness checks in debug mode- Significantly improve compile latency associated with
upcxxcompiler wrapper script - Improve handling of
upcxx-run -vverbose options
Notable issues resolved
(see the UPC++ issue tracker for details):
- issue #83: strengthen
global_ptrcorrectness assertions - issue #142: Clarify semantic restrictions on
UPCXX_THREADMODE=seq - issue #173: upcxx-run for executables in CWD and error messages
- issue #247: unused-local-typedef warning for some compilers
- issue #266: Redundant completion handler type breaks compile
- issue #267: Same completion value can't be received multiple times
- issue #271: Use of
-pthreadinexample/prog-guide/Makefilebreaks PGI - issue #277: Ensure
completion_cx::as_promise(p)works even when p is destroyed prior to fulfillment - issue #280: Off-by-one error in promise constructor leads to breakage with any explicit argument
- issue #282: Improve installed CMake package files
- issue #287: Bogus install warnings on Cray XC regarding CC/CXX
- issue #289: link failure for PGI with -std=c++17
- issue #294: redundant-move warning in completion.hpp from g++-9.2
- issue #304: Bad behavior for misspelled CC or CXX
- issue #323: Incorrect behavior for
global_ptr<T>(nullptr).is_local()in multi-node jobs - issue #333: Multiply defined symbol
detail::device_allocator_core<cuda_device>::min_alignmentw/ std=c++2a - spec issue 148: Missing
constqualifiers on team and other API objects - spec issue 155: value argument type to value collectives is changed to a simple by-value T
This library release mostly conforms to the
UPC++ v1.0 Specification, Revision 2020.3.0.
The following features from that specification are not yet implemented:
- view buffer lifetime extension for
remote_cx::as_rpc(issue #262) boost_serializationadapter class is not yet implemented (issue #330)future<T&&>::{result,wait}_referencecurrently return the wrong type.
E.g.future<int&&>::result_reference()returnsint const&instead ofint&&(issue #313)
Breaking changes:
atomic_domainhas been specified as non-DefaultConstructible since UPC++ spec draft 8 (2018.9)
This release removes the default constructor implementation fromatomic_domain(issue #316).- The trait template classes
upcxx::is_definitely_trivially_serializableand
upcxx::is_definitely_serializablehave been renamed such that the "definitely"
word has been dropped, e.g.:upcxx::is_trivially_serializable. future::{result,wait}_moved, deprecated since 2019.9.0, have been removed.
Newfuture::{result,wait}_referencecalls provide related functionality.