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 は、スケーラブルでポータブルな並列プログラミングのためのコンパイラフリーな PGAS(パーティショナライズド・グローバル・アドレス・スペース)モデルを実装する C++ テンプレートライブラリである。MPI-3 RMA を介したワンサイド通信を用いて、効率的で表現力に富み、相互運用性のある分散データ構造および並列アルゴリズムを可能にし、9,800 コアまで強力な性能と線形スケーラビリティを達成している。同時に、チームと 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++ ベースの代替手段を提供すること。
  • 既存の C++ アプリケーションへの PGAS プログラミングのシームレスな統合を可能にするため、データ構造の段階的移行を許容すること。
  • 複雑な階層的マシントポロジを柔軟なチーム抽象化を通じて表現できるようにし、複数レベルのローカリティを表現すること。
  • C++ テンプレート抽象化と効率的なワンサイド通信、および STL との相互運用性を組み合わせることで、高いパフォーマンスと生産性を実現すること。
  • PGAS プログラミングが、特に不規則的かつデータ集約的なワークロードにおいて、従来の二方向 MPI モデルをはるかに超えて効率的にスケーリングできることを示すこと。

提案手法

  • DASH は、MPI-3 RMA や GASPI や GASNet などのワンサイド通信基盤を抽象化する軽量な PGAS ランタイム DART の上に構築された C++ テンプレートライブラリとして実装されている。
  • グローバルビューのデータ構造、たとえば分散配列(例:dash::Array)やグローバルポインタ/リファレンス(例:GlobPtr、GlobRef)を提供し、リモートメモリ位置への直接アクセスを可能にしている。
  • 階層的なチームモデルを用いてローカリティを表現し、マシントポロジの複数レベルにわたる通信および同期を細かく制御できる。
  • 柔軟な多次元データ配置方式をサポートし、グローバルおよびローカルイテレータを介して分散コンテナ上で STL アルゴリズムを直接使用できる。
  • 各ユニットが自らのローカルデータに直接アクセス・操作できる「オーナー・コンピューズ」モデルを可能にし、通信オーバーヘッドを低減している。
  • 既存の MPI ベースのアプリケーションと相互運用可能であり、コードベース全体を再書き直すことなく、個々のデータ構造の段階的移行が可能である。

実験結果

リサーチクエスチョン

  • RQ1C++ におけるコンパイラフリーな PGAS 手法は、従来の二方向 MPI プログラミングと同等またはそれ以上のパフォーマンスとスケーラビリティを達成できるか?
  • RQ2DASH は、データ分析やグラフワークロードで一般的な複雑で不規則な通信パターンをどれほど効果的にサポートできるか?
  • RQ3DASH のチーム抽象化は、現代の HPC システムにおける階層的ローカリティをどれほど効率的に表現できるか?
  • RQ4C++ テンプレートを用いた生産性と表現力が、低ランタイムオーバーヘッドを維持しながら十分に提供できるか?
  • RQ5MPI の二方向モデルから、DASH のワンサイド PGAS モデルへの実際の科学的プロキシアプリケーションの移植において、DASH はどの程度のパフォーマンスを示すか?

主な発見

  • DASH は、ベンチマークアプリケーションおよび科学的プロキシアプリケーションにおいて、9,800 コアまで強力なスケーラビリティを示した。
  • DASH を使用して移植された科学的プロキシアプリケーションは、元の MPI 二方向実装を上回るパフォーマンスを示し、ワンサイド PGAS モデルのパフォーマンス上の利点を裏付けた。
  • DASH は、個々のデータ構造の段階的移行を許容することで、既存の C++ や MPI コードベースへのシームレスな統合を可能にしている。
  • グローバルおよびローカルイテレータを介した STL アルゴリズムのサポートにより、開発者の生産性とコードの表現力が顕著に向上した。
  • DASH のチーム抽象化は、階層的ローカリティを効果的にモデル化し、マルチレベルのメモリおよびコンピューティングトポロジに最適化された通信パターンを可能にした。
  • DASH のコンパイラフリー設計により、言語レベルの PGAS コンパイラの長期的メンテナンス負担を回避しながら、高いパフォーマンスとポータビリティを維持した。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。