OpenCL 编程步骤 1. 获取平台
参考 OpenCL 平台
clGetPlatformIDs
获得系统平台列表:
cl_int clGetPlatformIDs(cl_uint num_entries ,
cl_platform_id *platforms ,
cl_uint *num_platforms )
在OpenCL程序中,上述函数可以调用两次:
- 第一次调用,platforms设置为NULL,调用该函数,num_platforms中获得系统中可用的OpenCL平台数量;
- 第二次调用,根据第一次调用得到平台数量分配平台空间,调用该函数来初始化可用平台。
代码:
cl_int err;
cl_uint num_platform;
cl_platform_id *platform;
//获得平台数量
err = clGetPlatformIDs(0, NULL, &num_platform);
//分配平台空间
platform = (cl_platform_id *)malloc(sizeof(cl_platform_id) *num_platform);
//初始化可用平台
err = clGetPlatformIDs(num_platform, platform, NULL);
上述代码查询了系统中所有OpenCL平台,并初始化了查询到的所有平台。
也有 clGetPaltformIDs 只调用了一次,这是为什么呢?这是因为只初始化了第一个可用的OpenCL平台。
cl_int err;
cl_uint num_platform;
cl_platform_id platform;
err = clGetPlatformIDs(1, &platform, &num_platform);
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)
这个函数返回平台属性信息。
-
第一个参数platform指定查询的平台。
-
第二个参数param_name为查询平台的属性信息,param_name的取值如下表所示。
![]()
-
最后一个参数param_value_size_ret返回属性信息实际的长度。
-
第四个参数param_value为指向保存平台属性信息的指针。
-
第三个参数param_value_size指定param_value参数指向的内存空间大小,这个值必须大于等于第四个参数的返回值。
- FULL_PROFILE:OpenCL实现支持OpenCL规范的所有功能;
- EMBEDDED_PROFILE:OpenCL实现支持OpenCL嵌入式简档,是OpenCL规范的一个子集。

浙公网安备 33010602011771号