2018 Fiscal Year Annual Research Report
High-Productivity GPU Programming Languages
Project/Area Number |
18H03219
|
Research Institution | Tokyo Institute of Technology |
Principal Investigator |
増原 英彦 東京工業大学, 情報理工学院, 教授 (40280937)
|
Project Period (FY) |
2018-04-01 – 2023-03-31
|
Keywords | GPGPU / Ruby / 領域特化言語 / メモリ管理 / JITコンパラ / プログラム合成 |
Outline of Annual Research Achievements |
言語設計に関しては領域特化言語のための中間言語Ikra/Cppの設計を拡充し、入れ子配列を扱えるようにした。この成果はPLDI国際会議併設のARRAY'18ワークショップにおいて査読付論文として発表された。また、複数のバージョンを併用するプログラムのための基本的な言語機構を考案し、予備的な論文をECOOP国際会議に併設されたCOP'18ワークショップにて発表した。
実行方式に関しては、実行時にGPU内で動的・並列にオブジェクトを生成するためのライブラリDynaSOArの設計と実現を行った。これまでほとんど行われていなかった、GPU内での並列実行時に、各スレッドが選択的にオブジェクトを生成することを可能にするもので、階層ビットマップやStructure-of-Arrays配置などの高速化技術を取り入れることに成功している。この成果は、SPLASH'18国際会議でポスター発表した後に、関連分野では最も権威のあるECOOP'19国際会議と、その拡張についての論文がISMM'19国際会議に論文が採択されている。また、メタ実行時コンパイラに複数のコンパイル方式を導入する提案を行い、MinCamlコンパイラに基づく簡素な処理系を作成した。この提案についての予備的な論文が国際会議<Programming>併設のMoreVMs'19ワークショップに採択された。
正しさに関しては、GPGPUプログラムの最適化をプログラム合成手法によって実現する手法を提案した。誤りを引き起こしがちな共有メモリ最適化を、最適化前のプログラムと同じ動作をするプログラムを自動合成することで誤りなく最適化を行うことを目指している。実際にCUDAプログラムの最適化を行う処理系を作成し、xSIG'18ワークショップおよびPPL'19ワークショップにおいて査読付論文として発表した。
|
Current Status of Research Progress |
Current Status of Research Progress
1: Research has progressed more than it was originally planned.
Reason
GPU上でオブジェクト指向プログラミング(OOP)を可能にするための要素技術として、GPU内で並列にオブジェクト生成を行うメモリ管理手法を考案し、実際に作成したライブラリでその効率を確めることができた。研究計画時点では明らかではなかったこととして、そもそも動的なメモリ管理機構自体がGPUで並列実行には向かないことに気付いた点がある。これに対し、階層ビットマップを用いた効率的な実現方法を考案することができ、実際にその性能を確認できるライブラリを構築できたことの意義は大きい。この研究についての論文は、OOP分野では最も権威ある国際会議ECOOPに採択されていることからも、計画以上の進展を見たと考える。
|
Strategy for Future Research Activity |
実行方式に関しては、2018年度に基本的なメモリ管理機構に関して大きな進展を見ることができたので、その点に関するさらなる効率化、異なる実行環境・アプリケーションプログラムでの性能評価を継続して行う。またIkra/Cpp中間言語との統合も進める。さらに、履歴型実行時コンパイラ系については、基本的な最適化方式を取り入れ、完成度を高めてゆく。
言語設計に関しては、メモリ管理機構を含めて言語設計を見直し、コンパイラ型の処理系に取り入れる。さらに、グラフ処理等の動的な並列性を持つプログラムのための記述方法を検討する。
正しさの保証に関しては、プログラム合成による最適化手法について、合成アルゴリズムの高速化と、アプリケーションプログラムを用いた性能評価を行ってゆく。
|