  Using large-scale multicore systems to get the maximum performance and energy
efficiency with manageable programmability is a major challenge. The
partitioned global address space (PGAS) programming model enhances
programmability by providing a global address space over large-scale computing
systems. However, so far the performance and energy efficiency of the PGAS
model on multicore-based parallel architectures have not been investigated
thoroughly. In this paper we use a set of selected kernels from the well-known
NAS Parallel Benchmarks to evaluate the performance and energy efficiency of
the UPC programming language, which is a widely used implementation of the PGAS
model. In addition, the MPI and OpenMP versions of the same parallel kernels
are used for comparison with their UPC counterparts. The investigated hardware
platforms are based on multicore CPUs, both within a single 16-core node and
across multiple nodes involving up to 1024 physical cores. On the multi-node
platform we used the hardware measurement solution called High definition
Energy Efficiency Monitoring tool in order to measure energy. On the
single-node system we used the hybrid measurement solution to make an effort
into understanding the observed performance differences, we use the Intel
Performance Counter Monitor to quantify in detail the communication time, cache
hit/miss ratio and memory usage. Our experiments show that UPC is competitive
with OpenMP and MPI on single and multiple nodes, with respect to both the
performance and energy efficiency.
