この項目では、並列コンピューティングのフレームワークについて説明しています。旧称OpenCLの暗号化ライブラリについては「Botan」をご覧ください。
OpenCL
作者Apple
開発元Khronos Group
最新版3.0.14[1][2] / 2023年4月17日 (13か月前) (2023-04-17)
対応OSクロスプラットフォーム
種別API
ライセンスロイヤリティフリー
公式サイトwww.khronos.org/opencl
OpenCL(オープンシーエル、英: Open Computing Language)は、マルチコアCPUやGPU、Cellプロセッサ、DSPなどによる異種混在の計算資源(ヘテロジニアス環境、ヘテロジニアス・コンピューティング、英: Heterogeneous)を利用した並列コンピューティングのためのクロスプラットフォームなAPIである。主な用途は科学技術計算や画像処理に代表される高性能計算のためのアプリケーションソフトウェアの高速化(ハードウェアアクセラレーション)であり、シミュレーション可視化に用いるリアルタイム3次元コンピュータグラフィックスAPIとの連携も拡張機能として標準化されている。スーパーコンピュータやサーバ、ワークステーションやパーソナルコンピュータのほか、携帯機器などでの利用も想定されており、組み込みシステム向けに必要条件を下げたOpenCL Embedded Profileが存在する。 OpenCLの仕様はAppleによって提案されたのち[3]、標準化団体クロノス・グループの作業部会OpenCL Working Group(旧Compute Working Group)によって策定されている。仕様はロイヤリティフリーなオープン標準として公開されており、仕様に基づいたフレームワークの実装はサードパーティーによって行われる。ただし、実装されたフレームワークに対して許諾される商標ライセンスに必要な仕様一致性テストには、'nominal fee'(名目上の手数料)が必要である[4]。 OpenCLには次のような特徴がある。
仕様
特徴
CPU(CL_DEVICE_TYPE_CPU)、GPU(CL_DEVICE_TYPE_GPU)、およびCell/FPGA/Xeon Phi[5]など(CL_DEVICE_TYPE_ACCELERATOR)の各種計算資源のサポート
C言語(ISO C99規格)をベースにしたOpenCL C、あるいはC++言語(ISO C++14規格)をベースにしたOpenCL C++プログラミング言語によるカーネル記述
組み込みのベクトル型およびベクトル演算のサポート(float2型、float4型などや、Swizzle演算など)
オンラインのOpenCL Cコンパイラ
SPIR
データ並列およびタスク並列のプログラミングモデルのサポート
同期ポイント以外での内容の一貫性 (consistency) を保証しない、緩和型一貫性共有メモリモデル (relaxed-consistency shared memory model)