|
__HOST__ __DEVICE__ | striding_padded_ptr (pointer ptr=pointer(), size_type stride=0) |
|
__HOST__ __DEVICE__ | striding_padded_ptr (const striding_padded_ptr &src) |
|
template<typename T2 , typename P2 > |
__HOST__ __DEVICE__ | striding_padded_ptr (const striding_padded_ptr< T2, P2 > &src) |
|
__HOST__ __DEVICE__ pointer | get () const |
|
__HOST__ __DEVICE__ size_type | get_stride () const |
|
__DEVICE__ reference | operator* () |
|
__DEVICE__ const_reference | operator* () const |
|
__DEVICE__ pointer | operator-> () const |
|
__DEVICE__ reference | operator[] (std::size_t i) |
|
__DEVICE__ const_reference | operator[] (std::size_t i) const |
|
__HOST__ __DEVICE__
striding_padded_ptr & | operator++ () |
|
__HOST__ __DEVICE__
striding_padded_ptr & | operator-- () |
|
__HOST__ __DEVICE__
striding_padded_ptr | operator++ (int) |
|
__HOST__ __DEVICE__
striding_padded_ptr | operator-- (int) |
|
__HOST__ __DEVICE__
striding_padded_ptr & | operator+= (int x) |
|
__HOST__ __DEVICE__
striding_padded_ptr & | operator-= (int x) |
|
__HOST__ __DEVICE__
striding_padded_ptr | operator+ (int x) const |
|
__HOST__ __DEVICE__
striding_padded_ptr | operator- (int x) const |
|
template<typename T2 , typename P2 > |
__HOST__ __DEVICE__ bool | operator== (const striding_padded_ptr< T2, P2 > &other) const |
|
template<typename T2 , typename P2 > |
__HOST__ __DEVICE__ bool | operator!= (const striding_padded_ptr< T2, P2 > &other) const |
|
template<typename T2 , typename P2 > |
__HOST__ __DEVICE__ bool | operator< (const striding_padded_ptr< T2, P2 > &other) const |
|
template<typename T2 , typename P2 > |
__HOST__ __DEVICE__ bool | operator> (const striding_padded_ptr< T2, P2 > &other) const |
|
template<typename T2 , typename P2 > |
__HOST__ __DEVICE__ bool | operator<= (const striding_padded_ptr< T2, P2 > &other) const |
|
template<typename T2 , typename P2 > |
__HOST__ __DEVICE__ bool | operator>= (const striding_padded_ptr< T2, P2 > &other) const |
|
template<typename T, typename P = typename ecuda::add_pointer<T>::type>
class ecuda::striding_padded_ptr< T, P >
A specialized pointer to striding memory.
A specialized pointer to device memory where traversal of the data takes into a "stride", or a fixed number of elements that are skipped each time the pointer is incremented.
The specialization is used to create certain views of a matrix or cube (e.g. single matrix column).
Memory use can be conceptualized as:
|--- stride ----|
+-+-------------+
| |xxxxxxxxxxxxx|
| |xxxxxxxxxxxxx| x = allocated but not used
| |xxxxxxxxxxxxx|
| |xxxxxxxxxxxxx|
| |xxxxxxxxxxxxx|
| |xxxxxxxxxxxxx| ... etc. (total size of the allocation is not known internally by striding_ptr)
+-+--------+----+
For example, a pointer that will traverse the first column of a 10x5 matrix containing elements of type T could be represented with striding_ptr<T>(ptr,5), where ptr points to the first element of the matrix.
Definition at line 78 of file striding_padded_ptr.hpp.