Windows Opencl clGetDeviceInfo()函数详细解析
函数原型
cl_int clGetDeviceInfo(cl_device_id device,
cl_device_info param_name,
size_t param_value_size,
void *param_value,
size_t *param_value_size_ret)
获取有关OpenCL设备的特定信息。表1指定了可以使用clGetDeviceInfo查询的信息。
device是clGetDeviceID返回的设备。
param_name是一个枚举常量,用于标识要查询的设备信息。它可以是表1中规定的下列值之一。
param_value是一个指向内存位置的指针,其中将返回表1中指定的给定param_name的适当值。如果param_value为空,则忽略它。
param_value_size指定param_value指向的内存大小(以字节为单位)。这个字节大小必须大于等于表1中指定的返回类型的大小。
param_value_size_ret返回param_value查询的数据的实际大小(以字节为单位)。如果param_value_size_ret为空,则忽略它。
cl_device_info | 返回类型 | 描述 |
---|---|---|
CL_DEVICE_TYPE | cl_device_type | OpenCL设备类型。当前支持的值包括: |
CL_DEVICE_VENDOR_ID | cl_uint | 唯一的设备供应商标识符。唯一设备标识符的示例可以是PCIe ID。 |
CL_DEVICE_MAX_COMPUTE_UNITS | cl_uint | OpenCL设备上的并行计算核心数。最小值为1。 |
CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS | cl_uint | 指定数据并行执行模型使用的全局和本地工作项ID的最大维度。 |
CL_DEVICE_MAX_WORK_ITEM_SIZES | size_t [] | 可在工作组的每个维度中指定给clEnqueueNDRangeKernel的最大工作项数。 |
CL_DEVICE_MAX_WORK_GROUP_SIZE | size_t | 使用数据并行执行模型执行内核的工作组中的最大工作项数(请参阅clEnqueueNDRangeKernel)。最小值为1。 |
CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE | cl_uint | 可放入向量的内置标量类型的首选本机向量宽度大小。向量宽度定义为可以存储在向量中的标量元素的数量。 |
CL_DEVICE_MAX_CLOCK_FREQUENCY | cl_uint | 设备的最大配置时钟频率(MHz)。 |
CL_DEVICE_ADDRESS_BITS | cl_uint | 默认的计算设备地址空间大小指定为无符号整数值(以位为单位)。当前支持的值为32或64位。 |
CL_DEVICE_MAX_MEM_ALLOC_SIZE | cl_ulong | 内存对象分配的最大大小(字节)。最小值为max(1/4th of |
CL_DEVICE_IMAGE_SUPPORT | cl_bool | 如果OpenCL设备支持图像,则为CL_TRUE,否则为CL_FALSE。 |
CL_DEVICE_MAX_READ_IMAGE_ARGS | cl_uint | 内核可以同时读取的最大图像对象数。如果CL_DEVICE_IMAGE_SUPPORT为CL_TRUE,则最小值为128。 |
CL_DEVICE_MAX_WRITE_IMAGE_ARGS | cl_uint | 内核可以同时写入的最大图像对象数。如果CL_DEVICE_IMAGE_SUPPORT为CL_TRUE,则最小值为8。 |
CL_DEVICE_IMAGE2D_MAX_WIDTH | size_t | 二维图像的最大宽度(以像素为单位)。如果CL_DEVICE_IMAGE_SUPPORT为CL_TRUE,则最小值为8192。 |
CL_DEVICE_IMAGE2D_MAX_HEIGHT | size_t | 二维图像的最大高度(像素)。如果CL_DEVICE_IMAGE_SUPPORT为CL_TRUE,则最小值为8192。 |
CL_DEVICE_IMAGE3D_MAX_WIDTH | size_t | 三维图像的最大宽度(像素)。如果CL_DEVICE_IMAGE_SUPPORT为CL_TRUE,则最小值为2048。 |
CL_DEVICE_IMAGE3D_MAX_HEIGHT | size_t | 三维图像的最大宽度(像素)。如果CL_DEVICE_IMAGE_SUPPORT为CL_TRUE,则最小值为2048。 |
CL_DEVICE_IMAGE3D_MAX_DEPTH | size_t | 三维图像的最大宽度(像素)。如果CL_DEVICE_IMAGE_SUPPORT为CL_TRUE,则最小值为2048。 |
CL_DEVICE_MAX_SAMPLERS | cl_uint | 内核中可使用的最大采样器数。如果CL_DEVICE_IMAGE_SUPPORT为CL_TRUE,则最小值为16。 |
CL_DEVICE_MAX_PARAMETER_SIZE | size_t | 可以传递给内核的参数的最大大小(字节)。最小值为256。 |
CL_DEVICE_MEM_BASE_ADDR_ALIGN | cl_uint | 描述任何已分配内存对象的基地址的对齐方式(以位为单位)。 |
CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE | cl_uint | 可用于任何数据类型的最小对齐(以字节为单位)。 |
CL_DEVICE_SINGLE_FP_CONFIG | cl_device_ fp_config | 描述设备的单精度浮点能力。这是一个位字段,用于描述以下一个或多个值: |
CL_DEVICE_GLOBAL_MEM_CACHE_TYPE | cl_device_mem_ cache_type | 支持的全局内存缓存类型。有效值为: |
CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE | cl_uint | 全局内存缓存线的大小(以字节为单位)。 |
CL_DEVICE_GLOBAL_MEM_CACHE_SIZE | cl_ulong | 全局内存缓存的大小(字节)。 |
CL_DEVICE_GLOBAL_MEM_SIZE | cl_ulong | 全局设备内存的大小(字节)。 |
CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE | cl_ulong | 常量缓冲区分配的最大大小(字节)。最小值为64 KB。 |
CL_DEVICE_MAX_CONSTANT_ARGS | cl_uint | 在内核中用 __constant限定符声明的最大参数数。最小值为8。 |
CL_DEVICE_LOCAL_MEM_TYPE | cl_device_ local_mem_type | 支持的本地内存类型。 |
CL_DEVICE_LOCAL_MEM_SIZE | cl_ulong | 本地内存区域的大小(以字节为单位)。最小值为16 KB。 |
CL_DEVICE_ERROR_CORRECTION_SUPPORT | cl_bool | 如果设备对设备中的存储器、缓存、寄存器等进行了纠错,则为CL_True。如果设备不执行纠错,则为CL_FALSE。这可能是OpenCL的某些客户机的要求。 |
CL_DEVICE_PROFILING_TIMER_RESOLUTION | size_t | 定时器描述了设备的分辨率。这是以纳秒为单位的 |
CL_DEVICE_ENDIAN_LITTLE | cl_bool | 如果OpenCL设备是一个小端设备,则为CL_TRUE,否则为CL_FALSE。 |
CL_DEVICE_AVAILABLE | cl_bool | 如果设备可用,则为CL_TRUE;如果设备不可用,则为CL_FALSE。 |
CL_DEVICE_COMPILER_AVAILABLE | cl_bool | 如果实现没有可用于编译程序源的编译器,则为CL_FALSE |
CL_DEVICE_EXECUTION_CAPABILITIES | cl_device_exec_ capabilities | 描述设备的执行功能。这是一个位字段,用于描述以下一个或多个值: |
CL_DEVICE_QUEUE_PROPERTIES | cl_command_ queue_properties | 描述设备支持的命令队列属性。这是一个位字段,用于描述以下一个或多个值: |
CL_DEVICE_PLATFORM | cl_platform_id | 与此设备关联的平台。 |
CL_DEVICE_NAME | char[] | 设备名称字符串。 |
CL_DEVICE_VENDOR | char[] | 供应商名称字符串。 |
CL_DRIVER_VERSION | char[] | 表格中的OpenCL软件驱动程序版本字符串 |
CL_DEVICE_PROFILE | char[] | OpenCL配置文件字符串。返回设备支持的配置文件名。返回的配置文件名可以是以下字符串之一: |
CL_DEVICE_VERSION | char[] | OpenCL版本字符串。返回设备支持的OpenCL版本。此版本字符串的格式如下: |
CL_DEVICE_EXTENSIONS | char[] | 返回以空格分隔的扩展名列表(扩展名本身不包含任何空格)。当前返回的扩展名列表可以包括以下一个或多个已批准的扩展名: |
如果函数执行成功,clGetDeviceInfo将返回CL_SUCCESS。如果设备无效,则返回CL_INVALID_DEVICE;如果param_name不是受支持的值之一,或者param_value_size指定的字节大小小于表1中指定的返回类型的大小,并且param_value不是空值,则返回CL_INVALID_VALUE。