OpenCLプログラムを使うためのクラス


BufferCreate

指定されたインデックスでOpenCLバッファを作成します。

bool  BufferCreate(
  const int  buffer_index,      // バッファインデックス
  const uint  size_in_bytes,    // バイト単位でのバッファサイズ
  const uint  flags              // バッファプロパティを定義するフラグの組み合わせ
  );

パラメータ

buffer_index

[in]  インデックスバッファ

size_in_bytes

[in]  バイト単位でのバッファサイズ

フラグ

[in]  フラグの組み合わせで指定されるバッファプロパティ

戻り値

実行成功の場合は true、それ以外の場合は false

BufferFree

指定されたインデックスでOpenCLバッファを削除します。

bool  BufferFree(
  const int  buffer_index      // バッファインデックス
  );

パラメータ

buffer_index

[in]  インデックスバッファ

戻り値

実行成功の場合は true、それ以外の場合は false

BufferFromArray

指定されたインデックスで値の配列からバッファを作成します。

template<typename T>
bool  BufferFromArray(
  const int  buffer_index,          // バッファインデックス
  T          &data[],              // 値の配列
  const uint  data_array_offset,    // 値の配列のオフセット(バイト単位)
  const uint  data_array_count,      // 書き込む配列からの値の数
  const uint  flags                  // バッファのプロパティを定義するフラグの組み合わせ
  );

パラメータ

buffer_index

[in]  インデックスバッファ

&data[]

[in]  OpenCLバッファに書き込まれる値の配列

data_array_offset

[in]  値の書き込みが始まる配列の値のオフセット(バイト単位)

data_array_count

[in] 書き込まれる値の数

フラグ

[in]  フラグの組み合わせで指定されるバッファプロパティ

戻り値

実行成功の場合は true、それ以外の場合は false

BufferRead

指定されたインデックスでOpenCLバッファを配列に読み込みます。

template<typename T>
bool  BufferRead(
  const int  buffer_index,          // バッファインデックス
  T          &data[],              // 値の配列
  const uint  cl_buffer_offset,      // OpenCL バッファ内のバイト単位のオフセット
  const uint  data_array_offset,    // 配列要素のシフト
  const uint  data_array_count      // バッファから読み込む値の数
  );

パラメータ

buffer_index

[in]  インデックスバッファ

&data[]

[in]  OpenCLバッファの値を取得するのに使用する配列

cl_buffer_offset

[in]  OpenCL バッファでの読み込みが始まるオフセット(バイト単位)

data_array_offset

[in]  OpenCLのバッファの値を書き込むための最初の配列要素のインデックス

data_array_count

[in]  読まれる値の数

戻り値

実行成功の場合は true、それ以外の場合は false

BufferWrite

指定されたインデックスで値の配列をバッファに書き出します。

template<typename T>
bool  BufferWrite(
  const int  buffer_index,          // バッファインデックス
  T          &data[],              // 値の配列
  const uint  cl_buffer_offset,      // OpenCL バッファ内のバイト単位のオフセット
  const uint  data_array_offset,    // 配列要素のシフト
  const uint  data_array_count      // 書き込む配列からの値の数
  );

パラメータ

buffer_index

[in]  インデックスバッファ

&data[]

[in]  OpenCLバッファに書き込まれる値の配列

cl_buffer_offset

[in]  OpenCL バッファでの書き出しが始まるオフセット(バイト単位)

data_array_offset

[in]  OpenCLのバッファの値を書き込むための最初の配列要素のインデックス

data_array_count

[in] 書き込まれる値の数

戻り値

実行成功の場合は true、それ以外の場合は false

Execute

指定されたインデックスを持つOpenCLカーネルを実行します。

bool  Execute(
  const int  kernel_index,          // カーネルのインデックス
  const int  work_dim,              // 作業空間の寸法
  const uint  &work_offset[],        // 作業空間の初期オフセット
  const uint  &work_size[]           // 作業の数
  );

ローカルグループ内の指定されたインデックスとタスク数でOpenCLカーネルを実行します。

bool  Execute(
  const int  kernel_index,          // カーネルのインデックス
  const int  work_dim,              // 作業空間の寸法
  const uint  &work_offset[],        // 作業空間の初期オフセット
  const uint  &work_size[],          // 作業の数
  const uint  &local_work_size[]      // ローカルグループの作業数
  );

パラメータ

kernel_index

[in]  カーネルオブジェクトのインデックス

work_dim

[in]  作業空間の寸法

&work_offset[]

[in][out] 作業空間の初期オフセット参照で引き渡されます。

&work_size[]

[in]  作業サブセットのサイズ参照で引き渡されます。

&local_work_size[]

[in][out] 作業サブセットのサイズ参照で引き渡されます。

戻り値

