37 #ifndef PCL_GPU_CONTAINER_DEVICE_ARRAY_IMPL_HPP_ 38 #define PCL_GPU_CONTAINER_DEVICE_ARRAY_IMPL_HPP_ 48 { DeviceMemory::operator=(other);
return *
this; }
51 { DeviceMemory::create(size * elem_size); }
53 { DeviceMemory::release(); }
56 { DeviceMemory::copyTo(other); }
58 { DeviceMemory::upload(host_ptr, size * elem_size); }
60 { DeviceMemory::download( host_ptr ); }
72 template<
class T>
template<
class A>
inline void pcl::gpu::DeviceArray<T>::download(std::vector<T, A>& data)
const { data.resize(size());
if (!data.empty()) download(&data[0]); }
81 { DeviceMemory2D::operator=(other);
return *
this; }
84 { DeviceMemory2D::create(rows, cols * elem_size); }
86 { DeviceMemory2D::release(); }
89 { DeviceMemory2D::copyTo(other); }
91 { DeviceMemory2D::upload(host_ptr, host_step, rows, cols * elem_size); }
93 { DeviceMemory2D::download( host_ptr, host_step ); }
96 { upload(&data[0], cols * elem_size, data.size()/cols, cols); }
99 { elem_step = cols(); data.resize(cols() * rows());
if (!data.empty()) download(&data[0], colsBytes()); }
DeviceArray2D & operator=(const DeviceArray2D &other)
Assignment operator.
DeviceArray()
Empty constructor.
void release()
Decrements reference counter and releases internal buffer if needed.
void release()
Decrements reference counter and releases internal buffer if needed.
int cols() const
Returns number of elements in each row.
void create(int rows, int cols)
Allocates internal buffer in GPU memory.
T * ptr(int y=0)
Returns pointer to given row in internal buffer.
void upload(const void *host_ptr, size_t host_step, int rows, int cols)
Uploads data to internal buffer in GPU memory.
void download(void *host_ptr, size_t host_step) const
Downloads data from internal buffer to CPU memory.
DeviceArray2D()
Empty constructor.
void swap(DeviceArray2D &other_arg)
Performs swap of data pointed with another device array.
void swap(DeviceArray &other_arg)
Performs swap of data pointed with another device array.
DeviceArray & operator=(const DeviceArray &other)
Assignment operator.
void create(size_t size)
Allocates internal buffer in GPU memory.
size_t elem_step() const
Returns step in elements.
void download(T *host_ptr) const
Downloads data from internal buffer to CPU memory.
void copyTo(DeviceArray &other) const
Performs data copying.
void copyTo(DeviceArray2D &other) const
Performs data copying.
int rows() const
Returns number of rows.
size_t size() const
Returns size in elements.
T * ptr()
Returns pointer for internal buffer in GPU memory.
void upload(const T *host_ptr, size_t size)
Uploads data to internal buffer in GPU memory.