OpenCL 设备端采样器对象

采样器对象除了在主机端创建之外,OpenCL还提供了一种更简便的方式——直接在内核代码中声明使用,代码如下:

const sampler_t sampler = sampler_properites;

其中sampler_properites为采样器属性值,用来告诉内核如何读取图像对象。需要注意的是设备端采样器对象的属性值与主机端采样器属性值书写有点小区别,详细见下表。

主机与设备采样器属性值书写差异

设备属性值的作用与对应主机属性值的作用是一样的。如下代码展示了在内核中声明采样器对象:

__constant sampler_t imageSampler = CLK_NORMALIZED_COORDS_FALSE |
                                            CLK_ADDRESS_CLAMP|
                                            CLK_FILTER_NEAREST;
__kernel void ImageProcess(...)
{
    ……
}

其他函数

可以使用如下函数来增加或减小采样器对象的引用计数值:

cl_int clRetainSampler (cl_sampler sampler)   //增加引用计数值
cl_int clReleaseSampler (cl_sampler sampler) //减小引用计数值

我们还可以使用如下函数来查询采样器对象的设置:

cl_int clGetSamplerInfo (cl_sampler sampler,
cl_sampler_info param_name,
                              size_t param_value_size,
                              void *param_value,
size_t *param_value_size_ret)
  • 参数sampler为要查询的采样器对象。

  • 参数param_name指定要查询采样器对象的属性名称。支持的查询属性名称在下表中列出。

clGetSamplerInfo所支持的查询属性名

  • 参数param_value指向的内存用来存储查询结果。
  • 参数param_value_size为param_value所指内存的大小,单位为字节。
  • 参数param_value_size_ret为查询结果的实际大小。
赞(0)
未经允许不得转载:极客笔记 » OpenCL 设备端采样器对象
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址