この記事は、インテル® デベロッパー・ゾーンに公開されている「oneAPI and SYCL* Accelerate Matrix Solver with a Common Codebase for Multivendor GPUs」の日本語参考訳です。原文は更新される可能性があります。原文と翻訳文の内容が異なる場合は原文を優先してください。
無秩序系現象の研究を加速
SC23 (英語) において、Fengrui Zhang (インテル コーポレーション)、Shiquan Su (インテル コーポレーション)、Xiao Zhu (ワシントン大学)、Xiao Liang (ピッツバーグ・スーパーコンピューター・センター)、および Yang Wang (ピッツバーグ・スーパーコンピューター・センター) は、MuST (Multiple Scattering Theory、多重散乱理論) フレームワーク (英語) の SYCL* 実装を発表しました。MuST フレームワークは、ランダムで局所的に自己一貫性のある、しかし大きく無秩序な系における量子現象の研究とシミュレーションに対して、高精度かつ効率的な数値的なアプローチを提供します。その計算集約型の計算の中心にあるのは、Fortran で実装された行列ソルバーです。
CPU に特化した元の Fortran コードの中で最も時間がかかる行列反転ステップは、インテル® oneAPI ツールと SYCL* プログラミング・フレームワークを使用して大幅に高速化されています。単一の最適化された SYCL* コードベースに移行することで、CPU だけでなく、インテル、NVIDIA、AMD などのさまざまなベンダーの GPU の計算能力を活用できるようになります。
この記事では、インテル® oneAPI ツールと SYCL* を利用して、クロスベンダー GPU の行列ソルバーを高速化し、さまざまな並列スーパーコンピューターにデプロイできるコードの移植性とスケーラビリティーを実現した方法の概要を説明します。詳細に入る前に、MuST プロジェクトと実験で使用されたインテル® oneAPI ツールについて簡単に説明します。
1. インテル® oneAPI マス・カーネル・ライブラリー (インテル® oneMKL)
インテル® oneMKL は、インテル® アーキテクチャー上で数学ルーチンを高速化し、最適化する高性能ライブラリーです。線形代数、ベクトル数学、高速フーリエ変換 (FFT) など、広範な数学関数群を提供し、OpenMP* と SYCL* フレームワークを使用して、計算を GPU にオフロードして並列実行できるようにします。
oneMKL インターフェイス・プロジェクトは、oneMKL 仕様 (英語) のオープンソース実装であり、幅広い分野で数値計算を実行する SYCL* 機能を提供します。oneAPI GitHub* リポジトリーから、関連するサンプルコード (英語) を入手できます。
2. インテル® Fortran コンパイラーとインテル® oneAPI DPC++/C++ コンパイラー
インテル® Fortran コンパイラー (ifx) は、インテル® アーキテクチャー (CPU と GPU の両方) 上で Fortran コードの効率的なコンパイル、最新のプログラミング言語標準への準拠、および優れた実行性能を実現する、LLVM (英語) テクノロジーをベースとした oneAPI 対応のコンパイラーです。インテル® oneAPI DPC++/C++ コンパイラーは、世界で初めて SYCL* 2020 に完全準拠した、C/C++ および SYCL* コード向けの LLVM ベースの業界標準のクロスアーキテクチャー・コンパイラーです。
3. Codeplay の NVIDIA* GPU および AMD* GPU 向け oneAPI プラグイン
Codeplay は、ヘテロジニアス・コンピューティングの利点を NVIDIA* GPU と AMD* GPU にもたらす oneAPI プラグインを提供しています。このプラグインを利用することで、インテル® oneAPI ベース・ツールキットで作成したアプリケーションを NVIDIA* GPU/AMD* GPU 上で実行できるようになります。これらのプラグインは完全にオープンソースであり、独自の oneAPI 実装向けにビルドすることができます。
このプラグインは、NVIDIA* GPU/AMD* GPU 上の SYCL* プログラミング・フレームワークの可能性を解き放ち、マルチアーキテクチャー、クロスベンダーのプログラミングを可能にします。
MuST フレームワークについて
MuST (英語) は、無秩序な材料における量子現象の研究向けに設計されたオープンソースの計算フレームワークです。これは、Korringa-Kohn-Rostoker (KKR) 法またはグリーン関数法として知られる多重散乱理論に基づく電子構造計算向けのソフトウェア・スイートです。このフレームワークは、ランダム合金および量子材料における無秩序効果の第一原理研究 (つまり、電子構造の研究) を可能にします。
米国国立科学財団 (NSF) が資金提供している MuST プロジェクトは、ハイパフォーマンス・コンピューティング (HPC)、凝縮物質物理学、応用数学、応用材料科学、ソフトウェア・エンジニアリング・コミュニティーの専門研究者による共同作業です。
課題: 低速の行列反転
MuST フレームワークのオリジナルの Fortran コードは CPU 固有であり、ブロック LU アルゴリズムを使用して行列反転を実行します。行列反転ステップは計算コストが非常に高く、アプリケーションの合計実行時間の約 80%~90% を占めます。そのため、行列反転プロセスを高速化し、プラットフォームに依存しないようにして、さまざまなアーキテクチャーでより高速に結果を得られるようにすることが課題です。
提案されたソリューション: SYCL* と oneAPI を使用して行列反転を高速化する
図 3 は、MuST フレームワークの使用における行列反転ステージのワークフローを示しています。これとは対照的に、元の低速な実装では、CPU でのみ機能するブロック LU アルゴリズムが使用されていました。NVIDIA* cuSOLVER ライブラリー関数呼び出しを使用して高速化すると、コードは NVIDIA* GPU でしか動作しません。
SC23 (英語) で提案されたソリューションでは、Fortran コードからインテル® oneMKL SYCL* API への言語間呼び出しを行うことで、ベンダーに依存せず、マルチベンダー GPU で行列反転コードを高速化します。図 2 に示すように、これらは Fortran/C 相互運用性のための ICO_C_BINDING 組込みモジュール (英語) と、インテル® oneMKL SYCL* 関数を内部的に呼び出す zgetr_i() 関数を使用して実装されます。
SYCL* で実装されたコードは、インテル、NVIDIA、AMD など、さまざまなベンダーの高速 GPU の潜在能力を活用できます。
提案されたソリューションは、Fortran で実装された機能をインテル® Fortran コンパイラーでコンパイルし、クロスベンダー GPU 上のインテル® oneMKL SYCL* 関数呼び出しをインテル® oneAPI DPC++/C++ コンパイラーでコンパイルします。
GPU 上で計算を実行したところ、提案された行列反転の実装はシンプルでありながら、元の高度なブロック LU 実装よりも高速でした。提案されたソリューションを採用することで、プロジェクトの物理学研究者は、計算の複雑なアルゴリズムの考案ではなく、科学的な詳細に集中できます。
次のステップ
インテル® oneMKL、インテル® oneAPI DPC++/C++ コンパイラー、Codeplay の NVIDIA* GPU および AMG* GPU 向け oneAPI プラグインを使用して、マルチベンダーのヘテロジニアス・アーキテクチャー全体で高いパフォーマンスを実現できる、最適化された共通の SYCL* コードベースを開発しましょう。インテルの oneAPI ソフトウェア・ポートフォリオにある AI、HPC、レンダリング・ツールもぜひチェックしてみてください。
ソフトウェアの入手
インテル® oneMKL、インテル® Fortran コンパイラー、およびインテル® oneAPI DPC++/C++ コンパイラーのスタンドアロン・バージョンをダウンロードできます。
インテル® oneMKL とインテル® oneAPI DPC++/C++ コンパイラーは、インテル® oneAPI ベース・ツールキットにも含まれています。
インテル® HPC ツールキットの一部として、インテル® oneAPI DPC++/C++ コンパイラーとインテル® Fortran コンパイラーをインストールすることもできます。
関連資料
- oneAPI プログラミング・モデル (英語)
- インテル® アーキテクチャーで最もよく使用されている数学ライブラリーで数学の計算を高速化 (英語)
- ビデオ: インテル® oneMKL の概要 (英語)
- インテル® oneMKL ドキュメント (英語)
- インテル® Fortran コンパイラー・ドキュメント (英語)
- インテル® oneAPI DPC++/C++ コンパイラー・ドキュメント (英語)
- oneAPI サンプルコード (英語)
- SYCL* の基本 (英語)
- インテルのサンプルを使用して SYCL* を開始する (英語)
- インテルのエコシステム開発ハブ (英語)
日本語での優先サポートのご案内
エクセルソフトは、インテル® ソフトウェア開発ツールの正規販売代理店として、25 年以上にわたって国内の開発者向けに日本語で技術サポートや最新情報を提供してきました。インテルとの長年の強固なパートナーシップを通して、国内に存在する多くの企業、研究機関、学術機関でのツールの導入やプログラムの最適化に携わってきた経験を活かし、国内の開発者や企業によるクラウドの導入を促進するだけでなく、インテル開発ツールを活用してクラウド環境でも高速でオープンな開発を実現するためのお手伝いをします。