AMDなどが中心となってHSA Foundationを設立し、GPUなどのアクセラレータとCPUを統合したシステムのプログラミングを容易にするシステムアーキテクチャである「Heterogeneous System Architecture(HSA)」の開発を進めている。

HSA Foundationは2012年6月に設立され、現在のメンバーは次のスライドのようになっている。

HSA Foundationの現在のメンバー

HSA Foundationは設立以来、ヘテロなコアを含むシステムの仕様を検討してきており、2013年5月に第1版のProgrammer's Reference Manualを公開した。そして、今回のHot Chips 25において、HSAのチュートリアルを開催した。

Hot Chipsのチュートリアルは日曜日の朝9時からで、例年、この時間は出席者が少ないのであるが、HSAのチュートリアルはほぼ満員で、関心の高さがうかがえた。

HSAチュートリアルの会場風景

今回のHSAチュートリアルでは、AMDのPhil Rogers氏が概要を話し、HSAの命令アーキテクチャであるHSAILについて同じくAMDのBen Sander氏、メモリモデルについてQualcommのBenedict Gaster氏、キューイングモデルについてARMのIan Bratt氏が講師を勤めた。なお、Rogers氏は、AMDのCorporate Fellowであるが、HSA FoundationのPresidentも兼任している。

AMDのPhil Rogers氏

AMDのBen Sander氏

QualcommのBenedict Gaster氏

ARMのIan Bratt氏

この図はAMDのBratt氏のものであるが、現在のGPUを使用する上での問題点を分かり易く表している。

現在のGPUで処理を実行するフロー

CPUとGPUのメモリは別々であるので、CPUで動くアプリケーションは、GPUで処理するためのデータをGPUに送ってやる必要がある。そして、OSはアプリから依頼されたデータをGPUのメモリにコピーする。

そしてアプリはGPUジョブの実行をOSに依頼する。OSは依頼されたジョブを実行キューにいれ、順番が来たらGPUに実行を開始させる。GPUはジョブの実行が終わると、OSに通知し、OSはアプリの実行再開をスケジュールする。実行を再開したアプリはバッファを確保し、OSに依頼して、ジョブの処理結果をGPUメモリからバッファにコピーしてもらう。これで処理が終わるが、やり取りが煩雑で疲れてしまうという絵である。

最大の問題は、CPUとGPUのメモリ空間が分かれていることにある。CPUとGPUが同じメモリ空間をアクセスできれば、CPUとGPUのメモリ間のデータのコピーは不要で、単にポインタを渡して、データがどこにあるかだけを教えてやればよい。