cl_platform_id数据结构的内容是什么?

时间:2018-06-03 11:14:20

标签: opencl

我理解cl_platform_id是一个数据结构,如:

typedef struct{
   foo1 bar1;
   foo2 bar2;
   ...;
}cl_platform_id;

但这个结构的内容是什么?例如,如果我想将这些内容打印到控制台,我应该使用哪种数据类型?

我尝试了整数但是我得到了错误:

  

警告:format指定类型'int'但参数具有类型         'cl_platform_id'(又名'struct _cl_platform_id *')[ - 格式]

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:2)

cl_platform_id是抽象(不透明)类型,不打算直接使用。而是在cl_platform_id上使用clGetPlatformInfo查询您想要了解的信息。您可以获得可以打印的字符串(如CL_PLATFORM_NAME)。

答案 1 :(得分:0)

感谢w-manswer我指向了正确的方向,并写了一个片段来打印平台信息:

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, &param_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

中找到