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
A valid OpenCL context used to create the pipe object.
flags
A bit-field that is used to specify
allocation and usage information such as the memory
arena that should be used to allocate the pipe object and how it
will be used. The table below describes
the possible values for flags
.
Only CL_MEM_READ_ONLY
,
CL_MEM_WRITE_ONLY
, CL_MEM_READ_WRITE
,
and CL_MEM_HOST_NO_ACCESS
can be specified when creating a pipe object.
If value specified for flags
is 0,
the default is used which is
CL_MEM_READ_WRITE
.
cl_mem_flags | Description |
---|---|
CL_MEM_READ_WRITE
|
This flag specifies that the memory object will be read and written by a kernel. This is the default. |
CL_MEM_WRITE_ONLY
|
This flag specifies that the memory object will be written but not read by a kernel.
Reading from a buffer or image object created with
|
CL_MEM_READ_ONLY
|
This flag specifies that the memory object is a read-only memory object when used inside a kernel.
Writing to a buffer or image object created with
|
CL_MEM_USE_HOST_PTR
|
This flag is valid only if
OpenCL implementations are allowed to cache the buffer contents pointed to by
The result of OpenCL commands that operate on multiple buffer objects created with
the same
Refer to the description
of the alignment rules for
|
CL_MEM_ALLOC_HOST_PTR
|
This flag specifies that the application wants the OpenCL implementation to allocate memory from host accessible memory.
|
CL_MEM_COPY_HOST_PTR
|
This flag is valid only if
|
CL_MEM_HOST_WRITE_ONLY
|
This flag specifies that the host will only write to the memory object (using OpenCL APIs that enqueue a write or a map for write). This can be used to optimize write access from the host (e.g. enable write-combined allocations for memory objects for devices that communicate with the host over a system bus such as PCIe). |
CL_MEM_HOST_READ_ONLY
|
This flag specifies that the host will only read the memory object (using OpenCL APIs that enqueue a read or a map for read).
|
CL_MEM_HOST_NO_ACCESS
|
This flag specifies that the host will not read or write the memory object.
|
pipe_packet_size
Size in bytes of a pipe packet.
pipe_max_packets
Specifies the pipe capacity by specifying the maximum number of packets the pipe can hold.
properties
A list of properties for the pipe and their corresponding values. Each property
name is immediately followed by the corresponding desired value.
The list is terminated with 0.
In OpenCL 2.0, properties
must be NULL.
errcode_ret
Will return an appropriate error code. If errcode_ret
is NULL, no error code is returned.
Pipes follow the same memory consistency model as defined for buffer and image objects. The pipe state i.e. contents of the pipe across kernel executions (on the same or different devices) is enforced at a synchronization point.
clCreatePipe
returns a valid non-zero pipe object and
errcode_ret
is set to CL_SUCCESS if the
pipe object is created successfully. Otherwise, it returns a NULL value with one of
the following error values returned in errcode_ret
:
context
is not a valid context.
flags
are not as defined above.
properties
is not NULL.
pipe_packet_size
is 0 or the pipe_packet_size
exceeds
CL_DEVICE_PIPE_MAX_PACKET_SIZE
value specified in table 4.3
(see clGetDeviceInfo)
for all devices in context
or if
pipe_max_packets
is 0.