| 
                    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.
             Copyright © 2007-2013 The Khronos Group Inc. 
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.
Copyright © 2007-2013 The Khronos Group Inc. 
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and/or associated documentation files (the
"Materials"), to deal in the Materials without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Materials, and to
permit persons to whom the Materials are furnished to do so, subject to
the condition that this copyright notice and permission notice shall be included
in all copies or substantial portions of the Materials.