この記事は oneAPI Blog に公開されている「Lawrence Berkeley National Laboratory drives heterogenous computing with oneAPI’s Math Kernel Library(oneMKL)」の日本語参考訳です。
oneAPI マス・カーネル・ライブラリー (oneMKL) 乱数生成器ドメインが NVIDIA GPU をサポート
世界中で多くのハイパフォーマンス・コンピューティング・センターが、研究者向けにさまざまなプラットフォームから成るヘテロジニアス・システム (ノードごとに中央処理装置とグラフィックス処理装置で構成される) へのアクセスを提供しています。しかし、ほとんどの場合、ドメイン科学者のリソースには制限があるため、各種プラットフォームを対象とする複数の実装に対応することは困難です。そのため、プログラマーがパフォーマンスの移植性を実現できるように多くの移植性レイヤーが開発されています (Kokkos*、Raja、Alpaka、SYCL* などがあります)。しかしながら、移植性のあるアプリケーション・プログラミング・インターフェイスには、プラットフォーム固有の API に備わる機能やツールが欠けていることがあります。
oneMKL オープンソース・インターフェイス・プロジェクト (英語) は、CPU とコンピューティング・アクセラレーター・アーキテクチャー向け数学アルゴリズム用の DPC++ ベースの API を提供する oneAPI 業界イニシアチブの一部です。インターフェイスは、C++ 開発者に馴染みのある、効率良い最新の線形代数と疑似乱数生成器を使用して、アプリケーションをスピードアップするクロスアーキテクチャー向けのソリューションを提供します。特に、oneMKL 乱数生成器ドメインは、良く利用される疑似乱数エンジンとさまざまな連続および離散分布を備えています。乱数生成器は、数学、科学、工学、金融、およびその他の分野で適用される確率的アルゴリズム (最も重要なものはモンテカルロ・シミュレーション) で遍在的に利用されています。
SYCL* の相互運用性とオープン・ソフトウェアのおかげで、cuRAND のサポートを oneMKL オープンソース・インターフェイス・プロジェクトに追加するのは容易な作業でした。そして、既存のデバイス向けに最適化されたカーネルを使用して、NVIDIA GPU 上の SYCL* アプリケーションで乱数を生成できるようになりました。既存の最適化を利用することで、SYCL* で記述されたクロスプラットフォーム・アプリケーションはネイティブに近いパフォーマンスを実現できます。つまり、SYCL* ベースのアプリケーションをソースを変更することなくすべての主要ベンダーのプラットフォームで実行でき、ネイティブ・アプリケーションと同等のパフォーマンスを達成できます。これは非常に有望な結果であると言えます。
結論として、oneAPI 仕様技術諮問委員会 (TAB) は、ローレンス・バークレー国立研究所 (https://www.lbl.gov/ (英語)) の物理学部門による oneMKL 乱数生成器の CUDA* サポートの発表に興奮を覚えています。これは、oneMKL インターフェイス・プロジェクトへの新しい重要なコミュニティーによる貢献です。今後にご期待ください。
著者紹介
Dr. Vincent R. Pascuzzi は、ローレンス・バークレー国立研究所の物理学部門のポスドク研究員であり、エネルギー省の高エネルギー物理学センターのメンバーです。主な研究開発のテーマは、ヘテロジニアス・コンピューティングとパフォーマンスの移植性です。「多様なハードウェア・アーキテクチャーとプラットフォーム」の問題に対処するため、「すべての API」として SYCL* の調査を行ってきました。Codeplay 社が CUDA* デバイスサポートを提供したことで、NVIDIA GPU で SYCL* ベースのコードをコンパイルして実行することが可能になりました。ただし、アプリケーションとベンチマークのためベンダー固有のライブラリーを利用する必要があります。