Modern C++ for Parallelism in High Performance Computing
91.16 KB
3 页
0 评论
语言 | 格式 | 评分 |
---|---|---|
英语 | .pdf | 3 |
摘要 | ||
本文档介绍了'D2D'基准测试,该测试旨在探索高性能计算中不同并行化策略在表达优雅性和性能方面的表现。实现了多种并行化方法,包括使用OpenMP、Modern C++、Kokkos和Sycl等技术,并在多种CPU上进行了测试。初步结果显示了这些方法的性能特点,并讨论了未来可能的扩展和改进,如支持GPU和更多的编译器后端。 | ||
AI总结 | ||
《Modern C++ for Parallelism in High Performance Computing》摘要:
本文档介绍了一个名为“D2D”的基准测试,该测试旨在评估现代C++在高性能计算(HPC)中并行编程的表现,重点探讨了其优雅性和性能。以下是核心内容总结:
1. **研究背景及相关性**:
- C++正在逐渐进入传统由C和Fortran主导的高性能计算/科学计算领域。
- 现代C++的新特性(如范围算法、多维数组“mdspan”)为高性能计算提供了新的可能性。
- 科学计算算法通常具有规则性,理论上可以实现完美的并行缩放,使其成为测试并行策略的理想场景。
2. **计算结构**:
- 基准测试采用了“幂方法”算法,用于计算矩阵的最大特征值,可扩展至PageRank和其他数值分析算法。
- 算法包括数组缩放、范数计算和Stencil操作。
- Stencil操作(如二阶Laplace算子)具有以下特点:
- 输出独立,具备完美的并行性(数据并行主义)。
- 计算受带宽限制,预计并行效率在某一核数后会停止扩展。
3. **并行模型与实现**:
- OpenMP(共享内存)为性能基线,实现了三种C++编程风格:
- 基于简单循环和线性向量的C式实现。
- 使用随机访问迭代器的Range-Based实现。
- 使用mdspan实现真正的二维索引。
- Kokkos库:探索通用库层是否会对性能产生影响。
- Sycl:基于标准C++的库,需要编译器支持,主要由Intel推动。
4. **完成状态与结果**:
- 当前实现已完成并在多种CPU上测试,展示了不同并行化策略的性能表现。
- 未来计划包括在普通桌面电脑上测试(带宽限制更严重)和探索GPU支持。
- 由于安装困难,AdaptiveCPP的测试尚未完成。
5. **未来工作**:
- 测试AdaptiveCPP以支持Sycl在不同编译器上的表现。
- 探索执行策略接口的问题。
6. **支持材料**:
- 基准测试代码开源,可从GitHub(https://github.com/VictorEijkhout/diff2d_benchmark)获取。
作者:Victor Eijkhout,来自德克萨斯大学奥斯汀分校的高级计算中心,专注于数值算法和并行计算。
总结:本文通过D2D基准测试评估了现代C++在HPC中的并行性能,涵盖了OpenMP、Kokkos和Sycl等不同并行化策略,展示了C++在高性能计算中的潜力和挑战。 |
P1
P2
P3
下载文档到本地,方便使用
文档评分