#include <itkOpenCLVector.h>
The OpenCLVector class represents a templated OpenCL buffer object.
OpenCLVector is a convenience template class that wraps an OpenCL buffer object to make it appear as a host-accessible array of elements of type T.
Whenever the host CPU calls operator[](), the array's contents are copied into host-accessible memory for direct access. When the host sets the vector on a OpenCLKernel as an argument, the data is copied back to the OpenCL compute device (e.g., the GPU).
The type T is restricted to primitive and movable types that do not require explicit construction, destruction, or operator=(). T can have constructors, but they will not be called. This is because the data will be copied to the OpenCL device in a different address space, and the OpenCL device will not know how to construct, destruct, or copy the data in a C++-compatible manner.
Elements of a buffer object can be a scalar data type (such as an int, float), vector data type, or a user-defined structure, not std::string.
Definition at line 52 of file itkOpenCLVector.h.
Public Types | |
using | Self = OpenCLVector |
Public Member Functions | |
OpenCLBuffer | GetBuffer () const |
OpenCLContext * | GetContext () const |
std::vcl_size_t | GetSize () const |
bool | IsEmpty () const |
bool | IsNull () const |
OpenCLVector () | |
OpenCLVector (const OpenCLVector< T > &other) | |
OpenCLVector< T > & | operator= (const OpenCLVector< T > &other) |
T & | operator[] (const std::vcl_size_t index) |
const T & | operator[] (const std::vcl_size_t index) const |
void | Read (T *data, const std::vcl_size_t count, const std::vcl_size_t offset=0) |
void | Release () |
void | Write (const T *data, const std::vcl_size_t count, const std::vcl_size_t offset=0) |
void | Write (const Vector< T > &data, const std::vcl_size_t offset=0) |
~OpenCLVector () | |
Private Member Functions | |
OpenCLVector (OpenCLContext *context, const OpenCLMemoryObject::Access access, const std::vcl_size_t size) | |
Friends | |
class | OpenCLContext |
Additional Inherited Members | |
Protected Member Functions inherited from itk::OpenCLVectorBase | |
void | Assign (const OpenCLVectorBase &other) |
void | Create (OpenCLContext *context, const OpenCLMemoryObject::Access access, const std::vcl_size_t size) |
OpenCLContext * | GetContext () const |
cl_mem | GetKernelArgument () const |
cl_mem | GetMemoryId () const |
void | Map () |
OpenCLVectorBase (const std::vcl_size_t elemSize) | |
OpenCLVectorBase (const std::vcl_size_t elemSize, const OpenCLVectorBase &other) | |
void | Read (void *data, const std::vcl_size_t size, const std::vcl_size_t offset=0) |
void | Release () |
void | Unmap () const |
void | Write (const void *data, const std::vcl_size_t size, const std::vcl_size_t offset=0) |
~OpenCLVectorBase () | |
Protected Attributes inherited from itk::OpenCLVectorBase | |
OpenCLVectorBasePimpl * | d_ptr |
std::vcl_size_t | m_ElementSize |
void * | m_Mapped |
std::vcl_size_t | m_Size |
using itk::OpenCLVector< T >::Self = OpenCLVector |
Standard class typedefs.
Definition at line 56 of file itkOpenCLVector.h.
itk::OpenCLVector< T >::OpenCLVector | ( | ) |
Creates a null OpenCL vector.
itk::OpenCLVector< T >::OpenCLVector | ( | const OpenCLVector< T > & | other | ) |
Creates a copy of the other vector reference. The vector's contents are not duplicated, modifications to this vector will also affect other.
itk::OpenCLVector< T >::~OpenCLVector | ( | ) |
Destroys this vector reference. If this is the last reference to the underlying data, the vector will be unmapped and deallocated.
|
private |
Constructs an OpenCL vector object of size and associates it with context.
OpenCLBuffer itk::OpenCLVector< T >::GetBuffer | ( | ) | const |
Returns the OpenCL buffer handle for this vector.
OpenCLContext * itk::OpenCLVector< T >::GetContext | ( | ) | const |
Returns the OpenCL context that was used to create this vector.
|
inline |
Returns the number of elements of type T in this OpenCL vector.
Definition at line 97 of file itkOpenCLVector.h.
|
inline |
Returns true if this OpenCL vector is empty, false otherwise.
Definition at line 90 of file itkOpenCLVector.h.
bool itk::OpenCLVector< T >::IsNull | ( | ) | const |
Returns true if this vector is null, false otherwise.
OpenCLVector< T > & itk::OpenCLVector< T >::operator= | ( | const OpenCLVector< T > & | other | ) |
Assigns the other vector reference to this object. The vector's contents are not duplicated, modifications to this vector will also affect other.
T & itk::OpenCLVector< T >::operator[] | ( | const std::vcl_size_t | index | ) |
Returns a reference to the element at index in this OpenCL vector. The vector will be copied to host memory if necessary.
const T & itk::OpenCLVector< T >::operator[] | ( | const std::vcl_size_t | index | ) | const |
Returns a const reference to the element at index in this OpenCL vector. The vector will be copied to host memory if necessary.
void itk::OpenCLVector< T >::Read | ( | T * | data, |
const std::vcl_size_t | count, | ||
const std::vcl_size_t | offset = 0 ) |
Reads the count elements starting offset in this vector into data.
void itk::OpenCLVector< T >::Release | ( | ) |
Releases the contents of this OpenCL vector. If not explicitly released, the contents will be implicitly released when the vector is destroyed.
void itk::OpenCLVector< T >::Write | ( | const T * | data, |
const std::vcl_size_t | count, | ||
const std::vcl_size_t | offset = 0 ) |
Writes the count elements from data to offset in this vector.
void itk::OpenCLVector< T >::Write | ( | const Vector< T > & | data, |
const std::vcl_size_t | offset = 0 ) |
Writes the contents of data to offset in this vector.
|
friend |
friends from OpenCL core
Definition at line 140 of file itkOpenCLVector.h.
Generated on 2024-07-17 for elastix by 1.11.0 (9b424b03c9833626cd435af22a444888fbbb192d) |