OpenCL
[Wikipedia|▼Menu]
.mw-parser-output .hatnote{margin:0.5em 0;padding:3px 2em;background-color:transparent;border-bottom:1px solid #a2a9b1;font-size:90%}

この項目では、並列コンピューティングのフレームワークについて説明しています。旧称OpenCLの暗号化ライブラリについては「Botan」をご覧ください。

OpenCL
作者Apple
開発元Khronos Group

最新版3.0.14[1][2] / 2023年4月17日 (12か月前) (2023-04-17)
対応OSクロスプラットフォーム
種別API
ライセンスロイヤリティフリー
公式サイトwww.khronos.org/opencl
www.khronos.org/webcl
テンプレートを表示

OpenCL(オープンシーエル、: Open Computing Language)は、マルチコアCPUGPUCellプロセッサ、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(英語版)およびSPIR-V中間表現のサポート (SPIR 1.2/2.0 for OpenCL 1.2/2.0, SPIR-V 1.0 for OpenCL 2.1)

データ並列およびタスク並列のプログラミングモデルのサポート

同期ポイント以外での内容の一貫性 (consistency) を保証しない、緩和型一貫性共有メモリモデル (relaxed-consistency shared memory model)

同期ポイントおよびOpenCLアトミック操作でのホスト・デバイス間のメモリ一貫性を保証する共有仮想メモリ (shared virtual memory: SVM, OpenCL 2.0)[6]

IEEE 754準拠の単精度浮動小数点数(float型)演算のサポート

ポインタ渡しおよびfloat型との相互変換関数経由でのアクセスに限定されるIEEE 754-2008準拠の半精度浮動小数点数(half型)

OpenCL 1.0においては、half型の直接演算は拡張 (cl_khr_fp16) による任意サポートに留まる


OpenCL 1.0においては、倍精度浮動小数点数(double型)は拡張 (cl_khr_fp64) による任意サポートに留まる


1次元/2次元/3次元のイメージオブジェクトのサポート(1次元イメージはOpenCL 1.2以降[7]

OpenGLおよびOpenGL ESバッファテクスチャ、レンダーバッファとの連携(cl_gl.h、OpenCL 1.0以降の拡張[8]

EGL(英語版)のイメージ、ディスプレイ、同期オブジェクトとの連携(cl_egl.h、OpenCL 1.2以降の拡張)

Direct3D 10のバッファおよびテクスチャとの連携(cl_khr_d3d10_sharing; cl_d3d10.h、OpenCL 1.1以降の拡張)

Direct3D 11のバッファおよびテクスチャとの連携(cl_khr_d3d11_sharing; cl_d3d11.h、OpenCL 1.2以降の拡張)


次ページ
記事の検索
おまかせリスト
▼オプションを表示
ブックマーク登録
mixiチェック!
Twitterに投稿
オプション/リンク一覧
話題のニュース
列車運行情報
暇つぶしWikipedia

Size:95 KB
出典: フリー百科事典『ウィキペディア(Wikipedia)
担当:undef