[論文レビュー] A survey of sparse matrix-vector multiplication performance on large matrices
この論文は、Intel MKL、Trilinos、CUSPARSE、CUSP を用いて、CPU および GPU の両方で大規模で産業用途のスパース行列に対する行列-ベクトル積(SpMV)のパフォーマンスを評価している。GPUベースのSpMVフレームワークであるCUSPARSEは、カーネル実行のみの場合は最大10.8倍の高速化を達成するが、データ転送のオーバーヘッドによりエンドツーエンドのパフォーマンスが制限され、実際にはCPUベースのTrilinos や MKL がより競争力を持つことが判明した。特に大規模な行列ではTrilinosがMKLを同等または上回る性能を示した。
We contribute a third-party survey of sparse matrix-vector (SpMV) product performance on industrial-strength, large matrices using: (1) The SpMV implementations in Intel MKL, the Trilinos project (Tpetra subpackage), the CUSPARSE library, and the CUSP library, each running on modern architectures. (2) NVIDIA GPUs and Intel multi-core CPUs (supported by each software package). (3) The CSR, BSR, COO, HYB, and ELL matrix formats (supported by each software package).
研究の動機と目的
- Cahn–Hilliard方程式の離散化から生じる大規模で現実世界のスパース行列におけるSpMVのパフォーマンスを評価すること。
- CPUおよびGPUプラットフォーム上で主なソフトウェアライブラリ(Intel MKL、Trilinos、CUSPARSE、CUSP)の効率を比較すること。
- 各ソフトウェアスタックおよびハードウェアプラットフォームに最適な行列格納形式(CSR、BSR、COO、HYB、ELL)を特定すること。
- データ移動の影響がエンドツーエンドのSpMVパフォーマンス、特にGPUベースの実装においてどのように及ぼされるかを評価すること。
- 大規模および分散環境における今後の最適化を支援するため、最も有望なソフトウェアスタック(TrilinosおよびCUSPARSE)を特定すること。
提案手法
- 6つの大規模でバンド構造のスパース行列(611K~9950万行、非ゼロ密度が0.00001%~0.00172%)を用いて評価した。
- 4つのソフトウェアライブラリ(Intel MKL(CPU)、Trilinos(Tpetra、CPU)、CUSPARSE(GPU)、CUSP(GPU))を用い、各ライブラリがサポートする格納形式を用いてSpMVパフォーマンスを評価した。
- 各行列およびソフトウェアスタックに対して、複数の行列形式とスレッド数をテストし、中央値として最も速いパフォーマンスを選定した。
- カーネルのみの実行時間を測定して、データ転送コストとは独立したアルゴリズム的パフォーマンスを隔離し、エンドツーエンドのスピードアップにはGPUメモリ転送のオーバーヘッドを含めた。
- Intel X5660 CPU(12コア、48GB RAM)およびNVIDIA M2070 GPU(2.5GB GDDR5)を搭載したシステムで評価を行い、各ライブラリの標準設定を使用した。
- 最適な形式は、CSR、BSR(ブロッキング要因≤32)、COO、HYB(ELL幅10~15)、ELL をテストすることで、ライブラリおよび行列ごとに選定した。
実験結果
リサーチクエスチョン
- RQ1CPUおよびGPUプラットフォーム上で、大規模なスパース行列に対して、どのソフトウェアライブラリ(MKL、Trilinos、CUSPARSE、CUSP)が最高のエンドツーエンドSpMVパフォーマンスを発揮するか?
- RQ2異なるスパース行列格納形式(CSR、BSR、COO、HYB、ELL)が、評価対象のライブラリおよびハードウェアプラットフォームにおけるSpMVパフォーマンスにどのように影響を与えるか?
- RQ3ホストとデバイス間のデータ転送コストが、GPUベースのSpMV実装のパフォーマンス優位性をどれほど相殺するか?
- RQ4最適化されたCPUスレーディングを用いた場合、Trilinosが大規模なスパース行列においてIntel MKLを同等または上回るパフォーマンスを発揮できるか?
- RQ5メモリ転送のオーバーヘッドを除いたカーネル実行に限定した場合、CUSPARSEとCUSPの相対的パフォーマンスはどの程度か?
主な発見
- 非ゼロ密度が低いためメモリのコalescing効果が限定的であるため、GPU向けにELLやHYBが好まれる傾向があるが、すべてのライブラリおよび行列において最適な形式はCSRであった。
- カーネルのみの実行では、CUSPARSEが単一スレッドのMKLに対して最大10.81倍の高速化を達成した。一方、CUSPは最大4.11倍の高速化を達成した。
- データ転送コストを含めた場合、CUSPARSEおよびCUSPの両方とも単一スレッドのMKLに対して1.0倍未満のスピードアップにとどまり、GPUのパフォーマンス向上が通信オーバーヘッドによって相殺されていることが示された。
- 大規模な行列ではTrilinosがMKLのパフォーマンスを同等または上回り、最大行列(F)では2スレッドで最大4.75倍の高速化を達成した。これは、オブジェクト指向APIがパフォーマンスに悪影響を及ぼさないことを示している。
- 最良のCPU実装(8スレッドのMKL)は、単一スレッドのMKLに対して最大3.87倍の高速化を達成した。また、Trilinosは行列EおよびFにおいてMKLを上回った。
- CUSPは、APIのオフライン制限のため、最大の行列(EおよびF)を処理できなかった。これは、GPUライブラリ設計における重要な制約を示している。
より良い研究を、今すぐ始めましょう
論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。
クレジットカード登録不要
このレビューはAIが作成し、人間の編集者が確認しました。