本研究課題は,CUDA向けOpenMP処理系の研究成果を発展させ,タスクの最適分割と最適割当,CPU-GPU間/GPU-GPU間データ転送最適化,カーネル関数内最適化などの手法の考案と実装を行い,ユーザがGPUコンピューティングを簡便に利用するためのOpenMP処理系を実現しようと試みるものである.初年度には,データ転送の最適化に注力し,Memory Copy 方式とZero Copy方式を適宜選択する方式を提案した.二年目はタスク分割・割当の最適化に優先的に取り組み,対象をOpenCLに発展させ,異種GPUを搭載した環境において,ワークサイズを算出するモデルを明らかにした. 最終年度の本年の当初研究計画及び前年度における今後の研究推進方策では,タスク分割・割当の最適化,データ転送最適化,カーネル関数内最適化ついて,ソフトウェア実装を進めるとともに,チューニングツールとの連携を展開することとしていた.また,現在GPUプログラミングの枠組みとして利用が進んでいるOpenACCでの実装も検討することとしていた. これに対し,現状のGPUコンピューティングシステムでのCPUとGPU間のデータ転送最適化はタスク分割最適化との協調が必要であるとの認識のもと,タスク分割とデータ転送の協調最適化に注力することとし,また,対象をGPUプログラミングの枠組みとして利用が進んでいるOpenACCをターゲットとして研究を実施した.具体的には,単純なデータ転送のみを指定したOpenACCプログラムを解析し,タスク分割・データ分割を行うことによってデータ転送のパイプライン化を可能とすることによって,データ転送の自動最適化を行う手法について考察を進めた.さらに,その手法を実装したOpenACC to OpenACCのコードトランスレータを開発し,その結果,同手法の有効性を明らかにした.
|