  A newcomer in the Partitioned Global Address Space (PGAS) 'world' has arrived
in its version 1.0: Unified Parallel C++ (UPC++). UPC++ targets distributed
data structures where communication is irregular or fine-grained. The key
abstractions are global pointers, asynchronous programming via RPC, futures and
promises. UPC++ API for moving non-contiguous data and handling memories with
different optimal access methods resemble those used in modern C++. In this
study we provide two kernels implemented in UPC++: a sparse-matrix vector
multiplication (SpMV) as part of a Partial-Differential Equation solver, and an
implementation of the Heat Equation on a 2D-domain. Code listings of these two
kernels are available in the article in order to show the differences in
programming style between UPC and UPC++. We provide a performance comparison
between UPC and UPC++ using single-node, multi-node hardware and many-core
hardware (Intel Xeon Phi Knight's Landing).
