[論文レビュー] Cross-Platform Performance Portability Using Highly Parametrized SYCL Kernels
この論文は、ARM HiKey 960 や Intel i7-6700K といった多様なアーキテクチャにおいて、手動で最適化されたベンダーライブラリ(例:cuBLAS、ARM Compute Library、MKL-DNN)と競合する性能を実現する、高パラメータ化された SYCL カーネルの有効性を示している。C++ テンプレートと SYCL のポータビリティを活用することで、ハードウェアに最適化されたカーネルを生成し、効率を損なわずにクロスプラットフォームでのパフォーマンスのポータビリティを実現している。
Over recent years heterogeneous systems have become more prevalent across HPC systems, with over 100 supercomputers in the TOP500 incorporating GPUs or other accelerators. These hardware platforms have different performance characteristics and optimization requirements. In order to make the most of multiple accelerators a developer has to provide implementations of their algorithms tuned for each device. Hardware vendors provide libraries targeting their devices specifically, which provide good performance but frequently have different API designs, hampering portability. The SYCL programming model allows users to write heterogeneous programs using completely standard C++, and so developers have access to the power of C++ templates when developing compute kernels. In this paper we show that by writing highly parameterized kernels for matrix multiplies and convolutions we achieve performance competitive with vendor implementations across different architectures. Furthermore, tuning for new devices amounts to choosing the combinations of kernel parameters that perform best on the hardware.
研究の動機と目的
- 異なった最適化要件を有する異種アクセラレータ間でのパフォーマンスポータビリティの課題に対処すること。
- API やハードウェアターゲティングの差異によりポータビリティを損なうベンダースペシフィックライブラリへの依存を減らすこと。
- 高パラメータ化された SYCL カーネルが、cuBLAS や ARM Compute Library、MKL-DNN といった手動最適化ライブラリと同等またはそれ以上の性能を達成できるかどうかを評価すること。
- アーキテクチャごとにカーネルパラメータをチューニングすることで、多様なハードウェアプラットフォームで効率的かつポータブルなパフォーマンスを実現できることを示すこと。
提案手法
- 著者らは、C++ テンプレートを用いてカーネル設定を表現することで、行列乗算および畳み込み演算のための高パラメータ化された SYCL カーネルを実装した。
- これらのカーネルは、各ターゲットデバイスのアーキテクチャに適合した特定のテンプレートパラメータ(例:ブロックサイズ、タイル寸法、データ型)でインスタンス化された。
- パフォーマンス評価は、ARM HiKey 960 および Intel i7-6700K プラットフォームにおける VGG-16 および ResNet-50 の畳み込み層という、標準的なディープラーニングベンチマークを用いて実施した。
- SYCLベースの実装(SYCL-DNN)は、ARM Compute Library(CPU/NEON および GPU/OpenCL)、MKL-DNN、cuBLAS といったベンダーオプティマイズドライブラリと比較された。
- バッチサイズを変化させることで、通常のワークロード下での実世界のパフォーマンスを評価した。
- このアプローチは、SYCL がコンパイル時テンプレート特化を用いて最適化されたポータブルなカーネルを生成できる能力に依存しており、標準的な C++ 構文を維持している。
実験結果
リサーチクエスチョン
- RQ1高パラメータ化された SYCL カーネルは、異なるハードウェアプラットフォームで、手動最適化されたベンダースペシフィックライブラリと同等のパフォーマンスを達成できるか?
- RQ2テンプレートパラメータによるカーネルチューニングは、アーキテクチャ固有の手動最適化の必要性をどの程度代替できるか?
- RQ3ARM プラットフォームでは SYCL-DNN のパフォーマンスは ARM Compute Library と比べてどの程度か?また、Intel プラットフォームでは SYCL-DNN と MKL-DNN と比べてどの程度か?
- RQ41つのポータブルなカーネルフレームワークが、CPU、GPU、アクセラレータを問わず高いパフォーマンスを提供できるか、ポータビリティを損なわずに行えるか?
主な発見
- ARM HiKey 960 では、SYCL-DNN は VGG レイヤーで 90 ~ 150 ギガフロップスの性能を達成し、NEON CPU 実装を上回り、ほとんどの場合 OpenCL GPU 版と同等またはそれを上回った。
- Intel i7-6700K では、GPU 上の SYCL-DNN は VGG-16 畳み込みで常に MKL-DNN の CPU 実装を上回り、最大で 420 ギガフロップスを達成した。
- ResNet-50 のベンチマークでは、MKL-DNN の CPU 実装が SYCL-DNN の CPU および GPU 実装を上回り、ピークパフォーマンスは 366 ギガフロップス 対 244 ギガフロップスであった。
- ARM 上の VGG-16 ベンチマークでは、ARM Compute Library の OpenCL カーネルが 3×3 畳み込みで SYCL-DNN を上回ったが、全体としては SYCL-DNN は競争力を持っていた。
- 結果から、適切にテンプレートパラメータ化された SYCL カーネルは、ARM および Intel プラットフォームの両方でベンダーオプティマイズドライブラリの 10~20%以内のパフォーマンスを達成できることを確認した。
- 本研究は、デバイスごとにカーネルパラメータをチューニングすることで、性能のポータビリティを効果的に実現でき、性能特性が著しく異なるアーキテクチャ間でも効率を損なわずに行えることを示した。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。