OpenCL 创建管道对象

使用如下函数可以创建管道对象:

cl_mem clCreatePipe (cl_context context,
                        cl_mem_flags flags,
                        cl_uint pipe_packet_size,
                        cl_uint pipe_max_packets,
                        const cl_pipe_properties *properties,
                        cl_int *errcode_ret)
  • 参数context为一个有效的用于创建管道对象的OpenCL上下文。

  • 参数f lag为一个位域。对于管道对象,只能是CL_MEM_READ_ONLY、CL_MEM_WRITE_ONLY、CL_MEM_READ_WRITE和CL_MEM_HOST_NO_ACCESS。默认值为CL_MEM_READ_WRITE。

  • 参数pipe_packet_size是一个管道包的大小,单位为字节。

  • 参数pipe_max_packets指定管道所能包含的最大包的数量,从而指定管道的容量。

  • 参数properties指定管道属性以及相应的值。在OpenCL 2.0中,该值为NULL。

  • 参数errcode_ret为函数执行的错误码。

如下代码展示了在主机端创建管道对象:

size_t packetSize = sizeof(float);
int numPackets = 128;
pipe = clCreatePipe(context, CL_MEM_HOST_NO_ACCESS,
                        packetSize, numPackets, NULL, &err);

在例子中,管道对象中的包数据为f loat类型。管道对象中包的数据类型可以为OpenCL支持的矢量和标量类型,也可以是用户自定义的数据类型。例子中管道对象最多可以包含numPackets个包,同时创建的管道对象主机无法访问(CL_MEM_HOST_NO_ACCESS)。

赞(0)
未经允许不得转载:极客笔记 » OpenCL 创建管道对象
分享到: 更多 (0)

评论 抢沙发

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