curfil  ..
 All Classes Functions Variables Typedefs Friends Groups Pages
Public Types | Public Member Functions | Friends | List of all members
cuv::pitched_memory< V, M > Class Template Reference

represents 2D non-contiguous ("pitched") memory More...

#include <memory.hpp>

Inheritance diagram for cuv::pitched_memory< V, M >:
cuv::memory< V, M >

Public Types

typedef super::value_type value_type
 type of contained values
typedef super::const_value_type const_value_type
 const version of value_type
typedef super::memory_space_type memory_space_type
 host or dev memory_space
typedef super::index_type index_type
 how to index values
typedef super::size_type size_type
 type of shapes
typedef super::reference_type reference_type
 type of reference you get using operator[]
typedef super::const_reference_type const_reference_type
 type of reference you get using operator[]
- Public Types inherited from cuv::memory< V, M >
typedef unconst< V >::type value_type
 type of contained values
typedef const V const_value_type
 const version of value_type
typedef M memory_space_type
 host or dev memory_space
typedef unsigned int size_type
 type of shapes
typedef int index_type
 how to index values
typedef reference< V, M > reference_type
 type of reference you get using operator[]
typedef const reference< V, M > const_reference_type
 type of reference you get using operator[]

Public Member Functions

size_type rows () const
size_type cols () const
size_type pitch () const
size_type size () const
size_type memsize () const
 pitched_memory (const boost::shared_ptr< allocator > _allocator=boost::make_shared< default_allocator >())
 default constructor: does nothing
 pitched_memory (index_type i, index_type j, const boost::shared_ptr< allocator > _allocator=boost::make_shared< default_allocator >())
 constructor: reserves space for at least i*j elements
void alloc ()
 allocate space according to size()
value_typerelease ()
 releases ownership of pointer (for storage in memory class)
void set_size (size_type rows, size_type cols)
 set the size (reallocating, if necessary)
my_typeoperator= (const my_type &o)
 Copy pitched_memory.
template<class OM >
my_typeoperator= (const pitched_memory< value_type, OM > &o)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
reference_type operator[] (const index_type &idx)
const_reference_type operator[] (const index_type &idx) const
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.
reference_type operator() (const index_type &i, const index_type &j)
 get a reference to a datum in memory
const_reference_type operator() (const index_type &i, const index_type &j) const
void set_strides (linear_memory< index_type, cuv::host_memory_space > &strides, const linear_memory< size_type, cuv::host_memory_space > &shape, row_major)
 set strides for this memory
void set_strides (linear_memory< index_type, cuv::host_memory_space > &strides, const linear_memory< size_type, cuv::host_memory_space > &shape, column_major)
 This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. column major version.
template<class V2 , class OM >
void copy2d_from (const memory< V2, OM > src, cudaStream_t stream) const
template<class V2 , class OM >
void copy_from (const pitched_memory< V2, OM > &src, cudaStream_t stream) const
- Public Member Functions inherited from cuv::memory< V, M >
V * ptr ()
const V * ptr () const
void reset (V *p, size_type s)
 reset information (use with care, for deserialization)
 memory (const boost::shared_ptr< allocator > &_allocator)
 default constructor (just sets ptr to NULL)
 memory (value_type *ptr, size_type size, const boost::shared_ptr< allocator > &_allocator, bool owned=true)
 construct with pointer (takes /ownership/ of this pointer and deletes it when destroyed!)
 ~memory ()
 destructor (deallocates the memory)
void dealloc ()
 dellocate space
template<class value_type2 , class memory_space >
void copy_from (V *dst, const value_type2 *src, size_t size, memory_space m, cudaStream_t stream)
template<class value_type2 , class memory_space >
void copy_from (const value_type2 *src, size_t size, memory_space m, cudaStream_t stream)
template<class value_type2 , class memory_space >
void copy2d_from (V *dst, const value_type2 *src, size_t dpitch, size_t spitch, size_t h, size_t w, memory_space m, cudaStream_t stream)
template<class value_type2 , class memory_space >
void copy2d_from (const value_type2 *src, size_t dpitch, size_t spitch, size_t h, size_t w, memory_space m, cudaStream_t stream)

Friends

class boost::serialization::access

Additional Inherited Members

