fast::Queue class

Wrapper for OpenCL CommandQueue.

Constructors, destructors, conversion operators

Queue(cl::CommandQueue clQueue)

Public functions

void add(const Kernel& kernel, std::vector<int> globalSize, std::vector<int> offset = std::vector<int>(), std::vector<int> groupSize = std::vector<int>())
Enqueue a Kernel to this command queue.
void finish()
Block until entire command queue is finished.
void addReadBuffer(OpenCLBuffer buffer, bool block, std::size_t offset, std::size_t size, void* pointerToData)
Copy data from buffer on device to pointer on host.
void addWriteBuffer(OpenCLBuffer buffer, bool block, std::size_t offset, std::size_t size, void* pointerToData)
Write data from host pointer to OpenCL buffer.
void addCopyBuffer(OpenCLBuffer srcBuffer, OpenCLBuffer dstBuffer, std::size_t srcOffset, std::size_t destOffset, std::size_t size)
Copy data from one OpenCL buffer (source) to another (destination)
auto getHandle() const -> cl::CommandQueue

Function documentation

void fast::Queue::add(const Kernel& kernel, std::vector<int> globalSize, std::vector<int> offset = std::vector<int>(), std::vector<int> groupSize = std::vector<int>())

Enqueue a Kernel to this command queue.

Parameters
kernel
globalSize total number of work-items for each dimension
offset work-item offset, if none is given, it is zero for all dimensions
groupSize How many work-items should be each work-group for each dimension. If not provided, platform will decide automatically

void fast::Queue::addReadBuffer(OpenCLBuffer buffer, bool block, std::size_t offset, std::size_t size, void* pointerToData)

Copy data from buffer on device to pointer on host.

Parameters
buffer OpenCL buffer to read from
block Whether this call should block and wait until the data operation is finished.
offset Byte offset in OpenCL buffer
size nr of bytes to read (e.g. elements*sizeof(datatype))
pointerToData Pointer to host memory to read data into. Must be allocated with big enough size

void fast::Queue::addWriteBuffer(OpenCLBuffer buffer, bool block, std::size_t offset, std::size_t size, void* pointerToData)

Write data from host pointer to OpenCL buffer.

Parameters
buffer OpenCL buffer to write data to
block Whether this call should block and wait until the data operation is finished.
offset Byte offset in OpenCL buffer to write data to
size nr of bytes to write (e.g. elements*sizeof(datatype))
pointerToData Pointer to host memory to read data from. Must be bigger than size.

void fast::Queue::addCopyBuffer(OpenCLBuffer srcBuffer, OpenCLBuffer dstBuffer, std::size_t srcOffset, std::size_t destOffset, std::size_t size)

Copy data from one OpenCL buffer (source) to another (destination)

Parameters
srcBuffer source OpenCL buffer
dstBuffer destination OpenCL buffer
srcOffset offset in bytes in source buffer
destOffset offset in bytes in destination buffer
size size in bytes (e.g. elements*sizeof(datatype))