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_COUNT

OpenCL支持的设备编号. 此属性不要求第一个参数规范,即你可以处理参数通过一个为零的值

int

CL_DEVICE_TYPE

设备类型

ENUM_CL_DEVICE_TYPE

CL_DEVICE_VENDOR_ID

唯一的供应商识别

uint

CL_DEVICE_MAX_COMPUTE_UNITS

OpenCL设备中的并行计算任务编号. 一个工作组解决了一个计算任务.最低值为1

uint

CL_DEVICE_MAX_CLOCK_FREQUENCY

设备最高的固定频率兆赫.

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

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