SC19 Proceedings

The International Conference for High Performance Computing, Networking, Storage, and Analysis

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


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

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 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.






Back to 2nd International Workshop on Performance, Portability, and Productivity in HPC (P3HPC) Archive Listing


Back to Full Workshop Archive Listing