我理解cl_platform_id
是一个数据结构,如:
typedef struct{
foo1 bar1;
foo2 bar2;
...;
}cl_platform_id;
但这个结构的内容是什么?例如,如果我想将这些内容打印到控制台,我应该使用哪种数据类型?
我尝试了整数但是我得到了错误:
警告:format指定类型'int'但参数具有类型 'cl_platform_id'(又名'struct _cl_platform_id *')[ - 格式]
提前感谢您的帮助。
答案 0 :(得分:2)
cl_platform_id
是抽象(不透明)类型,不打算直接使用。而是在cl_platform_id
上使用clGetPlatformInfo查询您想要了解的信息。您可以获得可以打印的字符串(如CL_PLATFORM_NAME
)。
答案 1 :(得分:0)
感谢w-m的answer我指向了正确的方向,并写了一个片段来打印平台信息:
cl_platform_info Param_Name[5]={CL_PLATFORM_PROFILE, CL_PLATFORM_VERSION, CL_PLATFORM_NAME, CL_PLATFORM_VENDOR, CL_PLATFORM_EXTENSIONS};
cl_platform_info param_name;
size_t param_value_size;
for(int j=0;j<5;j++){
param_name=Param_Name[j];
err = clGetPlatformInfo( platforms[i], param_name, 0, NULL, ¶m_value_size);
char* param_value = (char*)malloc( sizeof(char) * param_value_size);
err = clGetPlatformInfo( platforms[i], param_name, param_value_size, param_value, NULL );
printf("%s\n", param_value);
free(param_value);
}
完整的代码可以在this GitHub Gist。
中找到