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;
}
得到如下結果,有些信息看來是查不到的。