class cv::cuda::HostMem
Overview
Class with reference counting wrapping special memory type allocation functions from CUDA. Moreā¦
#include <cuda.hpp> class HostMem { public: // enums enum AllocType; // fields AllocType alloc_type; int cols; uchar* data; const uchar* dataend; uchar* datastart; int flags; int* refcount; int rows; size_t step; // construction HostMem(AllocType alloc_type = PAGE_LOCKED); HostMem(const HostMem& m); HostMem( int rows, int cols, int type, AllocType alloc_type = PAGE_LOCKED ); HostMem( Size size, int type, AllocType alloc_type = PAGE_LOCKED ); HostMem( InputArray arr, AllocType alloc_type = PAGE_LOCKED ); // methods static MatAllocator* getAllocator(AllocType alloc_type = PAGE_LOCKED); int channels() const; HostMem clone() const; void create( int rows, int cols, int type ); void create( Size size, int type ); GpuMat createGpuMatHeader() const; Mat createMatHeader() const; int depth() const; size_t elemSize() const; size_t elemSize1() const; bool empty() const; bool isContinuous() const; HostMem& operator=(const HostMem& m); void release(); HostMem reshape( int cn, int rows = 0 ) const; Size size() const; size_t step1() const; void swap(HostMem& b); int type() const; };
Detailed Documentation
Class with reference counting wrapping special memory type allocation functions from CUDA.
Its interface is also Mat-like but with additional memory type parameters.
- PAGE_LOCKED sets a page locked memory type used commonly for fast and asynchronous uploading/downloading data from/to GPU.
- SHARED specifies a zero copy memory allocation that enables mapping the host memory to GPU address space, if supported.
- WRITE_COMBINED sets the write combined buffer that is not cached by CPU. Such buffers are used to supply GPU with data when GPU only reads it. The advantage is a better CPU cache utilization.
Allocation size of such memory types is usually limited. For more details, see CUDA 2.2 Pinned Memory APIs document or CUDA C Programming Guide.
Construction
HostMem( InputArray arr, AllocType alloc_type = PAGE_LOCKED )
creates from host memory with coping data
Methods
HostMem clone() const
returns deep copy of the matrix, i.e. the data is copied
void create( int rows, int cols, int type )
allocates new matrix data unless the matrix already has specified size and type.
GpuMat createGpuMatHeader() const
Maps CPU memory to GPU address space and creates the cuda::GpuMat header without reference counting for it.
This can be done only if memory was allocated with the SHARED flag and if it is supported by the hardware. Laptops often share video and CPU memory, so address spaces can be mapped, which eliminates an extra copy.
Mat createMatHeader() const
returns matrix header with disabled reference counting for HostMem data.
void release()
decrements reference counter and released memory if needed.
HostMem reshape( int cn, int rows = 0 ) const
creates alternative HostMem header for the same data, with different number of channels and/or different number of rows
void swap(HostMem& b)
swaps with other smart pointer