- Protected Member Functions inherited from cuv::memory< V, M >
void check_size_limit (size_t size) const
- Protected Attributes inherited from cuv::memory< V, M >
V * m_ptr
 points to allocated memory
size_type m_size
 size (for serialization)
boost::shared_ptr< allocatorm_allocator
 how stored memory was allocated
bool m_owned
 flag is this instance owns the memory (m_ptr) and is responsibly for destroying

Detailed Description

template<class V, class M>
class cuv::pitched_memory< V, M >

represents 2D non-contiguous ("pitched") memory

Definition at line 425 of file memory.hpp.

Constructor & Destructor Documentation

template<class V, class M>
cuv::pitched_memory< V, M >::pitched_memory ( index_type  i,
index_type  j,
const boost::shared_ptr< allocator _allocator = boost::make_shared<default_allocator>() 
)
inlineexplicit

constructor: reserves space for at least i*j elements

Parameters
inumber of rows
jminimum number of elements per row

Definition at line 485 of file memory.hpp.

Member Function Documentation

template<class V, class M>
size_type cuv::pitched_memory< V, M >::cols ( ) const
inline
Returns
the number of cols

Definition at line 457 of file memory.hpp.

template<class V, class M>
size_type cuv::pitched_memory< V, M >::memsize ( ) const
inline
Returns
number of stored bytes

Reimplemented from cuv::memory< V, M >.

Definition at line 472 of file memory.hpp.

template<class V, class M>
reference_type cuv::pitched_memory< V, M >::operator() ( const index_type i,
const index_type j 
)
inline

get a reference to a datum in memory

Parameters
ifirst (slow-changing) dimension index
jsecond (fast-changing) dimension index
Returns
reference to datum at index i,j

Definition at line 609 of file memory.hpp.

template<class V, class M>
const_reference_type cuv::pitched_memory< V, M >::operator() ( const index_type i,
const index_type j 
) const
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Definition at line 617 of file memory.hpp.

template<class V, class M>
my_type& cuv::pitched_memory< V, M >::operator= ( const my_type o)
inline

Copy pitched_memory.

Parameters
oSource pitched_memory
Returns
*this

Definition at line 538 of file memory.hpp.

template<class V, class M>
template<class OM >
my_type& cuv::pitched_memory< V, M >::operator= ( const pitched_memory< value_type, OM > &  o)
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Copy pitched_memory from other memory type.

Parameters
oSource pitched_memory
Returns
*this

Definition at line 566 of file memory.hpp.

template<class V, class M>
reference_type cuv::pitched_memory< V, M >::operator[] ( const index_type idx)
inline
Returns
a reference to memory at a position as if this were pitched memory
Parameters
idxposition

Definition at line 583 of file memory.hpp.

template<class V, class M>
const_reference_type cuv::pitched_memory< V, M >::operator[] ( const index_type idx) const
inline

This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.

Returns
a reference to memory at a position
Parameters
idxposition

Definition at line 598 of file memory.hpp.

template<class V, class M>
size_type cuv::pitched_memory< V, M >::pitch ( ) const
inline
Returns
the number of allocated cols

Definition at line 462 of file memory.hpp.

template<class V, class M>
size_type cuv::pitched_memory< V, M >::rows ( ) const
inline
Returns
the number of rows

Definition at line 452 of file memory.hpp.

template<class V, class M>
void cuv::pitched_memory< V, M >::set_size ( size_type  rows,
size_type  cols 
)
inline

set the size (reallocating, if necessary)

Parameters
rowsnumber of desired rows
colsnumber of desired columns

Definition at line 518 of file memory.hpp.

template<class V, class M>
void cuv::pitched_memory< V, M >::set_strides ( linear_memory< index_type, cuv::host_memory_space > &  strides,
const linear_memory< size_type, cuv::host_memory_space > &  shape,
row_major   
)
inline

set strides for this memory

determines the strides for a given shape, with special consideration to pitched dimension

Parameters
stridesoutput vector
shapeshape of the vector

row major version

Definition at line 631 of file memory.hpp.

template<class V, class M>
size_type cuv::pitched_memory< V, M >::size ( ) const
inline
Returns
number of stored elements

Reimplemented from cuv::memory< V, M >.

Definition at line 467 of file memory.hpp.


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