AMDなどが中心となってHSA Foundationを設立し、GPUなどのアクセラレータとCPUを統合したシステムのプログラミングを容易にするシステムアーキテクチャである「Heterogeneous System Architecture(HSA)」の開発を進めている。
HSA Foundationは2012年6月に設立され、現在のメンバーは次のスライドのようになっている。
HSA Foundationは設立以来、ヘテロなコアを含むシステムの仕様を検討してきており、2013年5月に第1版のProgrammer's Reference Manualを公開した。そして、今回のHot Chips 25において、HSAのチュートリアルを開催した。
Hot Chipsのチュートリアルは日曜日の朝9時からで、例年、この時間は出席者が少ないのであるが、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を使用する上での問題点を分かり易く表している。
CPUとGPUのメモリは別々であるので、CPUで動くアプリケーションは、GPUで処理するためのデータをGPUに送ってやる必要がある。そして、OSはアプリから依頼されたデータをGPUのメモリにコピーする。
そしてアプリはGPUジョブの実行をOSに依頼する。OSは依頼されたジョブを実行キューにいれ、順番が来たらGPUに実行を開始させる。GPUはジョブの実行が終わると、OSに通知し、OSはアプリの実行再開をスケジュールする。実行を再開したアプリはバッファを確保し、OSに依頼して、ジョブの処理結果をGPUメモリからバッファにコピーしてもらう。これで処理が終わるが、やり取りが煩雑で疲れてしまうという絵である。
最大の問題は、CPUとGPUのメモリ空間が分かれていることにある。CPUとGPUが同じメモリ空間をアクセスできれば、CPUとGPUのメモリ間のデータのコピーは不要で、単にポインタを渡して、データがどこにあるかだけを教えてやればよい。