本研究は、GPGPUをより汎用的で非定型的な処理へ応用するために、従来のスレッドカーネルではなく、タスクベースの細粒度実行機構によってGPU内および複数のGPU間における処理の負荷を動的にバランスさせる手法に関して研究を行うものである。本年度は、昨年度に引き続いて、新たに提案したスーパースレッドカーネルの考え方のより一般的な適用性に関して研究を行うとともに、スーパースレッドカーネルの実行制御に関して研究をすすめた。 具体的には、昨年度開発したスーパースレッドカーネル内の細粒度マイクロスレッド同士の間でのデータ転送を最小化するための、複数のスレッドカーネルの選択に関する評価手法を研究した。また、GPGPUにおける非定型的なプログラムにおける各スレッドの動的な実行方式に関して評価を行うために、クイックソートのプログラムを取り上げ、プロセッサからの制御によらずに、GPGPU単独で、動的なスレッドの制御を行う手法を開発した。しかしながら、グローバルメモリにおける排他制御のオーバーヘッドなどにより、実行効率としては期待した性能が得られていない。これを解決するための課題としては、メモリ階層を生かしたメモリアクセスの効率的な使用方法を開発するとともに、メモリを介さないスレッドの制御方法を導入する必要がある。本研究によって、スレッドカーネルの処理の粒度がアンバランスである場合において、GPGPU内の各ブロックに割り当てられる負荷をバランスさせることが可能であることが確かめられた。
|