Skip to main content
QUICK REVIEW

[論文レビュー] Flexible, Scalable Mesh and Data Management using PETSc DMPlex

Michael Lange, Matthew G. Knepley|arXiv (Cornell University)|May 18, 2015
Distributed and Parallel Computing Systems参考文献 19被引用数 6
ひとこと要約

本論文では、Fluidity CFDアプリケーションにPETScのDMPlexメッシュおよびデータ管理APIを統合し、メッシュ入力、ドメイン分割、再順序付けをスケーラブルで拡張可能なライブラリ層に委譲することを提案する。このアプローチにより、メッシュの分散を改善し、複数のファイル形式およびRCM再順序付けをネイティブでサポートすることで、シミュレーションの起動時間を短縮し、96コアで最大25%の性能向上を達成した。これは、キャッシュ局所性の向上と通信オーバーヘッドの低減によるものである。

ABSTRACT

Designing a scientific software stack to meet the needs of the next-generation of mesh-based simulation demands, not only scalable and efficient mesh and data management on a wide range of platforms, but also an abstraction layer that makes it useful for a wide range of application codes. Common utility tasks, such as file I/O, mesh distribution, and work partitioning, should be delegated to external libraries in order to promote code re-use, extensibility and software interoperability. In this paper we demonstrate the use of PETSc's DMPlex data management API to perform mesh input and domain partitioning in Fluidity, a large scale CFD application. We demonstrate that raising the level of abstraction adds new functionality to the application code, such as support for additional mesh file formats and mesh re- ordering, while improving simulation startup cost through more efficient mesh distribution. Moreover, the separation of concerns accomplished through this interface shifts critical performance and interoperability issues, such as scalable I/O and file format support, to a widely used and supported open source community library, improving the sustainability, performance, and functionality of Fluidity.

研究の動機と目的

  • 大規模CFDシミュレーションの初期化段階における非効率なメッシュ入力およびドメイン分割によって引き起こされる性能ボトルネックを解消すること。
  • 共通のメッシュおよびデータ管理タスクを共有され、安定したサポートを受けられるライブラリに委譲することで、相互運用性とコード再利用性を向上させること。
  • 再順序付けや動的負荷バランスといった高度なメッシュ最適化を、ハイレベルな抽象化レイヤーを通じて可能にすること。
  • 低レベルのI/Oおよび配布ロジックをコアシミュレーションコードから分離することで、アプリケーションの複雑性を低減すること。
  • PETScエコシステムからの将来の改善を継承することで、長期的な保守性と拡張性を高めること。

提案手法

  • 非構造化メッシュ接続性を階層的有向無閉路グラフ(DAG)として表現するためのドメイントポロジー抽象化レイヤーとして、PETScのDMPlex APIを統合する。
  • Fluidityの独自のメッシュ入力および分割パイプラインを、Exodus II、CGNS、Gmsh、Fluent Case、MEDを含む複数のファイル形式をネイティブでサポートするDMPlexのものに置き換える。
  • DMPlexのスケーラブルなメッシュ分散およびデータ移行プリミティブを活用し、アセンブルされたフィールドではなく、トポロジーと座標のみを分散させることで、初期化段階の通信量を削減する。
  • 実行時におけるリバース・カスティル・マクキー(RCM)再順序付けを実施し、キャッシュ局所性を向上させ、線形システムのアセンブリにおけるソルバ時間の短縮を図る。
  • PETScのHDF5ベースのI/Oスタックを活用し、効率的で並列なファイルアクセスを実現するとともに、将来のXdmf出力形式のサポートを準備する。
  • 300万要素メッシュを用いて、Archer Cray XC30システム上で24〜96コアの範囲で性能を比較するベンチマークを実施した。

実験結果

リサーチクエスチョン

  • RQ1FluidityにDMPlexを統合することで、メッシュの分散およびI/O効率の向上により、シミュレーションの起動時間を顕著に短縮できるか?
  • RQ2DMPlexを統合することで、アプリケーションコードの変更なしに、複数のメッシュファイル形式をネイティブでサポートできるようになるか、その範囲はどの程度か?
  • RQ3DMPlexによるRCM再順序付けは、スケールが大きくなるに従ってソルバの性能と全体のシミュレーション時間にどのような影響を与えるか?
  • RQ4メッシュ管理をアプリケーションレイヤーから分離し、共有で最適化されたライブラリに依存することで、どのような性能向上が達成可能か?
  • RQ5DMPlexが提供する抽象化により、将来的に並列メッシュ入力やメッシュ適応後の動的負荷バランスといった拡張性が実現可能になるか?

主な発見

  • DMPlexベースの初期化ワークフローにより、元のプレプロセッサアプローチと比較して、96コアで最大25%の起動オーバーヘッド削減が達成された。主な要因は、より効率的なメッシュ分散にある。
  • 性能向上はスケールが大きくなると顕著に現れ、プロセス数が増加するにつれて通信量の削減が顕著になった。
  • RCM再順序付けは小スケールの実行(最大24コア)ではソルバおよび行列アセンブリの性能を向上させたが、順序付け生成の固定コストが原因で、スケールが大きくなると恩恵が薄れた。
  • 統合により、Fluidityのコアコードベースに変更を加えずに、Exodus II、CGNS、Gmsh、Fluent Case、MEDの5つの追加メッシュ形式をネイティブでサポートできるようになった。
  • 責任の分離により、FluidityはPETScのI/Oおよび分割スタックにおける将来の最適化を継承でき、保守性と相互運用性の向上が図られた。
  • ファイルI/Oのシーケンシャルなボトルネックは軽減されたが、完全には解消されず、初期読み込みが依然として制限要因のままだった。今後の作業として、完全に並列なメッシュリーダーの実装が求められる。

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

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

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

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