実行成功の場合は true、それ以外の場合は false

GetContext

OpenCL コンテキストのハンドルを返します。

int  GetContext();

戻り値

OpenCL コンテキストのハンドル

GetKernel

指定されたインデックスにあるカーネルオブジェクトのハンドルを返します。

int  GetKernel(
  const int  kernel_index      // カーネルのインデックス
  );

パラメータ

kernel_index

[in]  カーネルオブジェクトのインデックス

戻り値

カーネルオブジェクトのハンドル

GetKernelName

指定されたインデックスにあるカーネルオブジェクトの名前を返します。

string  GetKernelName(
  const int  kernel_index      // カーネルのインデックス
  );

パラメータ

kernel_index

[in]  カーネルオブジェクトのインデックス

戻り値

カーネルオブジェクトの名前

GetProgram

OpenCLプログラムのハンドルを返します。

int  GetProgram();

戻り値

OpenCLプログラムのハンドル

Initialize

OpenCLプログラムを初期化します。

bool  Initialize(
  const string  program,          // OpenCLプログラムのハンドル
  const bool    show_log=true      // ログを維持する
  );

パラメータ

program

[in]  OpenCLプログラムのハンドル

show_log=true

[in]  メッセージログの維持を有効にする

戻り値

初期化が成功したらtrue、その他の場合は false

KernelCreate

指定されたインデックスでのOpenCLプログラムへのエントリポイントを作成します。

bool  KernelCreate(
  const int    kernel_index,    // カーネルのインデックス
  const string  kernel_name      // カーネルの名前
  );

パラメータ

kernel_index

[in]  カーネルオブジェクトのインデックス

kernel_name

[in]  カーネルオブジェクトの名前

戻り値

実行成功の場合は true、それ以外の場合は false

KernelFree

指定されたインデックスでのOpenCL開始関数を削除します。

bool  KernelFree(
  const int  kernel_index      // カーネルのインデックス
  );

パラメータ

kernel_index

[in]  カーネルオブジェクトのインデックス

戻り値

実行成功の場合は true、それ以外の場合は false

SetArgument

指定されたインデックスにあるOpenCL関数のパラメータを設定します。

template<typename T>
bool  SetArgument(
  const int  kernel_index,    // カーネルのインデックス
  const int  arg_index,        // 関数の引数のインデックス
  T          value            // ソースコード
  );

パラメータ

kernel_index

[in]  カーネルオブジェクトのインデックス

arg_index

[in]  関数の引数のインデックス

value

[in]  関数の引数の値

戻り値

実行成功の場合は true、それ以外の場合は false

SetArgumentBuffer

指定されたインデックスにあるOpenCL関数のパラメータとしてOpenCLバッファを設定します。

bool  SetArgumentBuffer(
  const int  kernel_index,    // カーネルのインデックス
  const int  arg_index,        // 関数の引数のインデックス
  const int  buffer_index      // バッファインデックス
  );

パラメータ

kernel_index

[in]  カーネルオブジェクトのインデックス

arg_index

[in]  関数の引数のインデックス

buffer_index

[in]  インデックスバッファ

戻り値

実行成功の場合は true、それ以外の場合は false

SetArgumentLocalMemory

指定されたインデックスにあるOpenCL関数のパラメータをローカルメモリで設定します。

bool  SetArgumentLocalMemory(
  const int  kernel_index,          // カーネルのインデックス
  const int  arg_index,            // 関数の引数のインデックス
  const int  local_memory_size      // ローカルメモリのサイズ
  );

パラメータ

kernel_index

[in]  カーネルオブジェクトのインデックス

arg_index

[in]  関数の引数のインデックス

local_memory_size

[in]  ローカルメモリサイズ

戻り値

実行成功の場合は true、それ以外の場合は false

SetBuffersCount

バッファ数を設定します。

bool  SetBuffersCount(
  const int  total_buffers      // バッファ数
  );

パラメータ

total_buffers

[in]  バッファの総数

戻り値

実行成功の場合は true、それ以外の場合は false

SetKernelsCount

カーネルオブジェクトの数を設定します。

bool  SetKernelsCount(
  const int  total_kernels      // カーネル数
  );

パラメータ

total_kernels

[in]  カーネルの総数

戻り値

実行成功の場合は true、それ以外の場合は false

Shutdown

OpenCLプログラムをアンロードします。

void  Shutdown();

戻り値

なし

SupportDouble

浮動小数点データ型がデバイスでサポートされているかどうかをチェックします。

bool  SupportDouble();

戻り値

デバイスが浮動小数点データ型をサポートする場合は true を返します。

Originally posted 2019-07-30 09:59:00.

Leave a Reply

Your email address will not be published. Required fields are marked *

CAPTCHA


You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">