CLGetDeviceInfo
CLGetDeviceInfo
函数从OpenCL驱动器接收设备的性能.
bool CLGetDeviceInfo(
int handle, // OpenCL设备处理
int property_id, // 被请求的属性 ID
uchar& data[], // 数据接收数组
uint& size // 数组中的元素转换,默认为0
);参数
- handle
[in] 由 CLContextCreate() 函数创建OpenCL设备索引或OpenCL处理.
- property_id
[in] OpenCL设备属性 ID 应当被接收. 该值是列于 table below 中可以被预定的某个值.
- data[]
[out] 用于接收数据的数组具有被要求的属性.
- size
[out] 接收数据的数组 data[] 大小.
返回值
如果成功则为true ,否则为 false. 有关错误信息,使用 GetLastError() 函数.
注意
对于一维数组,考虑到 AS_SERIES 旗帜,元素的数量,从写入读取数据到一个OpenCL缓冲开始处计算.
可用的OpenCL设备性能ID列表
性能的准确描述及其函数可以在 the official OpenCL web site 找到.
| 标识符 | 值 |
|---|---|
| CL_DEVICE_TYPE | 0x1000 |
| CL_DEVICE_VENDOR_ID | 0x1001 |
| CL_DEVICE_MAX_COMPUTE_UNITS | 0x1002 |
| CL_DEVICE_MAX_WORK_ITEM_DIMENSIONS | 0x1003 |
| CL_DEVICE_MAX_WORK_GROUP_SIZE | 0x1004 |
| CL_DEVICE_MAX_WORK_ITEM_SIZES | 0x1005 |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_CHAR | 0x1006 |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_SHORT | 0x1007 |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_INT | 0x1008 |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_LONG | 0x1009 |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT | 0x100A |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_DOUBLE | 0x100B |
| CL_DEVICE_MAX_CLOCK_FREQUENCY | 0x100C |
| CL_DEVICE_ADDRESS_BITS | 0x100D |
| CL_DEVICE_MAX_READ_IMAGE_ARGS | 0x100E |
| CL_DEVICE_MAX_WRITE_IMAGE_ARGS | 0x100F |
| CL_DEVICE_MAX_MEM_ALLOC_SIZE | 0x1010 |
| CL_DEVICE_IMAGE2D_MAX_WIDTH | 0x1011 |
| CL_DEVICE_IMAGE2D_MAX_HEIGHT | 0x1012 |
| CL_DEVICE_IMAGE3D_MAX_WIDTH | 0x1013 |
| CL_DEVICE_IMAGE3D_MAX_HEIGHT | 0x1014 |
| CL_DEVICE_IMAGE3D_MAX_DEPTH | 0x1015 |
| CL_DEVICE_IMAGE_SUPPORT | 0x1016 |
| CL_DEVICE_MAX_PARAMETER_SIZE | 0x1017 |
| CL_DEVICE_MAX_SAMPLERS | 0x1018 |
| CL_DEVICE_MEM_BASE_ADDR_ALIGN | 0x1019 |
| CL_DEVICE_MIN_DATA_TYPE_ALIGN_SIZE | 0x101A |
| CL_DEVICE_SINGLE_FP_CONFIG | 0x101B |
| CL_DEVICE_GLOBAL_MEM_CACHE_TYPE | 0x101C |
| CL_DEVICE_GLOBAL_MEM_CACHELINE_SIZE | 0x101D |
| CL_DEVICE_GLOBAL_MEM_CACHE_SIZE | 0x101E |
| CL_DEVICE_GLOBAL_MEM_SIZE | 0x101F |
| CL_DEVICE_MAX_CONSTANT_BUFFER_SIZE | 0x1020 |
| CL_DEVICE_MAX_CONSTANT_ARGS | 0x1021 |
| CL_DEVICE_LOCAL_MEM_TYPE | 0x1022 |
| CL_DEVICE_LOCAL_MEM_SIZE | 0x1023 |
| CL_DEVICE_ERROR_CORRECTION_SUPPORT | 0x1024 |
| CL_DEVICE_PROFILING_TIMER_RESOLUTION | 0x1025 |
| CL_DEVICE_ENDIAN_LITTLE | 0x1026 |
| CL_DEVICE_AVAILABLE | 0x1027 |
| CL_DEVICE_COMPILER_AVAILABLE | 0x1028 |
| CL_DEVICE_EXECUTION_CAPABILITIES | 0x1029 |
| CL_DEVICE_QUEUE_PROPERTIES | 0x102A |
| CL_DEVICE_NAME | 0x102B |
| CL_DEVICE_VENDOR | 0x102C |
| CL_DRIVER_VERSION | 0x102D |
| CL_DEVICE_PROFILE | 0x102E |
| CL_DEVICE_VERSION | 0x102F |
| CL_DEVICE_EXTENSIONS | 0x1030 |
| CL_DEVICE_PLATFORM | 0x1031 |
| CL_DEVICE_DOUBLE_FP_CONFIG | 0x1032 |
| CL_DEVICE_PREFERRED_VECTOR_WIDTH_HALF | 0x1034 |
| CL_DEVICE_HOST_UNIFIED_MEMORY | 0x1035 |
| CL_DEVICE_NATIVE_VECTOR_WIDTH_CHAR | 0x1036 |
| CL_DEVICE_NATIVE_VECTOR_WIDTH_SHORT | 0x1037 |
| CL_DEVICE_NATIVE_VECTOR_WIDTH_INT | 0x1038 |
| CL_DEVICE_NATIVE_VECTOR_WIDTH_LONG | 0x1039 |
| CL_DEVICE_NATIVE_VECTOR_WIDTH_FLOAT | 0x103A |
| CL_DEVICE_NATIVE_VECTOR_WIDTH_DOUBLE | 0x103B |
| CL_DEVICE_NATIVE_VECTOR_WIDTH_HALF | 0x103C |
| CL_DEVICE_OPENCL_C_VERSION | 0x103D |
| CL_DEVICE_LINKER_AVAILABLE | 0x103E |
| CL_DEVICE_BUILT_IN_KERNELS | 0x103F |
| CL_DEVICE_IMAGE_MAX_BUFFER_SIZE | 0x1040 |
| CL_DEVICE_IMAGE_MAX_ARRAY_SIZE | 0x1041 |
| CL_DEVICE_PARENT_DEVICE | 0x1042 |
| CL_DEVICE_PARTITION_MAX_SUB_DEVICES | 0x1043 |
| CL_DEVICE_PARTITION_PROPERTIES | 0x1044 |
| CL_DEVICE_PARTITION_AFFINITY_DOMAIN | 0x1045 |
| CL_DEVICE_PARTITION_TYPE | 0x1046 |
| CL_DEVICE_REFERENCE_COUNT | 0x1047 |
| CL_DEVICE_PREFERRED_INTEROP_USER_SYNC | 0x1048 |
| CL_DEVICE_PRINTF_BUFFER_SIZE | 0x1049 |
| CL_DEVICE_IMAGE_PITCH_ALIGNMENT | 0x104A |
| CL_DEVICE_IMAGE_BASE_ADDRESS_ALIGNMENT | 0x104B |
例如:
void OnStart()
{
//---
int dCount= CLGetInfoInteger(0,CL_DEVICE_COUNT);
for(int i = 0; i<dCount; i++)
{
int clCtx=CLContextCreate(i);
if(clCtx == -1)
Print("ERROR in CLContextCreate");
string device;
CLGetInfoString(clCtx,CL_DEVICE_NAME,device);
Print(i,": ",device);
uchar data[1024];
uint size;
CLGetDeviceInfo(clCtx,CL_DEVICE_VENDOR,data,size);
Print("size = ",size);
string str=CharArrayToString(data);
Print(str);
}
}
//--- example of entries in Experts journal
// 2013.07.24 10:50:48 opencl (EURUSD,H1) 2: Advanced Micro Devices, Inc.
// 2013.07.24 10:50:48 opencl (EURUSD,H1) size = 32
// 2013.07.24 10:50:48 opencl (EURUSD,H1) Tahiti
// 2013.07.24 10:50:48 opencl (EURUSD,H1) Intel(R) Corporation
// 2013.07.24 10:50:48 opencl (EURUSD,H1) size = 21
// 2013.07.24 10:50:48 opencl (EURUSD,H1) 1: Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz
// 2013.07.24 10:50:48 opencl (EURUSD,H1) NVIDIA Corporation
// 2013.07.24 10:50:48 opencl (EURUSD,H1) size = 19
// 2013.07.24 10:50:48 opencl (EURUSD,H1) 0: GeForce GTX 580