研究課題/領域番号 |
25330143
|
研究種目 |
基盤研究(C)
|
研究機関 | 電気通信大学 |
研究代表者 |
本多 弘樹 電気通信大学, 大学院情報システム学研究科, 教授 (20199574)
|
研究期間 (年度) |
2013-04-01 – 2016-03-31
|
キーワード | 高性能コンピューティング / 並列処理 / GPU / OpenMP |
研究概要 |
本研究課題は,CUDA向けOpenMP処理系の研究成果を発展させ,タスクの最適分割と最適割当,CPU-GPU間/GPU-GPU間データ転送最適化,カーネル関数内最適化などの手法の考案と実装を行い,ユーザがGPUコンピューティングを簡便に利用するためのOpenMP処理系を実現しようと試みるものである. 本年度の研究計画では, GPUプログラミングのチューニング技法をサーベイの上,最適化項目として処理系に採用すべきものの有無を検討することとしていた.具体的には,タスク分割・割当最適化,データ転送最適化,カーネル関数内最適化をはじめとして検討し,各項目に対し,実プログラムにおける適用頻度や見込まれる最適化効果,OpenMP処理系による自動化の可能性などをもとに優先度を策定し,どの項目を本研究期間での対象とするのかを検討することとしていた. これに対し,GPUコンピューティングではGPUにおけるカーネル関数自体の実行時間が短縮されてもCPUとGPU間のデータ転送に時間がかかってしまうと総合的な性能が低下してしまう問題がまずは解決すべき重要な課題であるという認識のもと, CPUとGPU間のデータ転送の最適化に注力することとし研究を実施した.具体的には,CUDA2.2から実装されているZero Copy方式によるデータ転送方式に着目し,通常のMemory Copy方式によるデータ転送と比べた場合の有効性の検証,実際のカーネル関数実行に際してのZero Copy方式の採用方法について考察を進めた.その結果,カーネルで使用される変数のアクセス回数に応じてMemory Copy 方式とZero Copy方式を選択することでデータ転送時間の削減を可能とする方式を提案し,その効果を簡便に利用できるようにするためのAPIのあり方を明らかにした.また,GPUを搭載したテストベッドシステムを構築した.
|
現在までの達成度 (区分) |
現在までの達成度 (区分)
2: おおむね順調に進展している
理由
本研究課題の目的では,次の点に重点をおくこととしていた. 1.タスク分割・割当の最適化:これまでの研究では,各forallループを一律に一つのタスクとしそれを単一GPUに割当てて並列処理し,その他の部分をCPUで逐次処理していた.これに対し本研究では,各forallループを分割して複数タスクとすることも可能とし,最適な割当先を決定するための手法を明らかにする. 2.データ転送最適化:GPUコンピューティングでは,CPU-GPU間でのデータ転送が性能に大きな影響を及ぼすため,転送データ量の削減,転送回数の削減が求められるが,これまでの研究ではデータをすべて転送することとしていた.本研究では真に必要なデータのみを転送するための最適化手法を明らかにする. 3.カーネル関数内最適化:カーネル関数の実行性能は,使用するブロック数,スレッド数,レジスタ数,メモリ選択,メモリアクセスパターンなどによって大きな影響を受ける.これまでの研究では,これらをデフォルトで設定していたが,本研究ではそれぞれのプログラムに応じて最適な値に設定する手法を明らかにする. これに対し,本年度は二つ目のデータ転送最適化について優先的に取り組み,必要なデータだけを必要な時点で転送するためにZero Copy方式を用いることに着眼したうえで,カーネルで使用される変数のアクセス回数に応じてMemory Copy 方式とZero Copy方式を選択することでデータ転送時間の削減を可能とする方式を提案し,その効果を簡便に利用できるようにするためのAPIを開発した.データ転送時間の削減によりひとつ目のタスク粒度選択にも自由度を与えることになる.以上より,研究は順調に進展していると判断できる.なお,本年の研究に関連し,修士学生が「CPUとGPU間のデータ転送時間の短縮に関する研究」と題して修士学位を取得した.
|
今後の研究の推進方策 |
当初の研究計画どおり,本年度の結果をもとに,個々の最適化手法の考案とそれを実現するOpenMP処理系のソフトウェアモジュールの実装を進める.今後の研究推進の具体的方策は次のとおりである. 1.データ転送最適化に関しては,本年度提案した方式とそれを実装するAPIについては前年度構築したGPUテストベッドシステム上で実プログラムでの有効性の検証を進めるとともに,OpenMP処理系への組込方式を検討し,ソフトウェモジュールの実装を進める. 2.タスク分割・割当の最適化,カーネル関数内最適化に関しては,その手法の検討を行う.すなわち,各最適化におけるパラメータ(ループ回転数,ループボディ計算量・データ量など)の同定,テストベッドシステム上での実行時間及び消費電力の測定による最適パラメータ値の取得,プログラム解析によるパラメータ設定自動化手法の開発などを行う. 3.個々の最適化手法について,OpenMP処理系のモジュールとしての設計と実装コーディングを行うとともに,モジュールの動作検証を行う. 4.各機能の実装については優先順位を決め,進捗が思わしくない場合には,重要な機能の実装に絞るなど対処する.予定より進捗が早い場合には,各機能を処理系等して全体統合するための設計(次年度予定)を先取りして開始する.
|