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)。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程