もっと知りたい! 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の高速化は三段構えで用意されているのだ。
この特集の記事
- Macのバックアップ、Time Machineで始めよう!
- もふもふしたい! Snow Leopardの赤ちゃんを激写
- 18年越しの大改修! Snow LeopardのQuickTime X
- マルチコア時代の新機軸! Snow LeopardのGCD
- やっぱりスゴい! Snow Leopardの「64bit対応」
- 一挙30連発! 画像で見るSnow Leopard新機能
- Mac OS X「Snow Leopard」インストール完璧ガイド










