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)

这个函数返回平台属性信息。

  1. 第一个参数platform指定查询的平台。

  2. 第二个参数param_name为查询平台的属性信息,param_name的取值如下表所示。

  3. 最后一个参数param_value_size_ret返回属性信息实际的长度。

  4. 第四个参数param_value为指向保存平台属性信息的指针。

  5. 第三个参数param_value_size指定param_value参数指向的内存空间大小,这个值必须大于等于第四个参数的返回值。

    • FULL_PROFILE:OpenCL实现支持OpenCL规范的所有功能;
    • EMBEDDED_PROFILE:OpenCL实现支持OpenCL嵌入式简档,是OpenCL规范的一个子集。
posted @ 2024-12-19 16:10  turbinee  阅读(57)  评论(0)    收藏  举报