Hot Chipsというマイクロプロセッサ関連のシンポジウムで、オープンソースのGPGPUが発表されました。
GPGPUとは
GPGPUは”General-purpose computing on graphics processing units”の略です。GPGPUはPCやスマートフォンの画面表示などに利用されるディスプレイ装置(集積回路)です。GPUが能力を最大限に発揮するのは、ゲームなどで使われるリアルタイム3Dグラフィクス処理ですが、そのような用途は一時的なもので、スマートフォンで常に必要ではありません。それでは、せっかくの演算能力がもったいないということで、普通のアプリケーションでもGPUの演算能力を有効に活用しようと考え出されたのがGPGPUです。
GPGPUはどこに入っているのか
最近はCPUと同じICチップに格納されています。例えばiPhone6ではApple A8というICチップにImagination Technologies社のGPGPUが格納されています。「オープンソースのGPGPU」と聞くと、Apple A8に入っているような機能をもったGPGPUの設計データが公開されたということが期待されます。
MIAOW GPGPU
今回発表されたオープンソースのGPGPUは、MIAOWです。既にソースコードなどが公開されています。ライセンスは修正BSDライセンスです。開発期間は36ヶ月、12人で開発したそうです。
GPGPUの設計と聞くと、次のような機能がどうなっているかが気になります。
- グラフィクス機能の実装(ラスタライザやテクスチャユニット)
- シェーダコンパイラ
- APIサポート(OpenGL, DirectX)
これら疑問点は、MIAOWのサイトを見ると解決しました。
強調しておかないといけない点は、MIAOWはGPUの演算ユニットだということだ。つまり、グラフィクス出力機能やメモリーインターフェース、システムバスなどは含んでいない。これらの機能は開発可能だし、外部からの提供も歓迎する。しかし、MIAOWは研究用のツールとして作られたので、ベンチマークや実験を行う場合には必ずしも必要ではない。
MIAOW GPU
つまり、MIAOWのみで完全なGPGPUを構成することはできないようです(少なくとも現時点では)。
3DグラフィクスAPIとして有名なOpenGL ESで言えば、Vertex ShaderとFragment Shader部分に対応する機能のみが現在公開されているようです。
OpenGL ES Common Profile Specificationより引用:
OpenGL ES Common Profile SpecificationVersion 2.0.25 (Full Specification) (November 2, 2010) P.13
また演算ユニット部分は、具体的にはAMD社が公開したSouthern Islands Series Instruction Set Architectureというプロセッサの命令セットを実装したもののようです。
設計データの中身
ソースコード(RTL)を少し覗いてみました。設計言語はVerilog-HDLが使用されています。VerilogのバージョンはVerilog2001といった所で、SystemVerilogの記述は見当たりません。テストベンチのソースコードも格納されています。CPU命令セットの検証と同様のテスト環境が格納されていました。
まとめ
ラスタライザやテクスチャユニットの設計データを含んでいないため、MIAOWだけでオリジナルの3D CGシステムを構築するのは難しそうです。また、EE Timesの記事でも触れられていますが、MIAOWを実際に製品に利用した場合には特許やライセンスといった権利関係を含め、いろいろな問題をクリアする必要があることが予想されます。