Skip to main content
QUICK REVIEW

[论文解读] DASH: A C++ PGAS Library for Distributed Data Structures and Parallel Algorithms

Karl Fürlinger, Tobias Fuchs|arXiv (Cornell University)|Oct 5, 2016
Parallel Computing and Optimization Techniques参考文献 25被引用 10
一句话总结

DASH 是一个 C++ 模板库,实现了无需编译器的 PGAS(分区全局地址空间)模型,用于可扩展、可移植的并行编程。它通过 MPI-3 RMA 实现单边通信,支持高效、表达性强且可互操作的分布式数据结构与并行算法,在高达 9,800 个核心的规模上实现了出色的性能和线性可扩展性,同时通过 Team 和 STL 兼容抽象支持分层局部性。

ABSTRACT

We present DASH, a C++ template library that offers distributed data structures and parallel algorithms and implements a compiler-free PGAS (partitioned global address space) approach. DASH offers many productivity and performance features such as global-view data structures, efficient support for the owner-computes model, flexible multidimensional data distribution schemes and inter-operability with STL (standard template library) algorithms. DASH also features a flexible representation of the parallel target machine and allows the exploitation of several hierarchically organized levels of locality through a concept of Teams. We evaluate DASH on a number of benchmark applications and we port a scientific proxy application using the MPI two-sided model to DASH. We find that DASH offers excellent productivity and performance and demonstrate scalability up to 9800 cores.

研究动机与目标

  • 为解决 HPC 领域中 PGAS 模型采用率有限的问题,提供一种无需编译器的 C++ 基础替代方案,避免厂商锁定和长期编译器维护负担。
  • 通过允许逐步迁移数据结构,实现 PGAS 编程与现有 C++ 应用的无缝集成。
  • 通过灵活的 Team 抽象支持复杂、分层的机器拓扑结构,以表达多级局部性。
  • 通过结合 C++ 模板抽象、高效的单边通信以及与 STL 的互操作性,实现高性能与高开发效率。
  • 证明 PGAS 编程可在传统双边 MPI 模型之外实现高效扩展,尤其适用于不规则和计算密集型工作负载。

提出的方法

  • DASH 实现为一个基于 DART(一种轻量级 PGAS 运行时)的 C++ 模板库,DART 抽象了底层单边通信机制(如 MPI-3 RMA、GASPI 或 GASNet)。
  • 它提供全局视图的数据结构,如分布式数组(例如 dash::Array)和全局指针/引用(例如 GlobPtr、GlobRef),用于直接访问远程内存位置。
  • 该库使用分层 Team 模型表达局部性,支持对机器拓扑多级结构中的通信与同步进行细粒度控制。
  • 它支持灵活的多维数据分布方案,并可通过全局和本地迭代器直接在分布式容器上使用 STL 算法。
  • 通过允许每个计算单元直接访问并操作其本地数据,DASH 支持所有者计算模型,从而减少通信开销。
  • 该实现与现有基于 MPI 的应用程序互操作,支持在不重写整个代码库的前提下逐步迁移数据结构。

实验结果

研究问题

  • RQ1在 C++ 中采用无需编译器的 PGAS 方法,是否能够实现与传统双边 MPI 编程相当或更优的性能和可扩展性?
  • RQ2DASH 在支持数据科学和图计算工作负载中常见的复杂、不规则通信模式方面效果如何?
  • RQ3DASH 中的 Team 抽象在多级内存与计算拓扑中,多大程度上能有效表达分层局部性?
  • RQ4DASH 是否能在保持低运行时开销的同时,通过 C++ 模板提供足够的开发效率与表达能力?
  • RQ5将一个真实的科学代理应用从 MPI 的双边模型迁移到单边 PGAS 模型时,DASH 的性能表现如何?

主要发现

  • DASH 在基准应用和科学代理应用中均表现出强大的可扩展性,性能可扩展至 9,800 个核心。
  • 使用 DASH 迁移的科学代理应用性能优于其原始的 MPI 双边实现,表明单边 PGAS 模型具有性能优势。
  • DASH 通过允许逐步迁移单个数据结构,实现了与现有 C++ 和 MPI 代码库的无缝集成。
  • 通过全局和本地迭代器支持 STL 算法,DASH 显著提升了开发效率和代码表达能力。
  • DASH 中的 Team 抽象有效建模了分层局部性,支持在多级内存与计算拓扑中实现优化的通信模式。
  • DASH 的无编译器设计避免了语言级 PGAS 编译器的长期维护负担,同时保持了高性能与可移植性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。