2014 Fiscal Year Research-status Report
GPGPUプログラミング容易化のためのMapReduceアルゴリズム処理系の開発
Project/Area Number |
26330088
|
Research Institution | Osaka Prefecture University |
Principal Investigator |
藤本 典幸 大阪府立大学, 理学(系)研究科(研究院), 教授 (90294165)
|
Project Period (FY) |
2014-04-01 – 2017-03-31
|
Keywords | 超高速情報処理 / 並列処理 / GPGPU / MapReduce |
Outline of Annual Research Achievements |
本研究の目的は,並列処理やGPGPUに関する知識が無い一般的なプログラマでもGPUの高性能を容易に利用可能とするために,逐次C言語で記述されたMapReduceプログラムを効率の良いGPGPUプログラムに自動変換するコンパイラを開発することである.この目的の達成のために,(1)逐次C言語によるMapReduceプログラム記述のためのAPIの設計,(2)(1)で設計したAPIを用いて記述されたMapReduceプログラムをそのまま逐次Cプログラムとして実行するためのライブラリの開発,(3) MapReduceプログラムをソースプログラムの修正無しにそのままマルチコアCPU上で並列実行するためのライブラリの開発,をまず行い,いくつかのアプリケーションを用いて評価実験を行いつつ,GPGPUに関するこれまでの研究経験を活かしてこれらを徐々に発展させる形で, (4)単一GPU用コンパイラの開発,(5)単一PC上の複数GPU用コンパイラの開発,(6)GPUクラスタ用コンパイラの開発,を行う. そこで平成26年度は,まず,逐次C言語でMapReduceプログラムを記述するための簡潔で使いやすいMapReduce APIの設計を行った.さらに設計したAPIに基づいた逐次C言語用トランスレータ,OpenMP用トランスレータと単一GPU用トランスレータの試作を行った.
|
Current Status of Research Progress |
Current Status of Research Progress
2: Research has progressed on the whole more than it was originally planned.
Reason
まず,逐次C言語でMapReduceプログラムを記述するための簡潔で使いやすいMapReduce APIの設計を行った.設計したAPIは下記の特徴を持つ:APIユーザはアプリケーション・プログラム全体を逐次C言語のみで記述する.複数ファイルに分けての分割コンパイルにも対応する;ユーザ定義のkey1型,key2型,key3型,value1型,value2型,value3型,map関数,reduce関数,およびcompare関数を記述するだけで簡単にMapReduce処理を定義できるようにする;(key1, value1)はmap関数の入力ペアの型であり,(key2, value2)はmap関数の出力ペア(=reduce関数の入力ペア)の型であり,(key3, value3)はreduce関数の出力ペアの型である;map関数とreduce関数は,アプリケーション・プログラムのmap処理とreduce処理を逐次C言語の関数として記述したものである.map処理とreduce処理の出力はそれぞれcwrite2関数とcwrite3関数を呼び出すことにより行う.cwrite2関数とcwrite3関数はAPIが用意するライブラリ関数である;compare関数は,mapフェーズの出力結果を各reduce処理にキー値毎に分類して渡すために内部でソートを行う(いわゆるshuffleフェーズ)ために,キーの値の大小関係を判定する方法を逐次C言語で記述したものである;アプリケーション・プログラムの中でmapフェーズ(+shuffleフェーズ)とreduceフェーズの実行をいつ行うかの指定は,それぞれMAP関数呼び出しとREDUCE関数呼び出しで行う.MAP関数とREDUCE関数はAPIが用意するライブラリ関数である.複数ラウンドのMapReduceアルゴリズムに対応するため,MAP関数呼び出しとREDUCE関数呼び出しは繰り返すことができる. さらにユーザに見えない形で内部的にOpenMPを用いてマルチコアCPU上で並列動作するライブラリと,APIを用いて逐次C言語で記述されたMapReduceプログラムをCUDA C/C++で記述されたGPUプログラムに変換するトランスレータの第1版を開発した.
|
Strategy for Future Research Activity |
まず,試作したAPIを用いて記述されたMapReduceアプリケーションプログラムを複数開発する.次に試作した第1版の単一GPU用トランスレータを開発したMapReduceアプリケーションを用いて評価し,その評価結果に基づいてトランスレータが生成するGPUプログラムの性能を向上するようにトランスレータおよびAPIを改善する.必要に応じて,評価実験とそれに基づく改善のプロセスを繰り返す. さらにこれらの経験を活かして,複数GPU搭載の単一PC用トランスレータを開発する.そのために,まず,MapReduceの処理の対象となるkey-valueデータを複数のGPUのVRAMに分割して記憶するための分散KVS(Key Value Store)を開発する.次に開発した分散KVSに対応するようにMapReduce APIを拡張することにより,GPUクラスタを含む複数GPU対応コンパイラを開発する.
|
Causes of Carryover |
他の予算により物品購入費が抑えられたため
|
Expenditure Plan for Carryover Budget |
研究発表のための旅費の一部に充当する予定
|
Research Products
(6 results)