跳至内容

CLGetInfoInteger

CLGetInfoInteger

为一个OpenCL对象或者设备返回整数属性的数值.

long  CLGetInfoInteger(
   int  handle,                           // OpenCL对象处理或OpenCL设备编号
   ENUM_OPENCL_PROPERTY_INTEGER  prop     // 被请求属性
   );

参数

handle

[in] OpenCL对象处理或OpenCL设备编号. OpenCL设备编号开始于零.

prop

[in] 从 ENUM_OPENCL_PROPERTY_STRING 详表被请求的属性类型, 您想要被包含的值.

返回值

如果成功属性的值或一旦错误 -1 . 有关错误信息,使用 GetLastError() 函数.

ENUM_OPENCL_PROPERTY_INTEGER

标识符描述类型
CL_DEVICE_COUNTOpenCL支持的设备编号. 此属性不要求第一个参数规范,即你可以处理参数通过一个为零的值int
CL_DEVICE_TYPE设备类型ENUM_CL_DEVICE_TYPE
CL_DEVICE_VENDOR_ID唯一的供应商识别uint
CL_DEVICE_MAX_COMPUTE_UNITSOpenCL设备中的并行计算任务编号. 一个工作组解决了一个计算任务.最低值为1uint
CL_DEVICE_MAX_CLOCK_FREQUENCY设备最高的固定频率兆赫.uint
CL_DEVICE_GLOBAL_MEM_SIZE设备的全局内存字节大小ulong
CL_DEVICE_LOCAL_MEM_SIZE处理数据(事件)本地内存的字节大小uint
CL_BUFFER_SIZEOpenCL字节缓冲区的实际大小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_SIZEOpenCL程序内核中,每个任务使用的最小专有存储器大小(字节)。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_ACCELERATOROpenCL专用加速器 (比如, IBM CELL Blade). 这些设备使用外设互连如PCIe与主处理器进行通信.
CL_DEVICE_CPU一个OpenCL主机处理器设备. 主机处理器运行OpenCL运转且为一个单核或多核CPU.
CL_DEVICE_GPU一个OpenCL设备是GPU.
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);
  }