101 void connect (cl_context context, cl_mem_flags flags)
105 throw exception (
"[clArray::connect] Release the buffer before connecting!");
123 return clEnqueueWriteBuffer (queue,
cl_handle_, CL_TRUE, 0,
size() *
sizeof(T),
data(), 0,
nullptr,
nullptr);
128 return clEnqueueReadBuffer (queue,
cl_handle_, CL_TRUE, 0,
size() *
sizeof(T),
data(), 0,
nullptr,
nullptr);
152 #define CL_ALIGNMENT 4096
153 template <
class T,
class Alloc = AlignedAllocator<T,CL_ALIGNMENT>>
class CLArray :
public CLArrayView<T>
175 :
CLArrayView<T>(n, Alloc::alloc(n)) {
for (
size_t i = 0; i < n; i++) (*
this)[i] = x; }
177 :
CLArrayView<T>(((n == 0) ? v.
size() : n), Alloc::alloc((n == 0) ? v.
size() : n)) {
for (
size_t j = 0; j <
size(); j++) (*
this)[j] = v[i+j]; }
179 :
CLArrayView<T>(list.
size(), Alloc::alloc(list.
size())) {
size_t i = 0;
for (
auto it = list.begin(); it != list.end(); it++) (*
this)[i++] = *it; }
223 void connect (cl_context context, cl_mem_flags flags = CL_MEM_COPY_HOST_PTR | CL_MEM_READ_WRITE)
OpenCL array wrapper.
Definition: opencl.h:155
Array view.
Definition: arrays.h:186
T & back(size_t i=0)
Definition: opencl.h:90
cl_int EnqueueUpload(cl_command_queue queue)
Definition: opencl.h:121
cl_mem const & handle() const
Definition: opencl.h:131
CLArray(CLArray< T, Alloc > &&rvrf)
Definition: opencl.h:180
T const & front(size_t i=0) const
Definition: opencl.h:87
T const * const_iterator
Definition: arrays.h:193
iterator begin()
Definition: opencl.h:84
T & back(int i=0)
Definition: arrays.h:294
cl_int EnqueueDownload(cl_command_queue queue)
Definition: opencl.h:233
T const * const_iterator
Definition: opencl.h:166
void connect(cl_context context, cl_mem_flags flags)
Definition: opencl.h:101
cl_mem cl_handle_
Memory handle to the data copy on the GPU.
Definition: opencl.h:34
T const & operator[](size_t i) const
Definition: opencl.h:79
CLArrayView(CLArrayView< T > &&v)
Definition: opencl.h:58
const_iterator begin() const
Definition: opencl.h:83
virtual ~CLArray()
Definition: opencl.h:187
T * array_
Pointer to the array.
Definition: arrays.h:201
void disconnect()
Definition: opencl.h:111
T const * data() const
Definition: opencl.h:203
iterator begin()
Definition: arrays.h:288
size_t size() const
Definition: opencl.h:78
T DataType
Definition: opencl.h:42
T DataType
Definition: opencl.h:164
T * iterator
Definition: arrays.h:192
virtual ~CLArrayView()
Definition: opencl.h:70
T * data()
Pointer to the data.
Definition: opencl.h:204
iterator begin()
Definition: opencl.h:206
T & front(size_t i=0)
Definition: opencl.h:88
T * iterator
Definition: opencl.h:43
CLArray(ArrayView< T > v, size_t i=0, size_t n=0)
Definition: opencl.h:176
CLArrayView(CLArrayView< T > const &v)
Definition: opencl.h:56
T & back(size_t i=0)
Definition: opencl.h:212
T & operator[](size_t i)
Element-wise access (non-const).
Definition: arrays.h:249
cl_int EnqueueUpload(cl_command_queue queue)
Definition: opencl.h:238
size_t size() const
Length of the array (number of elements).
Definition: arrays.h:276
void connect(cl_context context, cl_mem_flags flags=CL_MEM_COPY_HOST_PTR|CL_MEM_READ_WRITE)
Definition: opencl.h:223
T & front(int i=0)
Definition: arrays.h:292
const_iterator begin() const
Definition: opencl.h:205
void disconnect()
Definition: opencl.h:228
cl_int EnqueueDownload(cl_command_queue queue)
Definition: opencl.h:126
T const & operator[](size_t i) const
Definition: opencl.h:201
size_t N_
Number of elements in the array.
Definition: arrays.h:198
iterator end()
Definition: opencl.h:86
cl_mem const & handle() const
Definition: opencl.h:243
iterator end()
Definition: opencl.h:208
CLArray(std::initializer_list< T > list)
Definition: opencl.h:178
ArrayView()
Definition: arrays.h:206
virtual T * data()
Pointer to the data.
Definition: arrays.h:280
CLArray()
Definition: opencl.h:172
T const & back(size_t i=0) const
Definition: opencl.h:89
CLArrayView(size_t n, T const *ptr)
Definition: opencl.h:52
const_iterator end() const
Definition: opencl.h:85
T const * const_iterator
Definition: opencl.h:44
T const & back(size_t i=0) const
Definition: opencl.h:211
T & front(size_t i=0)
Definition: opencl.h:210
T * iterator
Definition: opencl.h:165
iterator end()
Definition: arrays.h:290
T const * data() const
Definition: opencl.h:81
bool is_connected() const
Definition: opencl.h:218
T const & front(size_t i=0) const
Definition: opencl.h:209
size_t size() const
Definition: opencl.h:200
T * data()
Pointer to the data.
Definition: opencl.h:82
CLArrayView()
Definition: opencl.h:50
bool is_connected() const
Definition: opencl.h:96
const_iterator end() const
Definition: opencl.h:207
OpenCL array wrapper.
Definition: opencl.h:29
CLArrayView(ArrayView< T > v, size_t i=0, size_t n=0)
Definition: opencl.h:54