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

10/13/2020
by   D. S. Hollman, et al.
0

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.

READ FULL TEXT

page 7

page 9

research
05/26/2021

The Petascale DTN Project: High Performance Data Transfer for HPC Facilities

The movement of large-scale (tens of Terabytes and larger) data sets bet...
research
07/26/2021

Performance vs Programming Effort between Rust and C on Multicore Architectures: Case Study in N-Body

Historically, Fortran and C have been the default programming languages ...
research
10/01/2020

Supercomputing with MPI meets the Common Workflow Language standards: an experience report

Use of standards-based workflows is still somewhat unusual by high-perfo...
research
03/13/2022

First Experiences in Performance Benchmarking with the New SPEChpc 2021 Suites

Modern HPC systems are built with innovative system architectures and no...
research
09/24/2018

Programming at Exascale: Challenges and Innovations

Supercomputers become faster as hardware and software technologies conti...
research
10/10/2017

SoAx: A generic C++ Structure of Arrays for handling Particles in HPC Codes

The numerical study of physical problems often require integrating the d...
research
02/22/2018

Connecting KOSs and the LOD Cloud

This paper describes a specific project, the current situation leading t...

Please sign up or login with your details

Forgot password? Click here to reset