opencl 可以通过clGetPlatformInfo 和 clGetDeviceInfo获取平台和设备信息,分别包括以下类别的信息
1. CL_PLATFORM_PROFILE : FULL_PROFILE(普通版本) 和 EMBEDDED_PROFILE(嵌入式版本)
2. CL_PLATFORM_VERSION : OpenCL版本号
3. CL_PLATFORM_NUMETRIC_VERSION : 更为详细的版本信息
4. CL_PLATFORM_NAME: 平台名称
5. CL_PLATFORM_VENDER: 平台供应商名称
6. CL_PLATFORM_EXTENSIONS: 平台支持的OpenCL扩展列表
7. CL_PLATFROM_EXTENSIONS_WITH_VERSIONS: 在第6项基础上添加了版本信息
8. CL_PLATFROM_HOST_TIMER_RESOLUTION: host timer 分辨率? 不太了解
然后写个代码测试一下
···
#include <CL/opencl.h>
#include <iostream>
int main(int argc, char** argv)
{
cl_int err;
cl_platform_id platform;
err = clGetPlatformIDs(1, &platform, nullptr);
if (err != CL_SUCCESS)
{
std::cout << "No platforms !" << std::endl;
return -1;
}
char info[30];
cl_platform_info info_descriptor_list[] = {
CL_PLATFORM_PROFILE,
CL_PLATFORM_VERSION,
CL_PLATFORM_NUMERIC_VERSION,
CL_PLATFORM_NAME,
CL_PLATFORM_VENDOR,
CL_PLATFORM_EXTENSIONS,
CL_PLATFORM_EXTENSIONS_WITH_VERSION,
CL_PLATFORM_HOST_TIMER_RESOLUTION,
};
int length = sizeof(info_descriptor_list) / sizeof(info_descriptor_list[0]);
for (int i = 0; i< length; i++)
{
err = clGetPlatformInfo(platform, info_descriptor_list[i], 30, info, NULL);
if (err != CL_SUCCESS)
{
std::cout << "Can not get platform info" << std::endl;
continue;
}
std::cout << info << std::endl;
}
return 0;
}
得到如下结果,有些信息看来是查不到的。