本年度は並列GPUプログラムを高速かつ透過的にチエックポイントすることを目的にこれまで開発したチェックポイント技法をもとにした研究開発を行った。具体的には透過的なチェックポイントを実現するためにアプリケーションフレームワークを構成し、フレームワークによって透過的なチェックポイントを実現した。GPUプログラミングにおいて主流であるCUDAを用いたアプリケーションでは一般的には種々の技術的制約により透過性を達成することは不可能である。我々は透過的にチェックポイントが可能なアプリケーションフレームワークとして、ステンシル計算を対象としたドメイン特化型フレームワークを構築した。アプリケーションは同フレームワークのドメイン特化型言語を用いて機種独立に記述され、実際の実行コードはドメイン特化型言語から特定の機種向けソースコードを生成しそれを通常のプログラムとしてコンパイルすることで生成する。GPU向けにはCUDAコードを生成するが、チェックポイント可能なタイミングにおいて定期的に昨年度までに開発したCUDAチェックポイント技法を応用することでアプリケーションコンテキストをチェックポイントする。GPU向けシステムレベルチェックポイントではPinnedメモリなどの利用が必ずしもできないが、本フレームワークでは適切にリソースの破棄・復元を行うことで通常のCUDAアプリケーションと同様にPinnedメモリを使った非同期転送などの最適化を実現している。本年度は本フレームワークのプロトタイプとして、チェックポイントおよびリスタート機能の試験実装を行い、GPUクラスタ環境において適切に動作することを確認し、Pinnedメモリを用いることなどによる効率改善を確認した。
|