OpenCV  3.2.0-dev
Open Source Computer Vision

Class with reference counting wrapping special memory type allocation functions from CUDA. More...

#include "cuda.hpp"

Collaboration diagram for cv::cuda::HostMem:

Public Types

enum  AllocType {
  PAGE_LOCKED = 1,
  SHARED = 2,
  WRITE_COMBINED = 4
}
 

Public Member Functions

 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)
 creates from host memory with coping data More...
 
 ~HostMem ()
 
int channels () const
 
HostMem clone () const
 returns deep copy of the matrix, i.e. the data is copied More...
 
void create (int rows, int cols, int type)
 allocates new matrix data unless the matrix already has specified size and type. More...
 
void create (Size size, int type)
 
GpuMat createGpuMatHeader () const
 Maps CPU memory to GPU address space and creates the cuda::GpuMat header without reference counting for it. More...
 
Mat createMatHeader () const
 returns matrix header with disabled reference counting for HostMem data. More...
 
int depth () const
 
size_t elemSize () const
 
size_t elemSize1 () const
 
bool empty () const
 
bool isContinuous () const
 
HostMemoperator= (const HostMem &m)
 
void release ()
 decrements reference counter and released memory if needed. More...
 
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 More...
 
Size size () const
 
size_t step1 () const
 
void swap (HostMem &b)
 swaps with other smart pointer More...
 
int type () const
 

Static Public Member Functions

static MatAllocatorgetAllocator (AllocType alloc_type=PAGE_LOCKED)
 

Public Attributes

AllocType alloc_type
 
int cols
 
uchardata
 
const uchardataend
 
uchardatastart
 
int flags
 
int * refcount
 
int rows
 
size_t step
 

Detailed Description

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.
Note
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.

Member Enumeration Documentation

Enumerator
PAGE_LOCKED 
SHARED 
WRITE_COMBINED 

Constructor & Destructor Documentation

cv::cuda::HostMem::HostMem ( AllocType  alloc_type = PAGE_LOCKED)
explicit
cv::cuda::HostMem::HostMem ( const HostMem m)
cv::cuda::HostMem::HostMem ( int  rows,
int  cols,
int  type,
AllocType  alloc_type = PAGE_LOCKED 
)
cv::cuda::HostMem::HostMem ( Size  size,
int  type,
AllocType  alloc_type = PAGE_LOCKED 
)
cv::cuda::HostMem::HostMem ( InputArray  arr,
AllocType  alloc_type = PAGE_LOCKED 
)
explicit

creates from host memory with coping data

cv::cuda::HostMem::~HostMem ( )

Member Function Documentation

int cv::cuda::HostMem::channels ( ) const
HostMem cv::cuda::HostMem::clone ( ) const

returns deep copy of the matrix, i.e. the data is copied

void cv::cuda::HostMem::create ( int  rows,
int  cols,
int  type 
)

allocates new matrix data unless the matrix already has specified size and type.

void cv::cuda::HostMem::create ( Size  size,
int  type 
)
GpuMat cv::cuda::HostMem::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 cv::cuda::HostMem::createMatHeader ( ) const

returns matrix header with disabled reference counting for HostMem data.

int cv::cuda::HostMem::depth ( ) const
size_t cv::cuda::HostMem::elemSize ( ) const
size_t cv::cuda::HostMem::elemSize1 ( ) const
bool cv::cuda::HostMem::empty ( ) const
static MatAllocator* cv::cuda::HostMem::getAllocator ( AllocType  alloc_type = PAGE_LOCKED)
static
bool cv::cuda::HostMem::isContinuous ( ) const
HostMem& cv::cuda::HostMem::operator= ( const HostMem m)
void cv::cuda::HostMem::release ( )

decrements reference counter and released memory if needed.

HostMem cv::cuda::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

Size cv::cuda::HostMem::size ( ) const
size_t cv::cuda::HostMem::step1 ( ) const
void cv::cuda::HostMem::swap ( HostMem b)

swaps with other smart pointer

int cv::cuda::HostMem::type ( ) const

Member Data Documentation

AllocType cv::cuda::HostMem::alloc_type
int cv::cuda::HostMem::cols
uchar* cv::cuda::HostMem::data
const uchar* cv::cuda::HostMem::dataend
uchar* cv::cuda::HostMem::datastart
int cv::cuda::HostMem::flags
int* cv::cuda::HostMem::refcount
int cv::cuda::HostMem::rows
size_t cv::cuda::HostMem::step

The documentation for this class was generated from the following file: