mdspan in C++: A Case Study in the Integration of Performance Portable Features into International Language Standards

D. S. Hollman,Bryce Adelstein Lelbach,H. Carter Edwards,Mark Hoemmen,Daniel Sunderland,Christian R. Trott
DOI: https://doi.org/10.1109/P3HPC49587.2019.00011
2020-10-13
Abstract:Multi-dimensional arrays are ubiquitous in high-performance computing (HPC), but their absence from the C++ language standard is a long-standing and well-known limitation of their use for HPC. This paper describes the design and implementation of mdspan, a proposed C++ standard multidimensional array view (planned for inclusion in C++23). The proposal is largely inspired by work done in the Kokkos project---a C++ performance-portable programming model deployed by numerous HPC institutions to prepare their code base for exascale-class supercomputing systems. This paper describes the final design of mdspan after a five-year process to achieve consensus in the C++ community. In particular, we will lay out how the design addresses some of the core challenges of performance-portable programming, and how its customization points allow a seamless extension into areas not currently addressed by the C++ Standard but which are of critical importance in the heterogeneous computing world of today's systems. Finally, we have provided a production-quality implementation of the proposal in its current form. This work includes several benchmarks of this implementation aimed at demonstrating the zero-overhead nature of the modern design.
Distributed, Parallel, and Cluster Computing,Programming Languages
What problem does this paper attempt to address?