OpenCL
OpenCL実行環境であるオペレーティングシステム上には、Installable Client Driver (ICD) Loaderという仕組みにより、複数のベンダーによるOpenCL実装を混在させることができる(cl_khr_icd)。各ベンダーのOpenCL実装は「プラットフォーム」として抽象化され、OpenCL APIを通じて列挙・選択することができる。
またOpenCLはカーネルコードの実行ハードウェアを「デバイス」として抽象化する。各OpenCLプラットフォームは複数のOpenCLデバイスを持つことができ、OpenCL APIを通じて列挙・選択できる。
OpenCL対応のプロファイラーが各社からリリースされている。従来の非並列プログラムと比較するとOpenCLプログラムはデバッグやチューニングが難しく、プロファイラーは性能ボトルネックの特定やコード改善に有効なツールである。
マルチコアCPU対応のプロファイラーだが、OpenCLのほか、DirectXにも対応している。
OpenCL CのサブセットをVulkanのコンピュートシェーダーとして実行できるようにするためのコンパイラ。
OpenCLを正式サポートしていないAndroidにおいてOpenCLアプリケーションの移植を促進するために開発が始まった。clspvはいくつかのAndroidアプリケーションにて利用されている。
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以降)
OpenGLおよびOpenGL ESのバッファ、テクスチャ、レンダーバッファとの連携(cl_gl.h、OpenCL 1.0以降の拡張)
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以降の拡張)
DirectX 9のメディアサーフェイス連携(cl_khr_dx9_media_sharing; cl_dx9_media_sharing.h、OpenCL 1.2以降の拡張)