この項目では、並列コンピューティングのフレームワークについて説明しています。旧称OpenCLの暗号化ライブラリについては「Botan 」をご覧ください。
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には次のような特徴がある。
グラフィックスAPIとの関連性および相互運用性
OpenCL類似技術にNVIDIA のCUDA (後述)が存在するが、OpenCLにはCUDA同様に、3DグラフィックスAPI であるOpenGL(クロスプラットフォーム )およびDirect3D(Windows プラットフォーム専用)との相互運用性(Interoperability )がAPIレベルで確保されている。
なお、OpenCLの動作ターゲットとしての用件を満たしたGPU(主にDirectX 10世代以上の統合型シェーダーアーキテクチャ を採用したGPU)で使用できるDirect3D API(Direct3D 10およびDirect3D 11)との相互運用機能は、クロノスが管理しているOpenCL API公式拡張でサポートされるが、旧来のDirect3D 9との相互運用機能は、OpenCL 2.0時点でもベンダーごとの拡張機能依存となっている(cl_d3d9_ext.h)。
OpenCLでのhalf/double型のサポート状況は、CUDAなどのほかのAPIとよく似ており、サポートされるかどうかはハードウェアデバイス次第である[ 9] 。また、OpenGL/Direct3Dでは浮動小数点テクスチャすなわちデータストレージのフォーマットとしてFP32形式のほかにFP16形式を選択できるが、通例GPUが得意とする演算精度は単精度であるため、シェーダープログラム中で利用できる演算精度は一般的には単精度となり、倍精度や半精度はオプション扱いとなる[ 10] 。
OpenCLのイメージオブジェクトをサポートするデバイス (CL_DEVICE_IMAGE_SUPPORT) では、バイリニアフィルタリングなどの高速なハードウェア機能を利用することもできる[ 11] 。
以下にOpenGL関連の拡張を列挙する。
cl_apple_gl_sharing, cl_khr_gl_sharing: OpenCL 1.0の拡張[ 12] 。
cl_khr_gl_event: OpenCL 1.2の拡張[ 13] 。
cl_khr_egl_image, cl_khr_gl_msaa_sharing: OpenCL 2.0の拡張[ 14] [ 15] 。
プラットフォームとデバイス
OpenCL実行環境であるオペレーティングシステム上には、Installable Client Driver (ICD) Loaderという仕組みにより、複数のベンダーによるOpenCL実装を混在させることができる(cl_khr_icd)[ 16] 。各ベンダーのOpenCL実装は「プラットフォーム」として抽象化され、OpenCL APIを通じて列挙・選択することができる。
またOpenCLはカーネルコードの実行ハードウェアを「デバイス」として抽象化する。各OpenCLプラットフォームは複数のOpenCLデバイスを持つことができ、OpenCL APIを通じて列挙・選択できる。
プログラミングモデル
OpenCLのプログラム(アプリケーションソフトウェア )は、GLSL を利用したOpenGLプログラムとほぼ同じ要領で開発することができ、OpenCL C/C++を利用したデバイスコード(カーネルコード)と、OpenCL APIを利用したホストコードを別々に記述する[ 17] 。カーネルコードのコンパイルは、clCreateProgramWithSource()関数経由でデバイスドライバーが実行する。CUDAプログラムのような専用オフライン コンパイラ(nvcc)を必要としないため、様々なプラットフォームへの展開が容易となることが利点である。ただしカーネルコードの初回の実行時コンパイル(オンライン コンパイル)に時間がかかるなどのデメリットも存在する。この点に関しては、実運用時にはclCreateProgramWithSource()関数によるオンライン コンパイルは行なわず、clGetProgramInfo()関数とclCreateProgramWithBinary()関数を用いてコンパイル済みバイナリからプログラムオブジェクトを生成する方法もある[ 18] [ 19] [ 20] [ 21] が、ベンダーごとのOpenCLバイナリ間における互換性は保証されない。デバイスドライバーにカーネル記述言語のオンラインコンパイラの役割を持たせることで、ベンダー独自の拡張を実装しやすくなるが、コンパイラ品質はデバイスドライバーの品質に左右される。
なお、OpenCL 1.2、2.0、2.1、2.2では、SPIR (英語版 ) およびSPIR-Vと呼ばれる中間表現 (中間言語 、バイトコード )をサポートすることにより、事前コンパイルしたベンダーに依存しないカーネルコードを実行することができるようになる[ 22] 。ただし、SPIR 1.2およびSPIR 2.0はOpenCL 1.2およびOpenCL 2.0の拡張機能(cl_khr_spir[ 23] )となっており、サポート必須の機能ではない。一方、SPIR-VはOpenCL 2.1/2.2のコア機能となる[ 24] 。OpenCL 2.1ではSPIR-V 1.0を、OpenCL 2.2ではSPIR-V 1.0/1.1/1.2をサポートするが、OpenCL 3.0ではSPIR-Vはコア機能から外れ、サポート状況に関しては実行時の問い合わせが必要となった[ 25] 。
歴史
2008年6月10日(日本時間)のWorldwide Developers Conference (WWDC 2008) において、Mac OS X Snow Leopard (v10.5 Leopard の次期メジャーバージョンとされる)に搭載される予定の技術の1つとして初めて発表された[ 26] 。
標準化団体クロノス・グループ の2008年6月16日に発足した作業部会Compute Working Group (CWG) において、Apple によってOpenCLの仕様草案が提案された[ 3] 。CWGはGPUとCPUのヘテロジニアス(異種混在)な計算技術のロイヤリティフリー な標準化を目的としており、発足時点では3Dlabs 、AMD 、Apple、ARM 、Codeplay 、エリクソン 、フリースケール・セミコンダクタ 、Graphic Remedy 、IBM 、イマジネーション・テクノロジーズ (英語版 ) 、インテル 、ノキア 、NVIDIA 、モトローラ 、QNX 、クアルコム 、サムスン 、Seaweed 、テキサス・インスツルメンツ 、スウェーデン・ウメオ大学 が参加している。
2008年8月のSIGGRAPH 2008および同年11月のSupercomputing 2008 (SC08) において、仕様策定の進捗状況が発表され、同時期にCompute Working Group は名称をOpenCL Working Group と改められ、新たにアクティビジョン・ブリザード 、バルコ 、ブロードコム 、エレクトロニック・アーツ 、エイチアイ 、ケストレル研究所 、Movidia 、RapidMind (英語版 ) 、TAKUMIが参加している。11月10日にはRapidMindが自社の並列コンピューティング開発環境においてOpenCLを採用すると発表した[ 27] 。
2008年 12月9日 のSIGGRAPH Asia 2008において、正式版となるOpenCL 1.0の仕様が発表された[ 28] 。またほぼ同時期に、AMDとNVIDIAはそれぞれ自社のGPGPU 技術であるATI Stream およびCUDA においてOpenCL 1.0をサポートすると発表した[ 29] [ 30] 。OpenCL 1.0対応の最初のプラットフォームとして、Mac OS X Snow Leopard が2009年 8月28日 にリリースされた。
2010年 6月14日 、OpenCL 1.1を正式発表[ 31] 。float3型の追加、clSetKernelArg()関数以外のスレッドセーフ化[ 32] など。
2011年 11月15日 、OpenCL 1.2を正式発表[ 33] 。分割コンパイル&リンク対応、SubDeviceの追加、SPIR 1.2拡張機能、3Dイメージの書き込み拡張機能[ 34] など。
2013年 7月22日 、OpenCL 2.0を正式発表[ 35] 。read_write修飾子[ 36] 、共有仮想メモリ (Shared Virtual Memory) や動的並列処理 (Dynamic Parallelism) 対応など。
2015年 11月16日 、OpenCL 2.1を正式発表[ 37] 。SPIR-V中間言語 によるVulkan API (OpenGL Next Generation, glNext) とのプログラミング基盤共通化など。2015年3月3日の暫定仕様の発表時点でカーネル記述言語へのC++14 サブセット導入も予定されていた[ 38] が、OpenCL 2.1正式仕様の発表とともに、OpenCL C++のリリースは早くて2016年半ばとアナウンスされた。
2017年 5月16日 、OpenCL 2.2を正式発表[ 39] 。2016年4月18日の暫定仕様の発表時点でアナウンスされていた、OpenCL C++言語、SYCL 2.2フレームワーク[ 40] に加えて、中間表現SPIR-V 1.2などが導入された。
2018年 6月、AppleはWWDC で、macOS Mojave 以降ではOpenCLを非推奨とすることを発表し、代替としてMetal を使うことを推奨している[ 41] [ 42] 。
2020年 4月27日 、OpenCL 3.0暫定仕様が公開された[ 43] 。OpenCLロードマップの再調整に伴い、バージョン1.2より後発の機能がオプションに引き下げられる。オプションの言語機能を照会するためのマクロが提供される予定。
2020年 9月30日 、OpenCL 3.0最終仕様が公開された[ 44] 。
SYCL
SYCLはKhronos Groupが策定している、標準C++を使って「単一ソース」でヘテロジニアスプロセッサ向けのコードを記述することを可能にする抽象化レイヤーである[ 45] [ 46] 。従来はOpenCL C/C++により記述したカーネル(デバイスコード)のコンパイルやロードを、OpenCL APIを使って実行するための処理をホストコード側に逐一記述する必要があったが、SYCLを利用することで、単一の言語を使って同一ソース内に記述できるようになる。コンセプトとしては、CUDA C++やC++ AMP に似ている。SYCLの拡張としてIntelのData Parallel C++ (DPC++) も存在する。
SYCL 2020より前はOpenCL仕様の上に構築されており、GPUバックエンドもOpenCLのみを前提としていた[ 47] 。SYCL 2020以降はOpenCLを介さないバックエンドも考慮されるようになった[ 47] [ 48] 。
SYCLの実装には以下が存在する:
Intel oneAPI DPC++ Compiler[ 49]
オープンソース。LLVMの派生であり[ 50] 上流にマージ予定となっている[ 51] 。
バックエンドはCPUおよびOpenCL+SPIR-V。またCodeplayによりCUDA+PTXバックエンドも追加された[ 52] 。
hipSYCL[ 53]
オープンソース。バックエンドにはOpenMP (CPU向け)、HIP/ROCm (AMD GPU向け)、CUDA (NVIDIA GPU向け) がある[ 54] 。またIntel GPUに向けてSYCLバックエンドも追加予定となっている[ 54] 。
ComputeCpp (Codeplay (英語版 ) )[ 55] [ 56]
プロプライエタリ。
またXilinxの管理するtriSYCLも存在した[ 55] が不完全なため非推奨となっており[ 57] 、代わりにIntelのLLVM実装に基づいたXilinxバックエンド実装[ 58] が開発されている。その他、オープンソースの簡易実装のsycl-gtxもあった[ 55] 。
関連技術
SASS
NVIDIAのGPUで使われるハードウェア依存の低級アセンブリ言語[ 59] 。NVIDIA Nsight開発環境がSASSレベルでのデバッグに対応している[ 59] 。SASSのアセンブラは、asfermi[ 60] やMaxAs[ 61] などがある。SASS言語で書かれた例としては、Nervana GPUがある[ 62] [ 63] 。
PTX (Parallel Thread Execution )
NVIDIAのGPU向けのハードウェア非依存な擬似アセンブリ言語[ 64] 。PTXのアセンブラは、ptxasがある[ 64] 。asm文によって、CUDAやOpenCLのコードにPTXのコードを埋め込むことも可能[ 65] [ 66] 。
LLVM/ClangにはOpenCLのフロントエンド[ 67] およびPTXのバックエンド[ 68] が含まれており、OpenCLからLLVM IRを通してPTXへと変換し、CUDA Driver APIで実行したり[ 69] 、ptxasでSASSへと変換することが可能[ 69] 。
AMD Intermediate Language (AMD IL)
AMDのGPU向けのハードウェア非依存な擬似アセンブリ言語[ 70] 。コンパイルは、CAL (Compute Abstraction Layer) APIのcalclCompile関数で行なう[ 71] 。asm文によって、OpenCLのコードにAMD ILのコードを埋め込むことも可能 [要出典 ] 。なおAMD ILのサブセットはローレベルグラフィックスAPIであるMantle でも利用されていた[ 72] 。
AMD Instruction Set Architecture (AMD ISA)
AMDのGPUで使われるハードウェア依存の低級アセンブリ言語。LLVMがTeraScale (英語版 ) (VLIW4/5) およびGCN アーキテクチャに対応するR600バックエンドを持っており[ 73] [ 74] 、LLVM/ClangでOpenCLからAMD ISAアセンブリへと変換したり、AMD ISAアセンブリからllvm-asでバイナリ化したりすることが可能。アセンブルしたバイナリはOpenCL APIのclCreateProgramWithBinary関数で実行する。
Intel GEN Assembly
Intelの内蔵GPU用のアセンブリであり、OpenCLコードのデバッグに使われている[ 75] 。Intel-gpu-tools 1.4以降にはIntelの第四世代GPU以降に向けたオープンソースのアセンブラー「intel-gen4asm」が含まれている[ 76] 。また、SYCLの実装系の一つIntel oneAPI DPC++ Compilerは低レベルラッパーのExplicit SIMD Programming Extensionを備えている[ 77] 。
TGSI (Tungsten Graphics Shader Infrastructure)
オープンソースなハードウェア非依存の中間言語 [ 78] 。オープンソースGPUドライバーであるMesa 3D /Gallium3D の中間表現形式として使われている。2013年現在、Gallium3D OpenCL実装のために、LLVMのTGSIバックエンドが開発中となっている[ 79] 。GPGPUだけでなく、グラフィックスにも対応している。
SPIR (英語版 ) (Standard Portable Intermediate Representation)
クロノス・グループ によって、OpenCLのために開発された中間言語。OpenCL 1.2とともにSPIR 1.2が、そしてOpenCL 2.0とともにSPIR 2.0が策定された。OpenCL 2.1およびVulkan とともに策定されるSPIR-Vでは、GPGPUだけでなく、グラフィックスにも対応している[ 80] 。
HSAIL
HSA Foundationで標準化されたヘテロジニアスシステムアーキテクチャ (英語版 ) (HSA) 向けのハードウェア非依存な中間言語。AMDやLLVMのOpenCL実装がHSAIL中間表現形式の出力に対応している[ 81] 。異種コア間のスケジューリングを前提としており、グラフィックスには非対応[ 82] 。
OpenCL開発環境
OpenCLを使用したクライアント プログラムを開発するための代表的なソフトウェア開発キット (SDK)として、主に各ハードウェア ベンダーから下記のSDKが提供されている。
NVIDIA CUDA Toolkit
Windows, Linux, macOS 用が提供されている。"CUDA Toolkit 7.5"時点でOpenCL 1.2に対応している[ 83] [ 84] [ 85] 。
かつてNVIDIAのOpenCL SDKは"NVIDIA GPU Computing SDK"に含まれていて、CUDA SDKとは独立していたが、CUDA 5.0からはCUDA Toolkitにすべて含まれるようになった。以前のバージョンのGPU Computing SDKはアーカイブとして公開されている[ 86] [ 87] 。
AMD APP SDK
AMD Stream SDKの後継。Windows, Linux用が提供されていた。AMD APP SDK 3.0の時点でOpenCL 2.0、SPIR (英語版 ) 1.2に対応していた[ 88] [ 89] [ 90] 。GPUOpen (英語版 ) のGitHub サイトにて必要最低限の軽量なOCL-SDK (OCL_SDK_Light) が公開されている[ 91] [ 92] が、2017年を最後に更新されていない。
Intel SDK for OpenCL Applications
Windows および Linux 用が提供されている。開発ツールの OpenCL Tools もある。OpenCL 2.0、SPIR (英語版 ) 1.2をサポートしている[ 93] [ 94] 。IntelのICDと対応ハードウェアを搭載するAndroid環境でもOpenCLを利用することができる[ 95] [ 96] [ 97] [ 98] [ 99] 。
Intelの現行のOpenCL実装 (Neo) はマルチプラットフォームでオープンソースとなっている[ 100] 。以前はクローズドソースの古い実装 (Classic) とLLVM ベースのオープンソース実装 (Beignet) の二つが存在した[ 100] 。また、以前は統合ツールとして Intel Integrated Native Developer Experience (Intel INDE) も提供されていたが、2018年に提供終了となった[ 101] 。
Qualcomm Adreno SDK
Snapdragon 向け
ARM Mali OpenCL SDK
ARM Mali (英語版 ) を採用したSoC 向けだった。SDK v1.1時点でOpenCL 1.1に対応していた。ARM Compute Libraryに置き換えられた。
Imagination PowerVR SDK
iPhone 7 以前などで使われている PowerVR 向け
IBM OpenCL SDK
PowerPC 上の Linux に向けたもの。Cell Broadband Engine (Cell/B.E.) にも対応していた[ 102] [ 103] 。
OpenCL for macOS
macOSの標準機能としてOpenCLをサポートしている[ 104] 。OpenCL 1.2までをサポートするが、対応バージョンはハードウェアにもよる[ 105] 。macOS Mojave以降では非推奨である。
Intel FPGA SDK for OpenCL
旧Altera SDK for OpenCL。FPGA 上で動作するOpenCLプログラムを開発することができる。x86 プロセッサ対応のエミュレータ も提供されている。
Xilinx Vitis
FPGA 上で動作するOpenCLプログラムを開発することができる。
なお古い開発環境としてXilinx SDAccelも存在したが2019.2を最後にVitisへと統合された[ 106] [ 107] 。
LLVM /Clang
OpenCL C 2.0までのカーネルソースコードのコンパイルに対応している[ 108] 。Clang 14以降はSPIR-Vの生成にも対応している。
以前はSPIR-V出力に対応しておらず、"LLVM/SPIR-V Bi-Directional Translator"[ 109] や"LLVM-SPIRV-Backend"[ 110] が必要だった。
clspv (Google)
OpenCL CのサブセットをVulkanのコンピュートシェーダーとして実行できるようにするためのコンパイラ。
OpenCLを正式サポートしていないAndroid においてOpenCLアプリケーションの移植を促進するために開発が始まった[ 111] 。clspvはいくつかのAndroidアプリケーションにて利用されている[ 112] [ 113] 。
ANGLE (Google)
各種バックエンドによるOpenGL ES互換実装を提供するANGLE (英語版 ) では、Vulkanバックエンドとclspvを利用したOpenCLの実装も進行中である[ 114] 。
OpenCLOn12 (Microsoft)
Direct3D 12上に実装されたOpenCL 1.2 APIの互換レイヤー。
Mesa
Mesa 3D ライブラリは、OpenCLのオープンソース実装を含んでいる[ 115] 。ただしクロノスによる適合試験を通過して正式な認証を受けているわけではない。
各SDKには、標準OpenCL API用のC/C++言語用ヘッダーなどのほか、ベンダーごとに拡張された機能を使うためのライブラリなども含まれるため、ハードウェア ベンダーやOSに依存しないOpenCLプログラムを開発する場合は注意が必要となる。
OpenCLプロファイラー
OpenCL対応のプロファイラー が各社からリリースされている。従来の非並列プログラムと比較するとOpenCLプログラムはデバッグ やチューニング が難しく、プロファイラーは性能ボトルネックの特定やコード改善に有効なツールである。
Intel VTune Amplifier (有償)
マルチコアCPU対応のプロファイラーだが、OpenCL[ 116] のほか、DirectXにも対応している[ 117] 。
AMD CodeXL (無償)
CPU/GPUのデバッギング/プロファイリング用ツール。OpenCLのほか、OpenGLやDirect3D (DirectCompute) 開発にも使用できる[ 118] 。GPUOpenに移管されたが、開発終了[ 119] 。
Radeon GPU Profiler(無償)
AMD Radeon GPU用のプロファイラー[ 120] 。DirectX 12/Vulkan/OpenCL/HIPに対応している。
NVIDIA Nsight (無償)
OpenCLのほか、CUDA、Direct3D (DirectCompute)、およびOpenGLに対応している[ 121] 。
OpenCLシミュレータ/エミュレータ
GPGPU-Sim (無償)
GPUのサイクルレベルシミュレータ。CUDAおよびOpenCLに対応している。Linux専用であり、また実行にはNVIDIAドライバーが必要となる[ 122] 。
AMD OpenCL Emulator-Debugger (ocl-emu)(無償)
AMDによるOpenCLソフトウェアエミュレータのオープンソース 実装[ 123] 。2012年10月12日版において、OpenCL 1.2に対応している[ 124] 。対応OSはMicrosoft Windows XP 以降で、ビルドにMicrosoft Visual Studio 2008/2010を必要とし、また実行プラットフォームとしてAMD Accelerated Parallel Processing (AMD APP) SDKを必要とする[ 125] 。開発終了。
ラッパー
この節は更新が必要とされています。 この節には古い情報が掲載されています。編集の際に新しい情報を記事に
反映 させてください。反映後、このタグは除去してください。
(2021年3月 )
Khronos自身が正式に公開しているOpenCL APIはC/C++言語向けのヘッダーおよびC++言語用ラッパークラスのヘッダー(cl.hppおよびcl2.hpp[ 126] [ 127] )のみだが、各種言語用に下位レベルの言語バインディングや上位レベルのラッパーライブラリがオープンソースコミュニティなどによって開発されている。
ベンチマーク
LuxMark - 定番のレンダリングベンチマーク。
x264 OpenCL - Phoronix Test Suiteに含まれるベンチマークの一つ[ 129] 。
CompuBench CL
Rodinia Benchmark Suite - 多種のベンチマークがある。
OpenDwarfs
Parboil Benchmarks
PolyBench/GPU
SHOC benchmark suite
採用事例
画像処理/映像処理においては、OpenCLもしくはCUDAによるGPGPU対応が進んでいる。また、3DCGの物理演算およびレンダリングも同様である。音声処理においては、DSPによる固定小数点処理が主流のため、GPGPUはあまり使われていない [要出典 ] 。
macOSでの非推奨化
2018年6月5日、AppleはWWDC 2018でOpenGL/OpenCLの非推奨化を発表し、macOS Mojave において(サポートはまだ打ち切られないものの)OpenGL/OpenCLは非推奨APIとなった。macOSがネイティブにサポートするOpenCLのバージョンは1.2が最後となっている[ 105] 。
OpenCLの代替として推奨されているAPIはMetal であり、コンピュートシェーダー をカーネルの記述に用いる。iOS ではOpenCLはサポートされていないが、Metalを用いることでmacOS同様にGPGPUを実行することが可能となっている。
関連項目
脚注
^ The OpenCL™ Specification
^ The OpenCL™ Specification (PDF )
^ a b Khronos Launches Heterogeneous Computing Initiative 、2008年6月16日
^ OpenCL Overview December 2008 (PDF ) 、2008年12月
^ The OpenCL* Platform on Intel(R) Processors
^ The OpenCL Specification Version: 2.0; Document Revision: 29
^ Other Built-in Data Types
^ Khronos OpenCL Registry
^ Accelerating GPU computation through mixed-precision methods
^ 科学技術計算などのGPGPU用途を重視したGPUでは、ハーフレートの倍精度をサポートするものもある。モバイル用GPUや、機械学習向け機能を強化したGPUでは半精度をサポートするものもある。
^ sampler_t | OpenCL 1.0 Reference Pages
^ gl_sharing | OpenCL 1.0 Reference Pages
^ cl_khr_gl_event | OpenCL 1.2 Reference Pages
^ cl_khr_egl_image | OpenCL 2.0 Reference Pages
^ cl_khr_gl_msaa_sharing | OpenCL 2.0 Reference Pages
^ OpenCL Installable Client Driver (ICD) Loader - khronos.org news
^ OpenCL Overview - The Khronos Group Inc
^ clGetProgramInfo
^ clCreateProgramWithBinary
^ OpenCL meets FPGA #1 入門編 - Qiita
^ Knowledge Base - AMD
^ クロノス・グループ、SPIR 2.0の暫定仕様を公開 - 日刊工業新聞 Business Line - 企業発表
^ cl_khr_spir
^ SPIR - The first open standard intermediate language for parallel compute and graphics
^ The OpenCL™ SPIR-V Environment Specification
^ アップル、Mac OS X Snow Leopardをデベロッパにプレビュー 、2008年6月10日
^ RapidMind Embraces Open Source and Standards Projects to Increase Focus on Simplifying Parallel Programming for Application Developers 、2008年11月10日
^ The Khronos Group Releases OpenCL 1.0 Specification
^ AMD Adopts OpenCL™ 1.0 Specification Ratified Today by The Khronos™ Group, Reaffirms Commitment to Open Standards for CPU+GPU Compute 、2008年12月8日
^ NVIDIA Adds OpenCL To Its Industry Leading GPU Computing Toolkit 、2008年12月9日
^ Khronos Drives Momentum of Parallel Computing Standard with Release of OpenCL 1.1 Specification - Khronos Group Press Release
^ clSetKernelArg
^ Khronos Releases OpenCL 1.2 Specification - Khronos Group Press Release
^ write_image (3D)
^ Khronos Releases OpenCL 2.0 - Khronos Group Press Release
^ Access Qualifiers: read_writeはCUDA SurfaceやDirectCompute RWTextureといったDirectX 11世代の機能に相当する。
^ Khronos Releases OpenCL 2.1 and SPIR-V 1.0 Specifications for Heterogeneous Parallel Programming - Khronos Group Press Release
^ Khronos Releases OpenCL 2.1 Provisional Specification for Public Review - Khronos Group Press Release
^ Khronos Releases OpenCL 2.2 With SPIR-V 1.2 - Khronos Group Press Release
^ Khronos Releases OpenCL 2.2 Provisional Specification with OpenCL C++ Kernel Language - Khronos Group Press Release
^ “Metal for OpenGL Developers - WWDC 2018 - Videos ” (英語). Apple Developer . 2020年3月18日 閲覧。
^ “About OpenCL for OS X ”. developer.apple.com . 2020年3月18日 閲覧。
^ Khronos Group Releases OpenCL 3.0
^ OpenCL 3.0 Specification Finalized and Initial Khronos Open Source OpenCL SDK Released
^ SYCL Overview - The Khronos Group Inc
^ The Khronos Group Releases Finalized SYCL 1.2.1 - The Khronos Group Inc
^ a b SYCL Overview - SYCL 2020 is Here! Khronos Group 2020年
^ Khronos Steps Towards Widespread Deployment of SYCL with Release of SYCL 2020 Provisional Specification Khronos Group 2020年6月30日
^ Intel、新プログラミング言語「Data Parallel C++」β版公開 マイナビ 2019年11月21日
^ Intel's Initial Open-Source, LLVM-Based SYCL Compiler Is Now Available Phoronix 2019年1月28日
^ Intel Continues Working On Their SYCL Compiler For Upstreaming To LLVM Phoronix 2019年4月29日
^ Codeplay Brings SYCL, Intel DPC++ To NVIDIA GPUs Phoronix 2020年2月3日
^ hipSYCL Gets New Compilation Toolchain For Taking SYCL Directly To CUDA & ROCm Phoronix 2019年5月14日
^ a b hipSYCL Sees Work-In-Progress Support For Intel oneAPI Level Zero Backend Phoronix 2021年3月5日
^ a b c Khronos Group SYCL standard - triSYCL Open Source Implementation P.17 Xilinx 2016年
^ Codeplay Outs SYCL-Based ComputeCpp 1.0, Running Parallel C++ Code On Multiple Platforms Phoronix 2018年8月23日
^ Update project status in README triSYCL project 2020年7月3日
^ triSYCL/sycl: Experimental fusion of triSYCL with Intel SYCL upstreaming effort into Clang/LLVM
^ a b PTX and SASS Assembly Debugging NVIDIA
^ Kernelet: High-Throughput GPU Kernel Executions with Dynamic Slicing and Scheduling ( arXiv:1303.5164v1 [cs.DC] ) Jianlong Zhong, Bingsheng He
^ maxas - Getting Started Nervana Systems
^ MaxAs Nervana Systems
^ nervanagpu/nervanagpu/kernels/sass at master · NervanaSystems/nervanagpu · GitHub Nervana Systems
^ a b NVIDIA Compute - PTX: Parallel Thread Execution NVIDIA
^ Inline PTX Assembly in CUDA NVIDIA
^ NVIDIA OpenCL SDK Code Samples NVIDIA
^ Clang 3.0 Release Notes LLVM Project
^ User Guide for NVPTX Back-end LLVM Project
^ a b User Guide for NVPTX Back-end - Running the Kernel LLVM Project
^ “AMD Intermediate Language Reference Guide - October 2011 v.2.4 ”. AMD (2011年10月). 2015年11月15日 閲覧。
^ AMD CAL Programming Guide
^ Mantle Programming Guide and API Reference; Revision 1.0; March 6, 2015 p.93 AMD 2015年
^ LLVM 3.3 Release Notes LLVM Project
^ A Detailed Look at the R600 Backend AMD
^ Introduction to GEN Assembly Intel 2019年9月18日
^ Intel-gpu-tools 1.4 available LWN 2013年9月16日
^ Intel oneAPI DPC++ Compiler 2020-08 Released With Explicit SIMD Extension Phoronix 2020年8月21日
^ TGSI — Gallium 0.4 documentation
^ “A Very Early Gallium3D TGSI Back-End For LLVM ”. Phoronix (2013年4月22日). 2015年11月15日 閲覧。
^ The first open standard intermediate language for parallel compute and graphics Khronos Group
^ “AMD Accelerated Parallel Processing OpenCL™ User Guide - December 2014 rev1.0 ”. AMD. p. 3-14 (2014年12月). 2015年11月15日 閲覧。
^ 【後藤弘茂のWeekly海外ニュース】 AMD GPUとモバイルGPUで同じプログラムを走らせるHSA構想
^ CUDA Toolkit 7.0以前のバージョンに含まれるのはOpenCL 1.1対応のヘッダーとライブラリのみである。また、Fermi世代以前のハードウェアではOpenCL 1.1どまりとなる。
^ Release 349 Graphics Drivers for Windows, Version 350.12; RN-W35012-01v01 | April 13, 2015; Windows Vista / Windows 7 / Windows 8 / Windows 8.1 KeplerおよびMaxwell世代以降のGeForceはWindows用350.12ドライバーでOpenCL 1.2に正式対応している。
^ Release 352 Quadro, NVS, Tesla, GRID, & Notebook Drivers - Version 353.06; RN-WQ35306-01_v01 | June 1, 2015; Windows 7, Windows 8, & Windows 8.1; Release Notes KeplerおよびMaxwell世代以降のQuadroおよびTeslaはWindows用353.06ドライバーでOpenCL 1.2に正式対応している。
^ CUDA Toolkit 4.1 - archive
^ CUDA Toolkit 4.2 - archive
^ AMD's APP SDK 3.0 Beta with OpenCL 2.0 support
^ AMD APP SDK v3.0 Beta Developer Release Notes
^ AMD OpenCL™ 2.0 Driver AMD OpenCL 2.0ドライバーはGCN第1世代以降のAMDグラフィックス製品と互換性がある。
^ GPUOpen-LibrariesAndSDKs/OCL-SDK
^ OpenCL SDK | Community
^ Intel® OpenCL™ Code Builder | Intel® Developer Zone
^ OpenCL* 2.0 の不均等なワークグループ | iSUS Broadwell世代以降のIntel CoreシリーズはOpenCL 2.0に対応している。
^ Installable Client Driver on Android* OS
^ インテル® SDK for OpenCL* Applications よくある問い合わせ | iSUS
^ Get Started with Intel® SDK for OpenCL™ Applications 2019 on Linux*...
^ Training & Code Samples for Intel® SDK for OpenCL™ Applications
^ Tutorial: Getting Started with OpenCL™ on Android* OS
^ a b compute-runtime Intel
^ Intel® Integrated Native Developer Experience - Discontinued Intel
^ OpenCL Development Kit for Linux on Power IBM 2009年10月30日
^ 『Languages and Compilers for Parallel Computing - 23rd International Workshop, LCPC 2010, Houston, TX, USA, October 7-9, 2010. Revised Selected Papers』 P.220 Keith Cooper, John Mellor-Crummey, Vivek Sarkar ISBN 978-3642195952
^ インテル® SDK for OpenCL Applications 2013 よくある問い合わせ | iSUS
^ a b OpenGL および OpenCL グラフィックスを扱う Mac コンピュータ - Apple サポート
^ レガシ ツール Xilinx
^ SDAccel 開発環境 Xilinx
^ OpenCL Features The Clang Team
^ KhronosGroup/SPIRV-LLVM-Translator: A tool and a library for bi-directional translation between SPIR-V and LLVM IR
^ KhronosGroup/LLVM-SPIRV-Backend: An LLVM backend generating SPIR-V binary.
^ [GTC 2018]Khronosが語る「Vulkan 1.1」。VR&AR向けAPI「OpenXR」の最新動向も
^ 2021 Japan Open House - The Khronos Group Inc
^ OpenCL-Overview-Jan21-JP.pdf
^ GitHub - google/angle: A conformant OpenGL ES implementation for Windows, Mac, Linux, iOS and Android.
^ Home — The Mesa 3D Graphics Library
^ Intel® VTune™ Amplifier XE: Getting started with OpenCL* performance analysis on Intel® HD Graphics | Intel® Developer Zone
^ インテル® VTune™ Amplifier XE | iSUS
^ CodeXL for game developers: How to analyze your HLSL for GCN - AMD
^ GPUOpen-Archive/CodeXL: CodeXL is a comprehensive tool suite that enables developers to harness the benefits of CPUs, GPUs and APUs.
^ Radeon™ GPU Profiler - AMD GPUOpen
^ NVIDIA Nsight Visual Studio Edition
^ gpgpu-sim/gpgpu-sim_distribution · GitHub
^ OpenCL™ Emulator-Debugger - AMD , Internet Archive
^ ocl-emu | Google Code Archive - Long-term storage for Google Code Project Hosting.
^ OpenCL Emu Documentation
^ KhronosGroup/OpenCL-CLHPP: Khronos OpenCL-CLHPP
^ OpenCL C++ Bindings: Main Page
^ opentk/opentk: The Open Toolkit library is a fast, low-level C# wrapper for OpenGL, OpenAL & OpenCL. It also includes windowing, mouse, keyboard and joystick input and a robust and fast math library, giving you everything you need to write your own renderer or game engine. OpenTK can be used standalone or inside a GUI on Windows, Linux, Mac.
^ a b Trying Intel OpenCL On Linux For Video Encoding Phoronix 2014年9月2日
^ CUDA/OpenCL/Mercury Playback Engine について(Adobe Premiere Pro)
^ Photoshop CC および CC 2014 GPU FAQ
^ Dev:2.6/Source/Render/Cycles/OpenCL - BlenderWiki
^ V-Ray Japanese official website - Chaos Group / Chaos Software / OakCorp.
^ V-Ray Japanese official website - Chaos Group / Chaos Software / OakCorp.
^ V-Ray RT and GPU rendering
^ GPUレイトレーシング | NVIDIA
^ OpenCV 2.2 Released - ROS robotics news
^ アルテラ、国際カーエレクトロクス技術展(カーエレJAPAN)に出展
^ オートモーティブワールド2015 開催直前情報:アルテラが披露するFPGAを活用した“今すぐ使える”車載向けソリューション - MONOist(モノイスト)
^ PixarAnimationStudios/OpenSubdiv · GitHub
^ FFmpeg 2.0 Released With OpenCL, Many Changes Phoronix 2013年7月10日
外部リンク