3.4 GPUPC GEMM Library の評価
3.4.1 単純な行列積和計算を用いた性能確認
GPUPC GEMM Libraryは,問題サイズ (行列の一辺の長さ) が小さすぎる場合 にCPUのみで計算を行いCPUとGPUによる問題分割・並列実行によって高い性 能が得られる場合にのみ並列実行するという機能を持つ(ただしCPUのみで計算を 行う問題サイズの閾値や適切な問題分割割合はチューニングスクリプトで事前に求
3.4 GPUPC GEMM Libraryの評価 60
めておく必要がある) ため,問題サイズに関係なく“CPUのみによる実行”,“GPU のみによる実行”,“CPUとGPUによる問題分割・並列実行”の中から最も高速な ものを選択し実行することができる.
そこで第1の評価として,いくつかの問題サイズの行列積和計算に対して,CPU とGPUの問題分割割合にいくつかの値を設定してCPUとGPUによる問題分割・並 列実行の実行時間を測定する.測定結果をCPUのみによる実行やGPUのみによる 実行の実行時間と比較し,CPUとGPUによる問題分割・並列実行によりCPUのみ やGPUのみよりも高い性能が得られること,また環境によっては問題サイズが小さ すぎる場合にCPUのみの方が性能が高いことを確認し,GPUPC GEMM Libraryの 機能,すなわち問題サイズが小さすぎる場合にCPUのみで計算を行いCPUとGPU による問題分割・並列実行によって高い性能が得られる場合にのみ並列実行する機 能が有用であることを示す.
以下,SGEMMを用いた性能確認,DGEMMを用いた性能確認,複数のCPUと 複数のGPUを搭載した計算機システムでの性能確認,の順で評価を行う.
SGEMMを用いた性能確認
ここではSGEMMを用いた性能確認を行い,GPUPC GEMM Libraryの有用性 を確認する.
図24から図26は各実行環境に対して,CPUのみによる実行 (CPU)・GPUのみ による実行 (GPU)・CPUとGPUを用いた並列実行 (PARALLEL) の各実行時間 (a) と,GPUのみによる実行および並列実行についてのCPUに対する実行時間比
(b),さらに並列実行において最適な実行時間となった問題分割割合(c) を示すグラ
フである.並列実行の実行時間はCPUとGPUの問題分割割合をCPU 5% : GPU 95%からCPU 95% : GPU 5%まで5%刻みで変化させた際の最も高速な場合をとっ ている.各実行時間にはGPUを初期化する時間は含まれていないが,CPU-GPU間 の通信時間は含まれている.
グラフからわかるように,実行時間が0.01秒未満と著しく短いもの (横軸の問題 サイズに*をつけたもの) を除外して見てみると,環境1と環境3は問題サイズ512 においてCPUのみやGPUのによりも並列実行の実行時間が最も短いのに対して,
環境2ではGPUの性能が低いため並列実行の実行時間が最も短くなるのは問題サ
3.4 GPUPC GEMM Libraryの評価 61
図 24: 各問題サイズに対する実行時間とCPUに対する実行時間比(環境1)
3.4 GPUPC GEMM Libraryの評価 62
図 25: 各問題サイズに対する実行時間とCPUに対する実行時間比(環境2)
3.4 GPUPC GEMM Libraryの評価 63
図 26: 各問題サイズに対する実行時間とCPUに対する実行時間比(環境3)
3.4 GPUPC GEMM Libraryの評価 64
イズ768からである.またいずれの環境においても問題サイズがある程度大きい場 合には並列実行の実行時間が最も短くなっている.各問題サイズにおいて最も実行 時間が短くなった際の問題分割割合をみると,それぞれ10%以内の範囲に収まって いることがわかる.
DGEMMを用いた性能確認
DGEMMについてもSGEMMと同様の性能確認を行った.
CPUのみによる実行(CPU)・GPUのみによる実行(GPU)・CPUとGPUを用い た並列実行(PARALLEL)の各実行時間と,GPUのみによる実行および並列実行に ついてのCPUに対する実行時間比,さらに並列実行において最適な実行時間となっ た問題分割割合を示すグラフを図27から図29に示す.
グラフからわかるように,CPUとGPUで問題分割・並列実行するよりもCPUの みで実行した方が高い性能となる閾値や問題分割・並列実行における適切な問題分 割割合などの具体的な値は異なるものの,SGEMMと同様の傾向が見て取れる.い ずれの環境においてもSGEMMより多くの問題をGPUが担当したときに高い性能 が得られているのは,CPUの演算がDGEMMとなり実行時間が長くなった一方で GPUの演算はSGEMMのままであるため,相対的にGPUの性能が高くなり,より 多くの問題をGPUに割り当てた方が高い性能が得られたことによるものであると 考えられる.
複数のCPUと複数のGPUを搭載した計算機システムでの性能確認
環境2に対して,搭載されているGPUと同じGPUをもう1台搭載して2CPU (デュアルコアCPU×1) + 2GPUの環境を作り,複数のCPUと複数のGPUを用い た場合の性能についても性能確認を行った.以下,元の環境2を“1CPU+1GPU環 境”,GPUを追加した環境を“2CPU+2GPU環境”と呼ぶことにする.
今回の実験環境(2CPU+2GPU環境)ではCPUに搭載された2つのコアは同じ性 能を持ち,また2台のGPUもそれぞれ同じ性能を持つ.そのため,2CPU+2GPU の問題分割では1CPU+1GPU環境における問題分割を利用し,CPU A% : GPU B%の問題分割割合だったものをCPU0 (A/2)% : CPU1 (A/2)% : GPU0 (B/2)%
3.4 GPUPC GEMM Libraryの評価 65
図27: 各問題サイズに対する実行時間とCPUに対する実行時間比(環境1:DGEMM)
3.4 GPUPC GEMM Libraryの評価 66
図28: 各問題サイズに対する実行時間とCPUに対する実行時間比(環境2:DGEMM)
3.4 GPUPC GEMM Libraryの評価 67
図29: 各問題サイズに対する実行時間とCPUに対する実行時間比(環境3:DGEMM)
3.4 GPUPC GEMM Libraryの評価 68
: GPU1 (B/2)%という割り当てにすることである程度高い性能が得られると期待で きる.
“SGEMMを用いた性能確認”からわかるように1CPU+1GPU環境における最適 な問題分割割合がCPU 50% : GPU 50%であったことから,2CPU+2GPU環境では 2CPU (ATLASによるマルチスレッド処理)に50%を割り当て,残りの50%を2GPU で均等に分割して実行時間を測定した.図30は,CPUのみによる実行 (CPU)・
GPUのみによる実行 (GPU)・1CPU+1GPU環境での並列実行 (1CPU+1GPU)・
2CPU+2GPU環境での並列実行 (2CPU+2GPU) の4環境についての実行時間と,
それぞれCPUのみによる実行に対する実行時間比を示したグラフである.グラフ からわかるように,2CPU+2GPU環境では1CPU+1GPU環境と比較してさらに実 行時間を短縮することができている.
まとめ
以上のように,CPUとGPUによる問題分割・並列実行はCPUのみやGPUのみ と比べて高い性能を得られる可能性がある一方で,問題サイズが小さすぎる場合に はCPUのみで計算を行う方が問題分割・並列実行するよりも高い性能が得られ,ま た問題サイズが大きい場合にはCPUのGPUの性能バランスに対応した一定の割合 で問題分割・並列実行を行うことで高い性能を得られることが確認できた.
GPUPC GEMM Libraryでは並列実行により実行時間が短くなる問題サイズの閾 値や最適な問題分割割合をチューニングスクリプトを用いて調査し,また調査した 結果を用いて常に高い演算性能を発揮することができる.アプリケーションプログ ラマは本ライブラリを用いない場合,自ら手間のかかるCPUとGPUによる並列処 理を実装しなくてはならないうえに,対象問題の問題サイズによってCPUのみで の実行,GPUのみでの実行,CPUとGPUによる問題分割・並列実行の中から適切 な実行方法を選択しなくてはならない.GPUPC GEMM Libraryはこうしたアプリ ケーションプログラマにとっての手間を削減することができるため有用であると言 える.
3.4 GPUPC GEMM Libraryの評価 69
図 30: 2CPU+2GPUでの性能評価(SGEMM)
3.4 GPUPC GEMM Libraryの評価 70