この記事は、The Parallel Universe Magazine 51 号に掲載されている「DPEcho: General Relativity with SYCL for the 2020s and Beyond」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
コードは複雑であるものの、定量的かつ定性的に大きな問題クラスのシミュレーションを可能にするヘテロジニアス・コンピューティングのおかげで、数値科学が見直されています。SYCL* (英語) プログラミング言語は、拡張性、移植性、オープン性を備えたヘテロジニアスへの標準アプローチを提供し、ワークシェアリングやスケジューリング、シミュレーション領域を実行空間に直接マッピングする直感的な C++ API により、アクセラレーターの能力を引き出します。後者は、空間と時間の性質が運動方程式と緊密に結合し、計算量とメモリー消費量が多い数値相対論において、特に便利です。
一般相対論的磁気流体力学 (GR-MHD) の ECHO コード1 には、最近の HPC 向けに最適化されたバージョン (ECHO-3DHPC2) がすでにあります。これは Fortran で記述されており、 MPI + OpenMP* でハイブリッド並列処理を実装しています。この記事では、このコードに手を加える代わりに SYCL* で書き換えた、GR-MHD の MPI + SYCL* バージョンである DPEcho を紹介します。DPEcho は、不安定性、乱流、波動の伝播、恒星風と磁気圏、およびブラックホール周辺の天体物理学的プロセスのモデル化に使用され、ミンコフスキーやコード化された一般相対性理論 (GR) メトリックで従来の MHD と相対論的 MHD をサポートしています。ここでは、DPEcho の公開バージョンを紹介し、SYCL* で複雑な現実のアプリケーションのアルゴリズムを表現する方法を説明し、このアプローチによって達成されるパフォーマンスを定量化します。
DPEcho を使用する
DPEcho の公開バージョン (英語) は、Apache* 2.0 ライセンスの下に GitHub* で公開されています。このコードは CMake をサポートしており、ccmake のインタラクティブなターミナル・ユーザー・インターフェイスを意識して設計されています (図 1)。DPEcho は、このインターフェイスを介していくつかの SYCL* コンパイラーをサポートしています。ccmake 画面にコードの内容 (SYCL* キューセレクターと MPI による GPU サポート、単精度、I/O トグル) が表示されます。次に、物理と数値のオプションがあります。ソルバーは従来の MHD と GR-MHD の切り替えが可能で、関心のある問題に応じて、サポートされている GR メトリックの 1 つを選ぶことができます (公開バージョンではデカルトまたはミンコフスキーのみサポート)。数値オプションには、オリジナルの ECHO コードと同様に、数値導出 (FD)、可変グリッド再構成 (REC)、ルンゲ・クッタ・ソルバー・ステップ (NRK: 1-3) の異なるオーダーが含まれています。
DPEcho の開発、解析、インテルの CPU および GPU での実行には、インテル® oneAPI ベース・ツールキットとインテル® oneAPI HPC ツールキットを使用しました。ユーザーは、MPI ランクを CPU コアに固定するのと同様に、MPI ランクと GPU リソース (タイルなど) のマッピングを指定できます。3 これは実行時に環境変数を通じて行われます。パフォーマンス解析には、インテル® VTune™ プロファイラーを使用しました。最後に、インテル® MPI ライブラリーは、統合共有メモリー (USM) に配置されたメモリーセグメントなどを直接操作することができます。
DPEcho の公開バージョンに存在する物理および数値手法により、図 2 に示す平面アルヴェーン波のような相対論的磁化波のモデル化が可能です。異なる問題 (GR-MHD 爆風など) をモデリングするインターフェイスも用意されていますが、ユーザー定義の実装が必要です。DPEcho の開発バージョンには、回転する天体物理学のブラックホールの周囲のモデリングを目的としたさまざまな GR メトリックや、非平面時空間を扱う一般的なインフラストラクチャーが含まれる予定です。これらの機能は一般公開の予定はありません。開発協力のリクエストには、個別に対応します。この点を除いて 2 つのバージョンは類似しており、互換性のあるインターフェイスを持ちます。
1 “ECHO: An Eulerian conservative high order scheme for general relativistic magnetohydrodynamics and magnetodynamics,” Apr. 2007, doi: 10.1051/0004-6361:20077093.
2 “ECHO-3DHPC: Advance the performance of astrophysics simulations with code modernization,” Oct. 2018, doi: 10.48550/arxiv.1810.04597.
3 3 “Intel MPI Library Developer Reference – GPU Support.” https://www.intel.com/content/www/us/en/develop/documentation/mpi-developer-reference-linux/top/environment-variable-reference/gpu-support.html?wapkw=GPU%20pinning