Easy Acceleration with Distributed Arrays
Jeremy Kepner, Chansup Byun, LaToya Anderson, William Arcand, David Bestor, William Bergeron, Alex Bonn, Daniel Burrill, Vijay Gadepally, Ryan Haney, Michael Houle, Matthew Hubbell, Hayden Jananthan, Michael Jones, Piotr Luszczek, Lauren Milechin, Guillermo Morales, Julie Mullen, Andrew Prout, Albert Reuther, Antonio Rosa, Charles Yee, Peter Michaleas
TL;DR
The paper addresses the challenge of delivering scalable performance in high-level languages on CPUs and GPUs across vertical, horizontal, and temporal dimensions. It adopts distributed arrays (PGAS) and the STREAM memory-bandwidth benchmark to evaluate memory throughput across diverse hardware, using identical software stacks on the MIT SuperCloud to enable cross-era comparisons. Key findings include linear horizontal scaling across nodes, substantial memory-bandwidth gains over decades (e.g., a 10x CPU-core, 100x CPU-node, and 5x GPU-node improvement), and sustained bandwidth exceeding $>1\,\mathrm{PB/s}$ on hundreds of nodes. The work demonstrates that distributed arrays provide a productive abstraction for scalable HPC in high-level languages and highlights the practical impact of memory-bandwidth improvements for large-scale scientific computing.”
Abstract
High level programming languages and GPU accelerators are powerful enablers for a wide range of applications. Achieving scalable vertical (within a compute node), horizontal (across compute nodes), and temporal (over different generations of hardware) performance while retaining productivity requires effective abstractions. Distributed arrays are one such abstraction that enables high level programming to achieve highly scalable performance. Distributed arrays achieve this performance by deriving parallelism from data locality, which naturally leads to high memory bandwidth efficiency. This paper explores distributed array performance using the STREAM memory bandwidth benchmark on a variety of hardware. Scalable performance is demonstrated within and across CPU cores, CPU nodes, and GPU nodes. Horizontal scaling across multiple nodes was linear. The hardware used spans decades and allows a direct comparison of hardware improvements for memory bandwidth over this time range; showing a 10x increase in CPU core bandwidth over 20 years, 100x increase in CPU node bandwidth over 20 years, and 5x increase in GPU node bandwidth over 5 years. Running on hundreds of MIT SuperCloud nodes simultaneously achieved a sustained bandwidth $>$1 PB/s.
