研究課題
言語設計に関しては領域特化言語のための中間言語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ワークショップにおいて査読付論文として発表した。
1: 当初の計画以上に進展している
GPU上でオブジェクト指向プログラミング(OOP)を可能にするための要素技術として、GPU内で並列にオブジェクト生成を行うメモリ管理手法を考案し、実際に作成したライブラリでその効率を確めることができた。研究計画時点では明らかではなかったこととして、そもそも動的なメモリ管理機構自体がGPUで並列実行には向かないことに気付いた点がある。これに対し、階層ビットマップを用いた効率的な実現方法を考案することができ、実際にその性能を確認できるライブラリを構築できたことの意義は大きい。この研究についての論文は、OOP分野では最も権威ある国際会議ECOOPに採択されていることからも、計画以上の進展を見たと考える。
実行方式に関しては、2018年度に基本的なメモリ管理機構に関して大きな進展を見ることができたので、その点に関するさらなる効率化、異なる実行環境・アプリケーションプログラムでの性能評価を継続して行う。またIkra/Cpp中間言語との統合も進める。さらに、履歴型実行時コンパイラ系については、基本的な最適化方式を取り入れ、完成度を高めてゆく。言語設計に関しては、メモリ管理機構を含めて言語設計を見直し、コンパイラ型の処理系に取り入れる。さらに、グラフ処理等の動的な並列性を持つプログラムのための記述方法を検討する。正しさの保証に関しては、プログラム合成による最適化手法について、合成アルゴリズムの高速化と、アプリケーションプログラムを用いた性能評価を行ってゆく。
すべて 2019 2018 その他
すべて 国際共同研究 (3件) 雑誌論文 (8件) (うち国際共著 3件、 査読あり 8件) 学会発表 (9件) (うち国際学会 1件、 招待講演 1件) 備考 (3件)
Proceedings of the Workshop on Modern Language Runtimes, Ecosystems, and VMs (MoreVMs'19)
巻: - ページ: -
-
Proceedings of the Workshop on Modern Language Runtimes, Ecosystems, and VMs: Track on Programming Across the System Stack (MoreVMs/PASS'19)
Proceedings of the ACM SIGPLAN International Symposium on Memory Management (ISMM' 19)
Proceedings of of European Conference on Object-Oriented Programming (ECOOP'19)
Proceedings of the 5th ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming (ARRAY@PLDI 2018)
巻: - ページ: 50-58
10.1145/3219753.3219760
Proceedings of the 10th International Workshop on Context-Oriented Programming: Advanced Modularity for Run-time Composition, COP '18
巻: - ページ: 14-8
10.1145/3242921.3242923
Proceedings of the 2018 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software, Onward! 2018
巻: - ページ: 72-87
10.1145/3276954.3276962
Proceedings of the 2018 26th ACM Joint Meeting on European Software Engineering Conference and Symposium on the Foundations of Software Engineering, ESEC/FSE 2018
巻: - ページ: 703-713
10.1145/3236024.3236076
https://github.com/prg-titech/dynasoar
https://github.com/prg-titech/Kani-CUDA
https://github.com/prg-titech/baccaml