既存のアプリケーションプログラムは、CPUとGPUといった異種複数のプロセッサを搭載するような複雑な計算システムを想定して開発されていない。このため、既存のアプリケーションプログラムからGPU等のアクセラレータを容易に利用するために、コンパイラ指示行に基づくプログラミング環境が注目されている。本研究では、そのようなプログラミング環境が実際のアプリケーション開発においてどの程度実用になるのかを評価した。そのようなプログラミング環境の例としてCAPS社のHMPPを評価した結果、アプリケーションによっては従前のCUDAやOpenCLと比べても遜色のない実効性能を達成できることが明らかになった。 その後、そのようなプログラミング環境を用いて既存のアプリケーションプログラムをOpenCLに変換したことを仮定して、標準的なOpenCLプログラムでシステム中のプロセッサを適材適所で自動的に利用するための研究を行った。その結果、実行時性能予測に基づいてタスクをスケジューリングすることによって、異種複数のプロセッサ間の負荷分散を行うことが可能となった。本タスクスケジューリング手法はアプリケーションプログラムからは透過的である。このため、プログラマが意識しないで記述したコードで異種複数のプロセッサの適材適所での利用が可能になったことを示している。提案手法の実用性、および適用範囲とその限界を明らかにすることが今後の課題である。
|