CLGetInfoString

为OpenCL对象或者设备返回一个属性的字符串值.

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简介.  简介名称可以是以下值中的某一个:

  • 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设备简介. 简介名称可以是以下值的某一个:

  • 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

设备所支持的扩展名列表。列表可以包含由供应商支持的扩展,以及一个或多个批准名称:

   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);
  }