CLExecute

この関数は OpenCL プログラムを実行します。この関数には 3 つのバージョンがあります。

1. 単数のカーネルを使用してのカーネル関数起動

bool  CLExecute(
  int          kernel                   // OpenCL プログラムカーネルのハンドル
  );

2. 作業空間の記述を使用した複数のカーネル(OpenCL 関数)の起動

bool  CLExecute(
  int          kernel,                  // OpenCL プログラムカーネルのハンドル
  uint        work_dim,                // 作業空間の寸法
  const uint&  global_work_offset[],    // 作業空間の初期オフセット
  const uint&  global_work_size[]        // 作業の数
  );

3. 作業空間の記述とグループのローカル作業サブセットのサイズの指定とともの複数のカーネル(OpenCL関数)の起動

bool  CLExecute(
  int          kernel,                  // OpenCL プログラムカーネルのハンドル
  uint        work_dim,                // 作業空間の寸法
  const uint&  global_work_offset[],    // 作業空間の初期オフセット
  const uint&  global_work_size[],      // 作業の数
  const uint&  local_work_size[]        // ローカルグループの作業数
  );

パラメータ

kernel

[in]  OpenCL カーネルのハンドル

work_dim

[in]  作業空間の寸法

global_work_offset[]

[in]  作業空間の初期オフセット

global_work_size[]

[in]  作業サブセットのサイズ

local_work_size[]

[in]  グループのローカル作業サブセットのサイズ

戻り値

成功の場合は true、それ以外の場合は false。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

注意事項

下記の例でのパラメータの使用の仕方を見てみましょう。

  • work_dim は作業を記述する work_items[] 配列の次元を指定します。work_dim=3 の場合、三次元の配列 work_items[N1, N2, N3] が使用されます。
  • global_work_size[]work_items[] 配列のサイズを設定する値を含みます。work_dim=3 の場合、global_work_size[3] 配列は例えば {40, 100, 320} です。その場合 work_items[40, 100, 320] です。従って、作業数の合計は 40 x 100 x 320 = 1 280 000 です。
  • local_work_size[] は指定された OpenCL プログラムのカーネルで実行される作業のサブセットを設定します。そのサイズは work_items[] のサイズと等しく、除算での残りの部分を失うことなく、一般的なタスクの一部をより小さなサブセットに分割することが出来ます。実際には local_work_size[] 配列のサイズはwork_items[] グローバル作業セットがより小さいサブセットに分けられるように選択されるべきです。この例では work_items[40, 100, 320] は除算のあまりなしで local_items[10, 10, 10] から得られるため local_work_size[3]={10, 10, 10} が可能です。