このページの本文へ

もっと知りたい! Snow Leopard 第5回

Snow Leopardの深層・その3

GPUをフル活用する、Snow Leopardの「OpenCL」

2009年09月04日 19時00分更新

文● 千種菊里

  • この記事をはてなブックマークに追加
  • 本文印刷

OpenCLの仕組み

 OpenCLはベンダーに依存しない、異種プロセッサーに対する計算を実行するためのフレームワークである。

 OpenCLは通常の「C」でGPUに依頼したい処理を記述する。この記述されたコードは実行時に、その環境にあるGPU向けの実行バイナリーに変換される。Javaなどで使われているJIT(Just In Time)とよばれる技術だ。その後、実際にGPUで処理が始まる。

 もしOpenCLに対応したGPUがない場合は、CPUがその肩代わりをするため、性能は落ちるものの実行できないということはない。CUDAやATI Stream SDKを使った場合とは異なり、ユーザーの環境を気にせず、ひとつのプログラムをきっちり開発できればいいというわけだ。

OpenCL のコードは通常のCで記述され、アプリケーションの中に中間コードの状態で格納される。そして、実行時にOpenCLのエンジン(OpenCL Kernel)が、中間コードをそこにあるGPU向けのバイナリに最適なものにコンパイルする(JIT)。最適化されたコードがMac OS Xのカーネルを通じてGPUに届けられて処理が始まるという流れだ


著名企業がサポート

 また、GPUに依存しないだけではなく、 OpenCLはオープンな技術である。

 提唱こそアップルだが、その仕様は「クロノスグループ」と呼ばれる標準化団体にて管理される。この標準化に参加するのは、NVIDIAやAMD(ATI)、IntelといったGPUベンダーだけではない。ARM、IBM、Freescale Semiconductor、Motorola、Qualcomm、Texas Instrumentsといった組み込み向けのプロセッサベンダーやハードウェアベンダー、SAMSUNG、Ericsson、Nokiaといった携帯電話ベンダーなどなど、多数の企業や大学など研究機関が参加している。

著名企業がOpenCLのワーキンググループに参加している。GPGPU分野でのOpenCLの普及が期待されるだろう。下記のアップルの技術資料より引用

 3Dグラフィックスの標準仕様である「OpenGL」には、iPhoneでも採用している「OpenGL ES」という組み込み向けのサブセットがある。同じようにOpenCLにも「OpenCL Embeded Profile」というサブセットが存在する。

 この OpenCLは、昨年12月に正式版のOpenCL 1.0の仕様を公開しており、アップルだけではなく多くのベンダーがOpenCLをサポートするだろう。

 もちろん、Snow Leopardが現実の実装のトップバッターであることは疑いがないが、それ以外の環境でも、例えばiPhoneのような携帯電話や、AppleTVのようなセットトップボックス、Linuxを使ったあらゆるデバイスでも採用されることが期待される。

 64bit対応がこれまでのCPUの制約緩和を、Grand Central Dispatchが一般的な処理の並列化/高速化を狙ってるとするなら、OpenCLは特定用途での高速化を狙うものだ。

 何もしなくても64bit対応のために速くなり、Grand Central Dispatchに対応することで諸々の処理が並列化され、そしてエンコーディングなどの一部の処理ではそれを得意とするOpenCLが受け持つ。

 Snow Leopardの高速化は三段構えで用意されているのだ。

カテゴリートップへ

この連載の記事

ASCII.jp RSS2.0 配信中