複数のプラットフォームの組み合わせにわたるパフォーマンスの詳細を提供するベンチマーク・スイート
この記事では、さまざまな分野にわたるワークロードのセットを提供する、新しいオープンソースのベンチマーク・スイートである Velocity Bench (英語) を紹介します。Velocity Bench は、さまざまな GPU プラットフォームと並列プログラミング言語の組み合わせのパフォーマンスを公正に比較するソリューションを提供することを目的としています。
プロジェクトを継続的に改善するため、GitHub* で皆さんの積極的な参加をお待ちしています。
現在の課題
データ並列アプリケーションにはさまざまな計算シナリオが存在し、以下を使用しターゲットとしています。
- さまざまなヘテロジニアス・プラットフォーム: CPU、GPU、FPGA、ASIC、その他の特殊なアクセラレーターを活用しています。
- これらのプラットフォームをサポートする複数のプログラミング言語: オープン・スタンダードに基づくものもあれば、独自のベンダー固有の言語拡張やソリューションもあります。
- さまざまなプログラミング・インフラストラクチャー: ライブラリー、最適化ツール、アナライザー、デバッガーなど。
- 多くの計算ドメイン: ML/DL、データ・アナリティクス、ビデオ/画像処理、ハイパフォーマンス・コンピューティング (HPC)、ヘルスケア、科学、エンタープライズ、その他の業界など。
計算ドメインごとに、一般的なプラットフォームとプログラミング・モデルの組み合わせは異なります。
このため、開発者がソフトウェア・ワークロードに対するデバイスのパフォーマンスの評価と特徴付けを行い、アプリケーションの開発やデプロイに最適なプラットフォームや言語を判断することは困難です。
ほとんどのベンダーは、異なる名前を使用して、異なるパフォーマンス情報を報告する独自のツールセットを持っており、多くの場合、データはさまざまな方法で収集および計算されます。さらに悪いことに、名前は似ていても解釈が異なるメトリックが報告されることがあります。
さまざまなプラットフォームでのワークロードのベンチマーク
オープンソース・コミュニティー、学術界、ベンダー固有のリポジトリーでは、多数のベンチマークが提供されています。通常、これらのベンチマークは、1 つの特定のプラットフォームとインフラストラクチャーの組み合わせのパフォーマンスを評価します。このため、特定のユースケースを同一条件で比較するのは困難です。
コードベースに適したリファレンス・ベンチマークを探すと、環境ごとにさまざまなバージョンが見つかるかもしれません。これらのバージョンは、異なるアルゴリズム、最適化レベル、データセット、タイマーや反復などの測定メカニズムを使用している可能性が高いでしょう。
複数の GPU とアクセラレーターに適用できるベンチマーク・ワークロードのセットを特定することは、Velocity Bench GitHub* プロジェクトの目的でもあり、以下を実現する公正な比較を可能にするスイートを目指して取り組んでいます。
- 計算ドメイン、環境、ホスト、およびターゲット計算アーキテクチャーにわたる客観的な GPU オフロード・パフォーマンス・データを提供する。
- HPC、ML/DL、データ・アナリティクスなど、複数のドメインをカバーする代表的なアプリケーションまたはワークロードを備えている。
- 複数の並列プログラミング・モデル (SYCL*、CUDA*、HIP* など) を対象としている。
これを実現するには、スイートは、同様のプログラム構造、アルゴリズム、データセット、タイミングメカニズム、および最適化レベルを使用して、ほとんどの環境で実行できなければなりません。
GPU パフォーマンス評価を簡素化する Velocity Bench
新たにリリースされたオープンソースの Velocity Bench (英語) は、さまざまなプラットフォーム構成でベンチマークの移植性と適用性の問題の解決に役立つ、最適化されたワークロードのベンチマーク・スイートです。このスイートには 15 のワークロードがあり、それぞれには SYCL*、HIP、および CUDA* バージョンが用意されており、さまざまなプログラミング・モデルを使用して インテル、AMD、および NVIDIA の GPU で実行できます。さらに、SYCL* のオープン・バックエンドを使用すると、今後ほかのタイプのアクセラレーターをサポートするようにワークロードを拡張できます。したがって、ネイティブ・プラットフォーム・プログラミング言語とマルチアーキテクチャー・プログラミング・モデル (AMD* GPU 上の SYCL* と HIP、NVIDIA* GPU 上の SYCL* と CUDA* など) を使用して、プラットフォームのパフォーマンスを調査することができます。
個々のベンチマーク・ワークロードのすべてのバージョンが同程度に最適化されていることを確認することが、進行中の Velocity Bench 開発の重要な課題です。これには、同等のアルゴリズム、ライブラリー、入力データ型の使用が含まれます。もちろん、さらなる変更や最適化の機会は常に存在します。
Velocity Bench のワークロードには、時間を測定するものもあれば、スループットやその他のメトリックを測定するものもあります。計算時間と実行時間の測定には、一貫した方法論 (開始から終了までの時間) が使用されます。外部 I/O とデータ検証の時間は、使用可能なハードウェア・デバイスとデバイスドライバーによって異なる可能性があるため、パフォーマンス・データの収集から除外されています。
Velocity Bench で利用可能なベンチマーク・ワークロードは、さまざまなユースケースをカバーし、ハードウェアのさまざまな機能を実行します。
Velocity Bench に含まれるワークロード
- リバース・タイム・マイグレーション (RTM): ドメイン: HPC。2D 地震波伝播ワークロードです。RTM は、記録された地震波形を使用して地表 (石油、ガスなど) の反射率をマッピングする地震画像化手法です。
- ハッシュテーブル: ドメイン: 計算、HPC。このワークロードは、線形プローブを利用した新しく効率良いロックフリー・アルゴリズムによるハッシュテーブル検索の実装を提供します。アトミック操作を使用して、複数の GPU スレッド上のハッシュテーブルにキーと値のペアを挿入します。
- QuickSilver: ドメイン:HPC。QuickSilver は、単純化された動的なモンテカルロ粒子輸送問題を解くことで、Mercury ワークロードの主要要素を表します。多群断面積を使用する問題に対して、Mercury のメモリー・アクセス・パターン、通信パターン、分岐や発散を再現しようとします。
- easyWave: ドメイン:HPC。津波の発生や波の伝播を研究するための津波波シミュレーター・ツールです。
- LC0: ドメイン: ディープラーニング、ニューラル・ネットワーク。Leela Chess Zero (LC0) は、強化学習ベースのチェスエンジンです。2022年12月の時点で、LC0 は自身を相手に 15 億以上のゲームをプレイしており、毎日約 100 万ゲームをプレイしています。このワークロードはトランスフォーマーを含むように変更されています。
- DL-CIFAR: ドメイン: ディープラーニング、ニューラル・ネットワーク。CIFAR-10 データセットは、10 クラスの 60,000 枚の 32×32 カラー画像 (鳥、猫、飛行機など) で構成されており、クラスあたり 6,000 枚の画像があります。トレーニング画像は 50,000 枚、テスト画像は 10,000 枚あります。このワークロードは入力画像を受け取り、ニューラル・ネットワークを使用して分類します。CIFAR は最も人気のあるデータベースの 1 つです。
- DL-MNIST: ドメイン: ディープラーニング、ニューラル・ネットワーク。この実装は、最も古く、最も一般的な手書き数字画像データベースの 1 つである MNIST に基づいて数字認識を提供します。ワークロードは、ニューラル・ネットワークを使用して数字を識別します。
- SAM: ドメイン: HPC。このワークロードは、有限差分時間領域モデリングを使用して、2D 地下地盤モデルの複数の音源位置の音響波伝播を実行します。
- CudaSift: ドメイン: ビジョン、計算。SIFT (Scale Invariant Feature Transform) アルゴリズムの実装は、オープンソース・コミュニティーで人気のあるワークロードです。画像の局所的な特徴を検出、記述、照合するアルゴリズムを実装します。
- TSNE: ドメイン: ビッグデータ、クラウド。t-SNE (t 分布型確率的近傍埋め込み法) は、主にデータ探索とデータ次元削減による高次元データの視覚化に使用される教師なしの非線形手法です。
- BitCracker: ドメイン: セキュリティー、暗号化。BitLocker* で暗号化されたメモリーユニットのパスワード解析アプリケーションです。辞書攻撃により、BitCracker は暗号化されたストレージデバイスを復号化するユーザーパスワードまたは回復パスワードを見つけようとします。
- ETHMiner: ドメイン: 暗号化。ビットコイン・マイニングのワークロードです。ETHMiner は Ethash GPU マイニングワーカーで、イーサリアムのビットコインを含む、Ethash Proof of Workに依存するすべてのコインをマイニングします。
- SVM: ドメイン: 古典的マシンラーニング。サポート・ベクトル・マシンは、最も人気のある古典的なマシンラーニング手法の 1 つです。SVM は、分類や回帰分析向けにデータを分析する学習アルゴリズムを備えた教師あり学習モデルです。
- Sobel フィルター: ドメイン: 画像処理、計算。Sobel フィルターは、RGB からグレースケール・イメージへの変換 (2D から 3D イメージへの変換) 技術として広く使用されており、ガウスフィルターを適用してエッジのアーティファクトを低減します。
- HP LINPACK: ドメイン: 計算、システム。これは、結果が引用されている各社によってチューニングされた最もパフォーマンスの高い LINPACK ではありませんが、主にライブラリーを使用してデバイスの実行速度を計算します。GEMM 呼び出しを使用して、密連立一次方程式を解きます。
Velocity Bench スイートはワークロードのコレクションであり、インテルが開発し最適化したものもあれば、オープンソース・コミュニティーからのものもあります。後者については、インテルでほかの 2 つの言語を使用して同等のコードバージョンを作成/移植し、最適化しました。例えば、CUDA* ソースコードの場合、インテルで SYCL* と AMD のバージョンを作成しました。詳しくは、Velocity Bench リポジトリーにあるワークロードの説明とソースコードへのリンクを参照してください。
マルチプラットフォーム・アプリケーションのパフォーマンスに対する取り組み
Velocity Bench は GitHub* (英語) で公開されています。標準の GitHub* プロセスとコメントを使用して、コミュニティー・メンバーからのさらなる最適化やその他の変更を歓迎します。Velocity Bench の目的は、さらなる最適化と変更によりリポジトリーを継続的に更新し、新しいワークロードを組み込み、不要になったワークロードを非推奨にすることです。
Velocity Bench (英語) をダウンロードして、ターゲット・プラットフォームの設定でワークロードを試してみてください。
コミュニティーに貢献する
さまざまな構成に関する皆さんの経験についてお聞かせください。
- さまざまな GPU でオフロード計算を実行した結果はいかがでしたか?
- Velocity Bench に足りないワークロードはありますか?
フィードバック、リポジトリーへの貢献、最適化のアイデアもお待ちしています。
GitHub* でお会いしましょう。
インテル® oneAPI ツールキット
有償サポート製品はこちら
法務上の注意書き
性能は、使用状況、構成、その他の要因によって異なります。詳細については、http://www.intel.com/PerformanceIndex/ (英語) を参照してください。結果は異なることがあります。
性能の測定結果はシステム構成の日付時点のテストに基づいています。また、現在公開中のすべてのセキュリティー・アップデートが適用されているとは限りません。絶対的なセキュリティーを提供できる製品またはコンポーネントはありません。
実際の費用と結果は異なる場合があります。
インテルのテクノロジーを使用するには、対応したハードウェア、ソフトウェア、またはサービスの有効化が必要となる場合があります。
インテルは、サードパーティーのデータについて管理や監査を行っていません。ほかの情報も参考にして、正確かどうかを評価してください。
© Intel Corporation. Intel、インテル、Intel ロゴ、その他のインテルの名称やロゴは、Intel Corporation またはその子会社の商標です。
* その他の社名、製品名などは、一般に各社の表示、商標または登録商標です。