Application
- 
アプリケーション
- 
ホストとOpenCLデバイスで動作するプログラムの組み合わせと定義します。
Blocking and Non-Blocking
- 
ブロッキング・ノンブロッキングエンキュー APIコール
- 
ノンブロッキングエンキューAPIコールはコマンドをコマンドキューにのせて即座にホストに戻ります。ブロッキングエンキューAPIコールはコマンドが終了するまでホストに戻りません。
Barrier
- 
バリアー
- 
バリアーには2種類あります。コマンドキューバリアーとワークバリアーです。
Command-Queue Barrier
- 
コマンドキューバリアー
- 
OpenCL APIはコマンドキューにエンキューする関数を提供しますが、バリアーコマンドは全ての事前にエンキューしたコマンドが、以降にエンキューされたコマンドが実行を開始する前に、終了することを保障します。
Workgroup Barrier
- 
ワークグループバリアー
- 
OpenCL Cプログラミング言語は組み込みワークグループバリアー関数を提供します。デバイスで実行中のカーネルはこの関数を使い、ワークグループのワークアイテム間の同期を実現します。各ワークグループにある全てのワークアイテムはバリアーを実行しないと次の処理に進むことはできません。
Buffer Object
- 
バッファーオブジェクト
- 
線形コレクションを記憶するメモリーオブジェクトです。バッファーオブジェクトはデバイスで実行中のカーネルのポインタを使いアクセスすることができます。またOpenCL APIコールを使いホストで加工処理ができます。バイトサイズや、使用に関する情報や割当領域等のプロパティを保存します。
Built-in Kernel
- 
組み込みカーネル
- 
組み込みカーネルはOpenCLデバイスやカスタムデバイスで動作するカーネルです。アプリケーションはサポートされたデバイスについてクエリーを行うことができます。プログラムオブジェクトはOpenCL Cや組み込みカーネルのいずれかで書かれたカーネルを持つことができますが、両方同時に持つことはできません。
Command
- 
コマンド
- 
実行のためにコマンドキューに投入したOpenCLの操作です。
Command Queue
- 
コマンドキュー
- 
特定のデバイスで実行されるコマンドを保持するオブジェクトです。コマンドキューはコンテキスト内の特定デバイス上で生成されます。コマンドはコマンドキューに順に投入されますが、順(in-order)または順不同(out-of-order)で実行されます。
Compute Device Memory
- 
演算デバイスメモリ
- 
演算デバイスに付加された一つ以上のメモリーです。
Compute Unit(CE)
- 
演算器
- 
一つ以上の演算ユニットを持つOpenCLデバイスです。ワークグループは単一演算ユニットで実行されます。Compute Unitは一つ以上の処理要素(processing elements: PE)とローカルメモリーで構成されます。
Concurrency
- 
並行処理
- 
同一システムでタスクを同時に処理することです。
Constant Memory
- 
コンスタントメモリー
- 
カーネル実行中にグローバルメモリー内でデータが一定となる領域です。ホストはメモリーオブジェクトを割当・初期化して、コンスタントメモリーに投入することができます。
Context
- 
コンテキスト
- 
カーネルが実行する環境や、同期・メモリー管理が定義されるドメインを指します。コンテキストは複数のデバイスや、デバイスとアクセスできるメモリー、一つ以上のコマンドキュー、メモリーオブジェクト操作で構成されます。
Custom Device
- 
カスタムデバイス
- 
OpenCLランタイムAPIを実装するOpenCLデバイス
だがOpenCL Cプログラミング言語で記述したプログラムをサポートしないデバイスです。(例:一部のDSP等)カスタムデバイスはOpenCLに準拠しないデバイスです。
Data Parallel Programming Model
- 
データ並列プログラミングモデル
- 
一つのプログラムが、データ構造の集合の中で複数の要素に、並列で適応させるプログラミングモデルです。アレイの添字に同時にアクセスして処理するプログラムを一般に指します。
Device
- 
デバイス
- 
演算ユニットのコレクションです。OpenCLデバイスはGPU、マルチコアCPU、DSPやFPGA等を含みます。OpenCLを実装しているかはベンダーの規格書、仕様書に記述されています。
Event Object
- 
イベントオブジェクト
- 
コマンド等の操作のカプセル化をするオブジェクトです。コンテキスト内の操作を同期するために使うことができます。
Event Wait-List
- 
イベント待機リスト(event wait-list)
- 
特定のコマンドが実行を開始した際に制御できるイベントオブジェクトのリストです。
Framework
- 
フレームワーク
- 
ソフトウェア開発や実行環境をサポートするコンポーネントの集合です。ライブラリ、API、ランタイムシステム、コンパイラ等を含みます。
Global ID
- 
グローバルID
- 
カーネルを実行する際に指定したグローバルワークアイテムの数から派生し、ワークアイテムを一意的に識別するために使います。グローバルIDは、n次元の値で、(0, 0, …, 0)の値から開始します。
Global Memory
- 
グローバルメモリ
- 
コンテキスト内の全ての実行中のワークアイテムにアクセス可能なメモリ領域です。ホストからも、read/write/map等のコマンドを介してアクセスすることができます。
GL Sharing Group
- 
GL共有グループ
- 
GL共有グループオブジェクトは、共有されたOpenGLまたはOpenGL ESリソース(テキスチャ、バッファー、フレームバッファー、レンダーバッファー)を管理し、一つ以上のGLコンテキストオブジェクトと関連します。
Handle
- 
ハンドル
- 
OpenCLに割り当てられたオブジェクトを参照する不透明な型です。オブジェクトに対するいかなる操作もオブジェクトのハンドルを参照します。
Host
- 
ホスト
- 
ホストはOpenCLを使いコンテキストとやりとりします。
Host Pointer
- 
ホストポインタ
- 
ホストの仮想アドレス空間に存在するメモリーへのポインタです。
Event Object
- 
イメージオブジェクト
- 
2次元または3次元のアレイデータを保存するメモリーオブジェクトです。イメージデータは読み込み・書き込み関数を通じてのみアクセスができます。読み込み関数はサンプラーを使うことができます。次元数や、イメージの各要素の説明や使用に関するプロパティをカプセル化します。
In-order Execution
- 
In-order実行
- 
コマンドをコマンドキューに投入した順で実行・終了することを指します。
Kernel
- 
カーネル
- 
プログラムで宣言された関数かつOpenCLデバイスで実行できるものをさします。カーネルは__kernelまたはkernel修飾子で識別され、プログラムで定義された関数に適用されます。
Kernel Object
- 
カーネルオブジェクト
- 
プログラム内で宣言された__kernel関数および引数値をカプセル化します。
Local ID
- 
ローカルID
- 
所定のカーネルを実行するワークグループ内にあるユニークなワークアイテムIDを特定するIDです。ローカルIDはN次元の値をとり、(0, 0, …, 0)の0値から開始します。
Local Memory
- 
ローカルメモリー
- 
ワークグループに関連づけられたメモリ領域です。ワークグループ内にワークアイテムからのみアクセスができます。
Marker
- 
マーカー
- 
コマンドキューに投入されたコマンドで、全ての先行するコマンドをタグするために使います。マーカーコマンドは処理を終了する前に、その他全てのキューに投入されたコマンドを待機させます。
Memory Object
- 
メモリーオブジェクト
- 
グローバルメモリー領域を参照するオブジェクトです。例としてバッファーオブジェクトや、イメージオブジェクトがあります。
Memory space
- 
メモリ領域 (またはPools)
- 
OpenCL内での明確なアドレス領域です。メモリ領域は物理メモリーとオーバーラップすることがあります(ただし論理的には別なものとして扱います)。メモリ領域には、private、local、constantとグローバルがあります。
Object
- 
オブジェクト
- 
オブジェクトはOpenCL APIが操作可能なリソースの抽象的な表現です。プログラムオブジェクト、カーネルオブジェクト、メモリーオブジェクトが存在します。
Out-of-order Execution
- 
Out-of-Order実行
- 
キューに投入されたコマンドが処理を開始、終了する順序に対して課せられる(イベント待機リストやコマンドキューバリアー等の)制約と一致した実行モデルです。
Platform
- 
プラットフォーム
- 
(リソースを共有したりカーネルをデバイスで実行する)OpenCLフレームワークが管理するホストとデバイスのコレクションをさします。
Private Memory
- 
プライベートメモリー
- 
ワークアイテムに対してプライベートなメモリ領域です。あるワークアイテムのプライベートメモリで定義した変数は、他のワークアイテムからはアクセスできません。
Processing Element
- 
プロセッシングエレメント(Processing Element、略称はPE)
- 
仮想スカラプロセッサです。ワークアイテムは1つ以上のプロセッシングエレメント(PE)で実行することができます。
Program
- 
プログラム
- 
カーネルの集合で構成されるOpenCLプログラムを指します。
Program Object
- 
プログラムオブジェクト
- 
関連するコンテキストへの参照とプログラムのソースとバイナリ、ビルドした最新の実行プログラム、ビルドオプション、ビルドログ、関連するカーネルオブジェクトの数等をカプセル化します。
Reference Count
- 
参照カウント(reference count)
- 
オブジェクトへの参照の数の内部カウントです。OpenCLオブジェクトのライフスパン(寿命)は参照カウントで決定されます。OpenCLでオブジェクトを生成するとき、参照カウントは1となります。後に続いて、retain(clRetainContextやclRetainCommandQueue)をコールすると、参照カウントはインクリメントされます。逆にreleaseをコールすると、参照カウントはデクリメントされます。参照カウントが0に達するとオブジェクトリソースの割当は解除されます。
Relaxed Consistency
- 
緩やかな整合性
- 
バリアーまたはその他の明示的同期ポイントを例外として、異なるワークアイテム・コマンドで可視化されたメモリーの中身が異なることがあるメモリー整合性モデル。
Resource
- 
リソース
- 
OpenCLが定義するオブジェクトの種類です。リソースのインスタンスはオブジェクトとなります。例としてコンテキスト、コマンドキュー、プログラムオブジェクト、カーネルオブジェクト、メモリーオブジェクトがあります。ホスト、デバイス、演算ユニット(CE)、プロセッシングエレメント(PE)等のハードウェアもリソースに含めることがあります。
Retain, Release
- 
保持(retain)、解放(release)
- 
OpenCLオブジェクトを使って参照カウントをインクリメント、デクリメントする動作を指します。
Sampler
- 
サンプラー(sampler)
- 
イメージをどのようにサンプリング(標本抽出)するかをカプセル化したオブジェクトです。イメージ読み込み関数はこのサンプラーを引数として使います。サンプラーは、アドレスモード、範囲外座標の処理方法、フィルターモード、入力イメージ座標の正規化・非正規化された値かを指定することができます。
SIMD
- 
SIMD
- 
SIMD(Single Instruction Multiple Data)は、カーネルがデータと共有プログラムカウンターに対して複数の処理要素(プロセッシングエレメント、PE)を使い並行で実行されるプログラミングをさします。このモデルでは全てのPEは厳密に同一な命令を実行するものとします。
SPMD
- 
SPMD
- 
SPMD(Single Program Multiple Data)はカーネルがデータと所有するプログラムカウンターに対して複数の処理要素(プロセッシングエレメント、PE)を使い並行で実行されるプログラミングをさします。つまり全ての演算リソースは同一カーネルを実行しますが、自らの命令カウンタを保ちます。さらにカーネル内の分岐により、実際の命令シーケンスは各PEによって大きく異なることがあります。
Task Parallel Programming Model
- 
タスク並列プログラミングモデル
- 
計算が複数の並行した(要素が1の単一ワークグループで動作する)タスクとして表現されるプログラミングモデルです。並行タスクは異なるカーネルを実行することができます。(マルチスレッドプログラミングの最も一般的な様態です。)
Thread safe
- 
スレッドセーフ
- 
複数のホストスレッドに同時に呼び出されたときに(OpenCLで管理された)内部状態に整合性がとれているときに、OpenCL APIコールはスレッドセーフとして定義されます。スレッドセーフなOpenCL APIコールは複数のホストスレッドで関数を(相互排他を実装せずに)アプリケーションが呼び出せることを可能とします。(つまりリエントラント・セーフでもある)。
Undefined
- 
未定義
- 
カーネルの実行時に使う組込み関数でOpenCLが定義していない場合のOpenCL APIコールのふるまいを未定義(undefined)と呼びます。
Work-group
- 
ワークグループ
- 
一つの演算ユニット(CU)を実行する関連したワークアイテムのコレクションです。グループ内のワークアイテムは同じカーネルを実行し、かつローカルメモリーとワークグループバリアーを共有します。
Work-item
- 
ワークアイテム
- 
デバイスで呼び出されるカーネルの並列実行を構成するコレクションの1要素(スレッド)です。ワークアイテムは(一つの演算ユニットで実行中のワークグループの一部分として)一つ以上のプロセッシングエレメント(PE)で実行されます。ワークアイテムはコレクション内の他のカーネルインスタンス(ワークアイテム)と、グローバルIDとローカルIDにより、区別するこができます。