clGetDeviceIDs
查询支持OpenCL设备列表:
cl_int clGetDeviceIDs(cl_platform_id platform ,cl_device_type device_type ,cl_uint num_entries ,cl_device_id *devices ,cl_uint *num_devices )
与clGetPlatformIDs函数类似,第一次调用时,devices参数设置为NULL,num_devices返回指定平台中的设备数;
第二次调用时,根据第一次调用得到设备数量分配设备空间,调用该函数来初始化可用设备。
需要注意的是,如果devices不为NULL,num_entries的值必须大于0,num_entries用于指定devices所指向的设备对象列表中最多可存放多少个设备对象,这样此函数所输出的设备对象个数不会超过num_entries的值。而num_devices则输出实际给出的设备对象的个数。
对于函数中的device_type参数,可用类型如下表所示:
clGetDeviceInfo
给定一个OpenCL设备后,使用如下函数可以获得设备的各个属性信息:
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 )
这个函数返回给定设备的属性信息。
第一个参数device指定查询的设备。
第二个参数param_name为查询平台的属性信息,param_name的取值如下表所示。
最后一个参数param_value_size_ret返回属性信息实际的长度。
第四个参数param_value为指向保存平台属性信息的指针。
第三个参数param_value_size指定param_value参数指向的内存空间大小,这个值必须大于第四个参数的返回值。
我的机器显示:
Device Name:NVIDIA GeForce MX450
Compute Units Number: 14
Device Frequency: 1575(MHz)
Device Global Size: 1864(MB)
Device Global CacheLine: 128(Byte)
Device Version:OpenCL 3.0 CUDA
Device Extensions:cl_khr_global_int32_base_atomics cl_khr_global_int32_extended_atomics cl_khr_local_int32_base_atomics cl_khr_local_int32_extended_atomics cl_khr_fp64 cl_khr_3d_image_writes cl_khr_byte_addressable_store cl_khr_icd cl_khr_gl_sharing cl_nv_compiler_options cl_nv_device_attribute_query cl_nv_pragma_unroll cl_nv_copy_opts cl_nv_create_buffer cl_khr_int64_base_atomics cl_khr_int64_extended_atomics cl_khr_device_uuid cl_khr_pci_bus_info cl_khr_external_semaphore cl_khr_external_memory cl_khr_external_semaphore_opaque_fd cl_khr_external_memory_opaque_fd