2009年05月28日

OpenCL【オープンシーエル】

【正式名称】Open Computing Language
【属性】アプリケーションプログラミングインターフェイス
【開発・提供】Khronos Group(クロノスグループ)
【公式サイト】
Created Date: 09/05/28
Modified Date:
【解説】
標準化団体Khronos Groupより仕様策定、標準化、開発支援等が行われている並列演算のための標準規格、及びAPI(Application Programming Interface)。正式名称は「Open Computing Language」。C言語をベースとしたオープンスタンダードとして2008年6月にAppleによりドラフト仕様が提案され、同年12月9日(米国時間)付にてVer.1.0(OpenCL 1.0)の仕様公開がアナウンスされている(Appleによって主導されている「OpenCL」は、Intel、IBM、NVIDIA、AMD等から構成されるワーキンググループの協賛を受けつつ、仕様策定、承認作業等が行われている)。クロスプラットフォームに対応し、ロイヤリティフリーにて利用可能。

ハードウェアサポートの拡充、及びGPU処理能力の広範な活用(GPUをグラフィックス関連以外の演算処理にも転用)等を主目的とした標準規格として位置付けられており、CPU、GPU各々の並列環境を抽象化しつつ、ソフトウェアデベロッパ等に対してプログラムを構築する際に統一して扱える手法等が提供される事となる(プロセッサのマルチコア化やGPUの広範な活用、或いはGPGPUの興起等、標準的な並列プログラミングAPIに対するニーズの高まりに応えるべくした標準規格として策定されている)。

また、マルチコアCPU、GPU、Cell、DSP(Digital Signal Processor)等の異種アーキテクチャプロセッサ上、或いはそれらを組み合わせた並列プロセッサ混在環境等において利用する事が可能となっており、データ並列、タスク並列の計算モデル等がサポートされる事となる(各々のCPUを特定した並列処理を定義するAPIやプログラム言語等が含まれている)。

Mac OS Xにおいては7度目のメジャーリリースに相当する次世代オペレーティングシステム「Mac OS X 10.6 Snow Leopard」より実装が予定されており、その他にも「OpenCL」には、
  • 並列処理向け拡張機能を有する「C99」プログラム言語サブセット
  • 広範なヘテロジニアスプロセッサに対応したデータコーディネーション、及びタスクベースの並列処理用API
  • 「IEEE 754」に基づく演算条件
  • 「OpenGL」「OpenGL ES(OpenGL for Embedded Systems)」等、各種グラフィックスAPIとの効果的なインターオペラビリティ(相互運用性。Khronos Groupはグラフィックスライブラリ「OpenGL」の策定にも携わっている)
等の特徴が示されている(「OpenCL」ではC言語で記述されたプログラムからライブラリを呼び出す事によって並列処理に対応し、当該プログラムがCPU用にコンパイルされればCPU用のオブジェクトコードが、GPU用にコンパイルされればGPU用のオブジェクトコードが各々生成される事となる)。

尚、「OpenCL」には(自身に内包する形にて)データ精度等が緩和された組み込み、モバイル機器向けのサブセット(プロファイル)として「OpenCL EP(OpenCL Embedded Profile)」も定義されており、「OpenCL」を批准したベンダのリストにはプロセッサベンダやGPUベンダ、コンパイラメーカの他にもARM、Broadcom、Ericsson、Freescale、Samsung、Texas Instruments等、組み込み系のベンダも名を連ねている。

posted by Flipper at 23:36 | 【O】