Skip to main content
QUICK REVIEW

[論文レビュー] A survey of sparse matrix-vector multiplication performance on large matrices

Max R. Grossman, Christopher Thiele|arXiv (Cornell University)|Aug 1, 2016
Distributed and Parallel Computing Systems参考文献 6被引用数 21
ひとこと要約

この論文は、Intel MKL、Trilinos、CUSPARSE、CUSP を用いて、CPU および GPU の両方で大規模で産業用途のスパース行列に対する行列-ベクトル積(SpMV)のパフォーマンスを評価している。GPUベースのSpMVフレームワークであるCUSPARSEは、カーネル実行のみの場合は最大10.8倍の高速化を達成するが、データ転送のオーバーヘッドによりエンドツーエンドのパフォーマンスが制限され、実際にはCPUベースのTrilinos や MKL がより競争力を持つことが判明した。特に大規模な行列ではTrilinosがMKLを同等または上回る性能を示した。

ABSTRACT

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が作成し、人間の編集者が確認しました。