当前位置: 首页 > 工具软件 > api-platform > 使用案例 >

opencl学习(七)——API-platform相关

殷承恩
2023-12-01
采用OpenCL编程进行异构计算,更多的时间是在设计和优化运行在device端的cl文件,而对host端的编程,即对OpenCL API的使用了解不深入。打算后面有机会再来总结一下host端API的应用。
在OpenCL编程中,第一步就是要获取Platform的ID,后面计算的代码都是基于此平台进行的。因此先来介绍Platform的相关API。
1.获取可用平台列表的API clGetPlatformIDs:
cl_int clGetPlatformIDs(cl_uint num_entries , 
                cl_platform_id *platforms , 
                cl_uint *num_platforms)
参数解释:
1.num_entries:指可被加入到平台组中的平台id的数目,即第二个参数cl_platform_id *platforms的数目。如果第二个参数platforms不为NULL,则此参数num_entries一定要大于0。此处的返回值可以用来识别一个特定platform,如果其值为NULL,此参数被忽略。
2.platforms返回发现的OpenCL platfroms的列表。
3.num_platforms返回可用的OpenCL platforms的数目。其值设为NULL时,此参数被忽略。
返回值为错误码,具体含义参考opencl规范。
简单说来,一般这样使用:当不确定自己使用的硬件有多少可用的OpenCL platforms时,使用cl_int status = clGetPlatformIDs( 0, NULL, &num_platforms)即可在第三个参数中获取到该硬件下可用的OpenCL platfoms的数目;然后再次使用该函数status = clGetPlatformIDs(num_platforms, &platfrms, NULL)即可在platforms中得到num_platforms个可用平台的id。注意两次使用中,三个参数的不同。


2.平台信息获取API clGetPlatformInfo:
cl_int clGetPlatformInfo(cl_platform_id platform, 
                         cl_platform_info param_name,   
          size_t param_value_size, 
          void * param_value , 
          size_t *param_value_size_ret)
此API用来获取OpenCL platform的特定信息。
参数解释:
1.platform:即platform ID,由clGetPlatformIDs获取,也可为NULL。
2.param_name:是一个枚举常量,用来指定要查询的platform信息。每个常量只代表一种信息,因此,查询不同信息时要多次调用此函数。有哪些信息可查询请参见OpenCL规范。
3.param_value_size:指定返回值空间的内存大小。其大小应该>=实际返回值大小。
4.param_value:指向存放查询信息返回内存空间的指针。
5.param_value_size_ret:实际的返回信息大小。
一般应用中用不到这个信息获取的函数。
 类似资料: