Round Stone

石丸技術士事務所のブログ

技術

オープンソースGPGPU

Hot Chipsというマイクロプロセッサ関連のシンポジウムで、オープンソースのGPGPUが発表されたようです。

Open Source GPU Debuts - EE Times

GPGPUとは

GPGPUは"General-purpose computing on graphics processing units"の略です。GPGPUはPCやスマートフォンの画面表示などに利用される演算装置(集積回路)です。GPUが能力を最大限に発揮するのは、ゲームなどで使われるリアルタイム3Dグラフィクス処理ですが、そのような用途は一時的であり、スマートフォンで常に必要ではありません。それでは、せっかくの演算能力がもったいないということで、普通のアプリケーションでもGPUの演算能力を有効に活用しようと考え出されたのがGPGPUです。

igame
photo credit: DSC05901 via photopin (license)

GPGPUはどこに入っているのか

最近はCPUと同じICチップに格納されています。例えばiPhone6ではApple A8というICチップにImagination Technologies社のGPGPUが格納されています。「オープンソースのGPGPU」と聞くと、Apple A8に入っているような商用製品と同じ機能をもったGPGPUの設計データが公開されたということが期待されます。
gpuphoto credit: NVS 285 chipset via photopin (license)

MIAOW GPGPU

今回発表されたオープンソースのGPGPUは、MIAOWです。既にソースコードなどが公開されています。ライセンスは修正BSDライセンスです。開発期間は36ヶ月、12人で開発したそうです。

GPGPUの設計と聞くと、次のような点が気になります。

  • グラフィクス機能の実装(ラスタライザやテクスチャユニット)
  • シェーダコンパイラ
  • APIサポート(OpenGL, DirectX)

これら疑問点は、MIAOWのサイトを見ると解決しました。

強調しておかないといけない点は、MIAOWはGPUの演算ユニットだということだ。つまり、グラフィクス出力機能やメモリーインターフェース、システムバスなどは含んでいない。これらの機能は開発可能だし、外部からの提供も歓迎する。しかし、MIAOWは研究用のツールとして作られたので、ベンチマークや実験を行う場合には必ずしも必要ではない。

http://www.miaowgpu.org/

つまり、MIAOWのみで完全なGPGPUを構成することはできないようです(少なくとも現時点では)。

3DグラフィクスAPIとして有名なOpenGL ESで言えば、Vertex ShaderとFragment Shader部分に対応する機能のみが現在公開されているようです。

OpenGL ESブロック図

OpenGL ESブロック図

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を実際に製品に利用した場合には特許やライセンスといった権利関係を含め、いろいろな問題をクリアする必要があることが想像できます。

投稿者プロフィール

round_stone
round_stone
石丸技術士事務所: 石丸顕二(技術士 情報工学部門)

-技術
-,