论文标题
C ++中的MDSPAN:在绩效便携式功能整合到国际语言标准中的案例研究
mdspan in C++: A Case Study in the Integration of Performance Portable Features into International Language Standards
论文作者
论文摘要
多维阵列在高性能计算(HPC)中无处不在,但是它们不在C ++语言标准中是对HPC使用的长期且众所周知的限制。本文介绍了MDSPAN的设计和实现,MDSPAN是一种建议的C ++标准多维阵列视图(计划包含在C ++ 23中)。该提案在很大程度上是受Kokkos项目中完成的工作的启发---由许多HPC机构部署的C ++性能 - 可容纳的编程模型为Exascale-Class Super Computing Systems准备代码库。本文介绍了MDSPAN的最终设计经过五年的过程,以在C ++社区达成共识。特别是,我们将阐述设计如何解决性能 - 可携带编程的一些核心挑战,以及其自定义点如何允许C ++标准目前未解决的领域无缝扩展,但在当今系统的异质计算世界中至关重要。最后,我们以当前形式提供了该提案的生产质量实施。这项工作包括该实施的几个基准,旨在证明现代设计的零交叉性质。
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.