概要
OpenCL (Open Computing Language) は、CPU、GPU、FPGAなどの異種ヘテロジニアスプラットフォーム上で並列計算を実行するためのオープンスタンダードのフレームワークです。異なるベンダーのデバイス上で動作するアプリケーションを開発できるように設計されており、特にGPUの並列処理能力を有効活用できます。
OpenCLは、ホストAPIとカーネルAPIで構成されます。ホストAPIはC/C++などのプログラミング言語で記述され、デバイスの管理やカーネルの起動を担当します。カーネルは、デバイス上で並列実行される小さなプログラムで、OpenCL独自の言語 (OpenCL C) で記述されます。ワークグループ、ワークアイテムといった概念を用いて並列処理の粒度を制御し、デバイスのハードウェアリソースを最大限に活用します。デバイスドライバは、OpenCLランタイム環境を提供し、ホストプログラムとデバイス間のデータ転送やカーネルの実行を管理します。