论文标题

C ++中的MDSPAN:在绩效便携式功能整合到国际语言标准中的案例研究

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

论文作者

Hollman, D. S., Lelbach, Bryce Adelstein, Edwards, H. Carter, Hoemmen, Mark, Sunderland, Daniel, Trott, Christian R.

论文摘要

多维阵列在高性能计算(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.

扫码加入交流群

加入微信交流群

微信交流群二维码

扫码加入学术交流群,获取更多资源