CLGetInfoString

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

bool  CLGetInfoString(
  int  handle,                           // OpenCL オブジェクトハンドルまたはOpenCL デバイス番号
  ENUM_OPENCL_PROPERTY_STRING prop,     // リクエストされたプロパティ
  string&  value                         // 参照された文字列
  );

パラメータ

handle

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

prop

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

value

[out]  プロパティ値を受け取る文字列

戻り値

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

ENUM_OPENCL_PROPERTY_STRING

識別子

説明

CL_PLATFORM_PROFILE

CL_PLATFORM_PROFILE - OpenCL プロファイル。プロファイル名は次のうちの 1 つです。

  • FULL_PROFILE - 実装は、OpenCLをサポートします。(機能は OpenCL のサポートのための追加の拡張機能を必要とせずに、カーネル仕様の一部として定義されています。)
  • EMBEDDED_PROFILE - 実装は、サプリメントとしてOpenCL をサポートします。改正されたプロファイルは、各OpenCL のバージョンのサブセットとして定義されています。

CL_PLATFORM_VERSION

OpenCL バージョン

CL_PLATFORM_VENDOR

プラットフォームベンダー名

CL_PLATFORM_EXTENSIONS

プラットフォームでサポートされている拡張機能のリスト。拡張名は、このプラットフォームに関連する全てのデバイスによってサポートされる必要があります。

CL_DEVICE_NAME

デバイス名

CL_DEVICE_VENDOR

ベンダー名

CL_DRIVER_VERSION

major_number.minor_number 形式での OpenCL ドライババージョン

CL_DEVICE_PROFILE

OpenCL デバイスプロファイル。プロファイル名は次のうちの 1 つです。

  • FULL_PROFILE - 実装は、OpenCLをサポートします。(機能は OpenCL のサポートのための追加の拡張機能を必要とせずに、カーネル仕様の一部として定義されています。)
  • EMBEDDED_PROFILE - 実装は、サプリメントとしてOpenCL をサポートします。改正されたプロファイルは、各OpenCL のバージョンのサブセットとして定義されています。

CL_DEVICE_VERSION

「OpenCL<space><major_version.minor_version><space><vendor-specific information>」 形式での OpenCL バージョン

CL_DEVICE_EXTENSIONS

デバイスがサポートしている拡張機能のリストリストは、ベンダーがサポートしている拡張機能ならびに1つ以上の承認された名称を含みます。

   cl_khr_int64_base_atomics

   cl_khr_int64_extended_atomics

   cl_khr_fp16

   cl_khr_gl_sharing

   cl_khr_gl_event

   cl_khr_d3d10_sharing

   cl_khr_dx9_media_sharing

   cl_khr_d3d11_sharing

CL_DEVICE_BUILT_IN_KERNELS

サポートされたカーネルは「;」で区切られます。

CL_DEVICE_OPENCL_C_VERSION

このデバイス用のコンパイラでサポートされている最大バージョン。バージョン形式:

「OpenCL<space>C<space><major_version.minor_version><space><vendor-specific information> 」

CL_ERROR_DESCRIPTION

OpenCLエラーのテキスト記述

例:

void OnStart()
 {
  int cl_ctx;
  string str;
//--- OpenCL コンテキストを初期化する
  if((cl_ctx=CLContextCreate(CL_USE_GPU_ONLY))==INVALID_HANDLE)
    {
    Print("OpenCL not found");
    return;
    }
//--- プラットフォームの情報を表示する
  if(CLGetInfoString(cl_ctx,CL_PLATFORM_NAME,str))
    Print("OpenCL platform name: ",str);
  if(CLGetInfoString(cl_ctx,CL_PLATFORM_VENDOR,str))
    Print("OpenCL platform vendor: ",str);
  if(CLGetInfoString(cl_ctx,CL_PLATFORM_VERSION,str))
    Print("OpenCL platform ver: ",str);
  if(CLGetInfoString(cl_ctx,CL_PLATFORM_PROFILE,str))
    Print("OpenCL platform profile: ",str);
  if(CLGetInfoString(cl_ctx,CL_PLATFORM_EXTENSIONS,str))
    Print("OpenCL platform ext: ",str);
//--- デバイスの情報を表示する
  if(CLGetInfoString(cl_ctx,CL_DEVICE_NAME,str))
    Print("OpenCL device name: ",str);
  if(CLGetInfoString(cl_ctx,CL_DEVICE_PROFILE,str))
    Print("OpenCL device profile: ",str);
  if(CLGetInfoString(cl_ctx,CL_DEVICE_BUILT_IN_KERNELS,str))
    Print("OpenCL device kernels: ",str);
  if(CLGetInfoString(cl_ctx,CL_DEVICE_EXTENSIONS,str))
    Print("OpenCL device ext: ",str);
  if(CLGetInfoString(cl_ctx,CL_DEVICE_VENDOR,str))
    Print("OpenCL device vendor: ",str);
  if(CLGetInfoString(cl_ctx,CL_DEVICE_VERSION,str))
    Print("OpenCL device ver: ",str);
  if(CLGetInfoString(cl_ctx,CL_DEVICE_OPENCL_C_VERSION,str))
    Print("OpenCL open c ver: ",str);
//--- 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));
  Print("OpenCL global mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_GLOBAL_MEM_SIZE));
  Print("OpenCL local mem: ",CLGetInfoInteger(cl_ctx,CL_DEVICE_LOCAL_MEM_SIZE));
//--- free OpenCL context
  CLContextFree(cl_ctx);
 }