Opencl paltform id

来源:互联网 发布:档案数据存储制度 编辑:程序博客网 时间:2024/05/18 06:24

通用的opencl platform id 获取方法通常是

cl_int clGetPlatformIDs(cl_uint num_entries,    cl_platform_id *platforms,    cl_uint *num_platforms)

这个命令会得到可用的OpenCL平台的列表。这个函数的platforms 和 num_platforms都可以设定为NULL,以获取到不同的信息。 如果参数platforms为NULL,clGetPlatformIDs会返回可用平台数。返回的平台数可以用num_entries来限制,这个参数要大于0并小于或等于可用平台数。可以将num_entries和platforms分别设置为0和NULL来查询可用的平台个数。

如果想要给没有平台都分配一个platformID,则可以调用clGetPlatformIDs两次,第一次把Platform 参数设定为NULL,通过num_platforms参数获取当前的platform个数,再为每个platform分配一个cl_platform_id数据结构。然后再次调用clGetPlatformIDs函数为每个platform分配对应的cl_platform_id。

举一个简单的例子说明如何查询和选择平台,下面使用clGetPlatformIDs()得到一个平台ID列表:

cl_int errNum;cl_uint numPlatforms;cl_platform_id * platformIDs;errNum=clGetPlatformIDs(0,NULL,&numPlatforms);platformIDs=(cl_platform_id*)malloc(sizeof(cl_platform_id)*numPlatforms);errNum=clGetPlatformIDs(numPlatforms,platformIDs,NULL);

然而对于Intel FPGA 平台的时候,针对这个方法进行了进一步的封装

platformid=findPlatform("Intel(R) FPGA");

其中可以指定的字符串为:
“Intel(R) FPGA SDK for OpenCL”,
“Intel(R) FPGA SDK”, 或者 “Intel(R) FPGA”.
之前使用的Altera 字样会报错。ERROR: Unable to find Altera OpenCL Platform

0 0
原创粉丝点击