• 検索結果がありません。

CPU と GPU による適切な問題分割を行うための仕組み

2.4 SIMD 型アクセラレータやプログラミング環境に関する研究と本研究

3.2.2 CPU と GPU による適切な問題分割を行うための仕組み

対象問題のデータ規模がどの程度大きければ問題分割・並列実行の効果によって 良い性能が得られるかや,CPUとGPUに対する最適な問題分割割合はどの程度か といった性能パラメタは,対象問題のアルゴリズムだけではなく実行環境のCPUと GPUの性能バランスにも大きく依存する.そのため本アプローチに基づいて作成し

3.2 CPUGPUを用いて問題分割・並列実行を行うライブラリの実装 37

図 12: スレッドを用いた並列実行の失敗例

3.2 CPUGPUを用いて問題分割・並列実行を行うライブラリの実装 38

図 13: 提案するライブラリの構造

3.2 CPUGPUを用いて問題分割・並列実行を行うライブラリの実装 39

たライブラリは,対象環境毎に異なるCPUとGPUの性能バランスに合わせた適切 な問題分割・並列実行を行わなくては良い性能を得ることができない.

このような性能パラメタの確認 (性能チューニング) は,アプリケーションプロ グラマにとって大きな手間となる可能性が高い.特に,アプリケーションプログラ マがGPUのアーキテクチャなどライブラリにより隠蔽されるはずであった知識を 習得しなくては性能チューニングが行えないようでは,ライブラリによってアプリ ケーションプログラマに対して実行環境を隠蔽するというメリットが失われてしま う.そのため,GPUのアーキテクチャなどに関する知識がなくても性能パラメタを 求めることのできる機構が望まれる.

例えばCPU向けにベクトルや行列に関する演算を提供するライブラリATLAS[77]

では,ライブラリをインストールする際にチューニングを行う機構 (自動チューニ ング機構[78])を備えている.ATLASの備えるチューニング機構は,CPUアーキテ クチャや利用するコンパイラ等いくつかの簡単なパラメタを指定すると,キャッシュ サイズなどの演算性能に影響を与えるハードウェア情報を自動的に収集し,また単 純に収集できない情報についてはベンチマークを行い特定したりする機能を持って いる.こうして得られたハードウェア情報を反映したライブラリがインストールさ れるため,アプリケーションプログラマは利用しているハードウェア(CPUやメモ リ)に関する深い知識がなくても常に最適な性能を得ることができる.

本アプローチにおいては,対象問題のデータ規模が小さい場合にはCPUのみで 演算を行うこと,データ規模が大きい場合にはCPUとGPUの性能バランスにあわ せてCPUとGPUで適切な問題分割・並列実行を行うこと,の2点が重要である.

そのため,ライブラリを利用する計算機システムに搭載されたCPUとGPUの性能 バランスではどのようなデータ規模の問題をCPUのみで実行し,またどのような データ規模の問題をどのような割合でCPUとGPUに分割すれば高い性能が得られ るのかを判断する機構と,判断結果に基づいて実行する機構を作成することで,ア プリケーションプログラマがチューニングを行う手間が削減できると考えられる.

そこで,様々な問題サイズの対象問題に対して様々な問題分割割合で性能を測定 しCPUのみで実行した方が高い性能が得られるデータ規模や適切な問題分割割合

を求める“チューニングスクリプト”と,チューニングスクリプトによって求められ

たパラメタを用いてCPUのみでの実行・GPUのみでの実行・CPUとGPUによる

3.2 CPUGPUを用いて問題分割・並列実行を行うライブラリの実装 40

並列実行から最も高い性能が得られるものを選択する“問題分割機構”によって適切 な問題分割を行うこととする.これによりアプリケーションプログラマは,ライブ ラリのインストール時にチューニングスクリプトを実行しておくことで,ライブラ リ利用時にはチューニングスクリプトによって得られたパラメタに基づき常に高い 演算性能を得ることが可能となる.

実際にどのようなチューニングスクリプトを作成するべきかは対象問題による部 分が大きいため,3.3節にて改めてチューニングの内容を述べる.