3.4 GPUPC GEMM Library の評価
3.4.3 利用の手間と得られる性能に関する評価
3.4 GPUPC GEMM Libraryの評価 75
3.4 GPUPC GEMM Libraryの評価 76
述を行っているか,本アプローチに基づくライブラリが存在しない場合にはどの程 度の実装の手間がかかるのかを確認する.
• 問題分割・並列実行に関する記述(CPU上で動作するプログラム) : 4000行程 度.ただしSGEMMとDGEMMで似たような記述を繰り返している部分が多 いため,実質2000行程度.
• シェーダプログラム (GPU上で動作するプログラム) : 100行程度.ただし行
列のORDERと転置のパラメタに対応するため類似したプログラムが複数存
在する.
• OpenGLやシェーダの初期化などに関する記述 (CPU上で動作するプログラ ム) : 1000行程度.
• 複数CPUや複数GPU向けの記述 (CPU上で動作するプログラム) : 3000行 程度.
GPUPC GEMM Libraryは合計6000行程度(複数CPUや複数GPU向けの実装で
は合計10000行程度) で書かれたプログラムである.このうち問題分割・並列実行
に関する記述が本アプローチの中心となる部分であり,アプリケーションプログラ マにとっては,この行数分の手間が削減されていると言える.
77
4 並列化プログラミング環境によるアプローチ
本章では,既存のCPU向け並列化プログラミング環境を用いてGPGPUプログ ラムを作成できるようにすることでアプリケーションプログラマに対してGPGPU プログラムに関する知識や技術を習得する手間を削減するアプローチを提案する.
はじめに本提案の着眼点である既存のCPU向け並列化プログラミング環境を用い
たGPGPUプログラミングの概要を述べ,次に既存のCPU向け並列化プログラミ
ング環境とGPGPUおよびCUDAとの対応付けについて述べる.さらに提案を元 に作成した処理系“OMPCUDA”の設計と実装について述べ,テストプログラムを 用いて評価を行う.
4.1 既存の CPU 向け並列化プログラミング環境を用いた GPGPU プログラミングの提案
GPUは内部の演算器にハードウェアレベルでの高い並列性を備えた並列処理によ る高い演算性能を持つハードウェアである.そのためGPUは並列性の高いプログ ラムに対する性能向上が期待されている.しかしながらGPUプログラミングには GPUプログラミング独自の並列化プログラミング環境を用いる必要があるため,ま たGPUのアーキテクチャについての知識が必要なため,アプリケーションプログ ラマにとってGPUプログラミングは難しく手間がかかるものとなっている.
一方でCPUを対象とした並列化プログラミングに関する研究はこれまでに数多く 行われてきた.現在では単純なループの並列化など一部のプログラムについては自 動並列化コンパイラによる並列化でも高い性能を得ることが可能となっているもの の,一般的な多くのプログラムではアプリケーションプログラマによる並列化記述 が必要である.そのため様々な並列化プログラミングのためのプログラミング環境 が提案されており,いくつかの並列化プログラミング環境は多くのアプリケーショ ンプログラマに利用されている.したがって,GPGPUプログラミングにもこれら の並列化プログラミング環境が利用できれば,アプリケーションプログラマにとっ てGPUのアーキテクチャに関する理解やGPGPUプログラミング独自の並列化手 法,並列化プログラミング言語の習得といった手間が削減され,GPGPUを容易に
4.1 既存のCPU向け並列化プログラミング環境を用いたGPGPUプログラミング
の提案 78
利用可能になると考えられる.
そこで,既存のCPU向け並列化プログラミング環境を用いたGPUプログラミン グを提案する.以下本節では,既存のCPU向け並列化プログラミング環境のいくつ かについて,現在の一般的なGPUとの対応付けを考える.さらにGPUアーキテク チャの1つであるCUDAを対象として,既存のCPU向け並列化プログラミング環 境とGPUプログラミングとのより具体的な対応付けの検討を行う.