CLGetInfoInteger

OpenCL オブジェクトまたはデバイスの整数プロパティ値を返します。

long  CLGetInfoInteger(
  int  handle,                           // OpenCL オブジェクトのハンドルまたはOpenCL デバイスの番号
  ENUM_OPENCL_PROPERTY_INTEGER  prop     // リクエストされたプロパティ
  );

パラメータ

handle

[in]  OpenCL オブジェクトのハンドルまたはOpenCL デバイスの番号。OpenCL デバイス番号はゼロで始まります。

prop

[in]  値の取得に使用されるENUM_OPENCL_PROPERTY_INTEGER 列挙からのリクエストされたプロパティの型

戻り値

成功の場合はプロパティ値、エラーの場合は -1。エラー情報を取得するには、GetLastError() 関数が呼ばれます。

ENUM_OPENCL_PROPERTY_INTEGER

識別子

説明

Type

CL_DEVICE_COUNT

OpenCL をサポートするデバイスの数このプロパティは初めのパラメータの指定を必要としません。つまり handle パラメ—タにはゼロ値を渡すことが出来ます。

int

CL_DEVICE_TYPE

デバイスの種類

ENUM_CL_DEVICE_TYPE

CL_DEVICE_VENDOR_ID

一意のベンダー識別子

uint

CL_DEVICE_MAX_COMPUTE_UNITS

OpenCL のデバイスで並列計算されたタスクの数 1 つのワーキンググループは、1つの計算作業を解決します。最少値は 1 です。

uint

CL_DEVICE_MAX_CLOCK_FREQUENCY

MHz単位でデバイスの最高周波数設定

uint

CL_DEVICE_GLOBAL_MEM_SIZE

バイト単位でデバイスのグローバルメモリのサイズ

ulong

CL_DEVICE_LOCAL_MEM_SIZE

バイト単位での処理されたデータ(シーン)ローカルメモリのサイズ

uint

CL_BUFFER_SIZE

バイト単位での OpenCL バッファの実際のサイズ

ulong

CL_DEVICE_MAX_WORK_GROUP_SIZE

OpenCLデバイスで使用可能なローカルワーキンググループの総数

ulong

CL_KERNEL_WORK_GROUP_SIZE

OpenCLプログラムで使用可能なローカルワーキンググループの総数

ulong

CL_KERNEL_LOCAL_MEM_SIZE

グループ内のすべての並列タスクを解決するためにOpenCLプログラムが使用するローカルメモリのサイズ(バイト単位)。使用可能な最大値を受け取るにはCL_DEVICE_LOCAL_MEM_SIZEを使用します。

ulong

CL_KERNEL_PRIVATE_MEM_SIZE

OpenCLプログラムカーネルの各タスクで使用されるプライベートメモリの最小サイズ(バイト単位)

ulong

CL_LAST_ERROR

直近のOpenCLエラーの値

int

 

ENUM_CL_DEVICE_TYPE 列挙は OpenCL をサポートするデバイスの可能な種類を含みます。CLGetInfoInteger(handle_or_deviceN, CL_DEVICE_TYPE) を呼び出すことによって、デバイスの種類の番号や OpenCL オブジェクトのハンドルを受け取ることが出来ます。

ENUM_CL_DEVICE_TYPE

識別子

説明

CL_DEVICE_ACCELERATOR

OpenCL 専用のアクセラレータ(例えば、IBM CELL Blade)。これらのデバイスは PCIe のような周辺機器を使用してホストプロセッサと通信します。

CL_DEVICE_CPU

ホストプロセッサであるOpenCL デバイス。ホストプロセッサは、OpenCLの実装を実行する単一またはマルチコアCPUです。

CL_DEVICE_GPU

GPU であるOpenCL デバイス。

CL_DEVICE_DEFAULT

システムのデフォルト OpenCL デバイス。CL_DEVICE_TYPE_CUSTOM デバイスはデフォルトにはなりません。

CL_DEVICE_CUSTOM

OpenCLのCで書かれたプログラムをサポートしない専用アクセラレータ。

例:

void OnStart()
 {
  int cl_ctx;
//--- OpenCL コンテキストを初期化する
  if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
    {
    Print("OpenCL not found");
    return;
    }
//--- OpenCL デバイスの一般的な情報を表示する
  Print("OpenCL type: ",EnumToString((ENUM_CL_DEVICE_TYPE)CLGetInfoInteger(cl_ctx,CL_DEVICE_TYPE)));
  Print("OpenCL vendor ID: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_VENDOR_ID));
  Print("OpenCL units: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_COMPUTE_UNITS));
  Print("OpenCL freq: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_MAX_CLOCK_FREQUENCY)," MHz");
  Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE)," bytes");
  Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE)," bytes");
//--- free OpenCL context
  CLContextFree(cl_ctx);
 }