今週末の28日、米国のApple Storeではブラックフライデーのイベントが開催されるそうです。日本はどうなのよとサイトをチェックしましたが、11月25日時点では特に変化なし。まさか、毎年恒例の福袋までなにもないことはないでしょうから、大人しく待つことにします。

さて、今回は「OpenCL」について。ご存知、来年リリース予定のSnow LeopardでサポートされるGPGPU技術だ。先日、規格のとりまとめを行うKhronosグループがOpenCLの進捗状況を公開したので、その資料をもとにOpenCLがもたらす影響について考えてみたい。

OpenCLの進捗状況

15日から21日にかけ、米オースティンで開催されたハイパフォーマンスコンピューティング関連のイベント「SC08」。Khronosグループはそこで説明会を開催、OpenCLの進捗状況を説明した。SC08開催前の時点では、NDAに違反しない情報はこちらにある文章のみという状況であり、文脈からGPGPU技術であることを推測しているに過ぎなかったが、ようやく具体的な内容が判明したことになる。その後公開されたPDFから読み取れる、全体像に関係ありそうな事項は以下のとおりだ。

  • ロイヤリティーフリーかつ特定ベンダーに依存しない、ヘテロジニアスな構成向けにCPUとGPUのパワーを活用したプログラミング環境を提供

  • OpenCLの草案はAppleを中心にAMDとIntel、NVIDIAほか数社により作成され、6月にKhronos宛に提出。その後作業部会が結成され草案の見直しを行い、現在は加盟企業による承認待ちの状態

  • OpenCL作業部会には、Khronosのほか26社 - Intel、AMD、NVIDIA、ARM、NOKIAなど - が参加

  • GPU以外のデバイスにも対応する。組み込み / モバイル用途には、「OpenCL Embedded Profile」の策定が検討されている

OpenCL作業部会に参加している企業 (SC08でKhronosが使用した資料から抜粋)

OpenCLの仕様

そのOpenCLの仕様だが、Snow Leopard発表時点より情報量は格段に増加した。C言語ベース (ISO C99準拠) のプログラミング言語で各種関数を利用する、という形態は以前から知られていたが、メモリモデルが示されるなど、実装のあり方をイメージしやすくなっているのだ。

そのメモリモデルの概念図から判断すると、「Work-Item」と命名されたプログラムの最小単位 (スレッド?) はそれぞれ専用のローカルメモリ領域を持ち、それが1つのグループ「Compute Unit」という単位で管理されることがわかる。そのCompute Unitには、専属のローカルメモリが割り当てられ、かつ他のユニットとの間でキャッシュ領域を共有する、という構造だ。

これをCUDAのメモリモデルと比較してみると、全体的な構造がよく似ていることに気付く。草案策定時からNVIDIAが関与していることもあわせると、CUDAのアーキテクチャが多少なりとも影響しているのであろうことが推測される。

しかし、CUDAではテクスチャメモリ (グラフィックドライバにより確保された描画用メモリ領域) を使用している部分が、汎用のGlobal Memoryに置き換わっている。メモリモデルだけでは断定できないが、GPU以外のチップでも動作可能なデバイス非依存の性質を表しているとも言えるはずだ。

OpenCLのメモリモデル (SC08でKhronosが使用した資料から抜粋)

OpenGLとの密な関係~次期iPhone OSの姿も垣間見える?~

OpenGLとの連携も、今回正式に公開された機能の1つ。発表によれば、OpenCLはOpenGLとの間でリソース (テクスチャなど各種データ) の共有が可能になる。たとえば、OpenGLで描く図形へOpenCLによるフィルタ処理を加える場合、メモリ領域へ図形データをコピーする必要はなく、そのままOpenGLのメモリ領域へOpenCLからアクセスできる。その反対に、OpenCLで加工したイメージをOpenGLの機能で描画することも可能だ。

iPhone 3Gユーザでもある筆者としては、「OpenGL ES」との関係にも注目したい。OpenCLでは、組み込み / モバイルデバイス向けに軽量化した「OpenCL Embedded Profile」の策定も進められているが、同じく組み込み / モバイルデバイス向けサブセットの「OpenGL ES」との連携が考慮されているというのだ。現行iPhone OSにはOpenGL ES 1.1が採用されていることから、8月に仕様が公開された「OpenGL ES 2.0」を受け、次期iPhone OSではOpenGL ES 2.0 + OpenCLでアクセラレーション、という可能性も考えられる。今後の動向に注目しよう。

次期iPhone OSは、OpenGL ES + OpenCLでアクセラレーションされるかも? (画面はOpenGL ES 1.1の機能を利用したiPhoneアプリ「Space Buster Lite