OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
 
Loading...
Searching...
No Matches
cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT > Class Template Reference

A random-access output wrapper for storing array values using a PTX cache-modifier. More...

Detailed Description

template<CacheStoreModifier MODIFIER, typename ValueType, typename OffsetT = ptrdiff_t>
class cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >

A random-access output wrapper for storing array values using a PTX cache-modifier.

Overview
  • CacheModifiedOutputIterator is a random-access output iterator that wraps a native device pointer of type ValueType*. ValueType references are made by writing ValueType values through stores modified by MODIFIER.
  • Can be used to store any data type to memory using PTX cache store modifiers (e.g., "STORE_WB", "STORE_CG", "STORE_CS", "STORE_WT", etc.).
  • Can be constructed, manipulated, and exchanged within and between host and device functions, but can only be dereferenced within device functions.
  • Compatible with Thrust API v1.7 or newer.
Snippet
The code snippet below illustrates the use of CacheModifiedOutputIterator to dereference a device array of doubles using the "wt" PTX load modifier (i.e., write-through to system memory).
#include <cub/cub.cuh> // or equivalently <cub/iterator/cache_modified_output_iterator.cuh>
// Declare, allocate, and initialize a device array
double *d_out; // e.g., [, , , , , , ]
// Create an iterator wrapper
// Within device code:
itr[0] = 8.0;
itr[1] = 66.0;
itr[55] = 24.0;
A random-access output wrapper for storing array values using a PTX cache-modifier.
OutputIteratorT d_out
< [in] Pointer to the input sequence of data items
Usage Considerations
  • Can only be dereferenced within device code
Template Parameters
CacheStoreModifierThe cub::CacheStoreModifier to use when accessing data
ValueTypeThe value type of this iterator
OffsetTThe difference type of this iterator (Default: ptrdiff_t)

Definition at line 109 of file cache_modified_output_iterator.cuh.

Data Structures

struct  Reference
 

Public Types

typedef CacheModifiedOutputIterator self_type
 My own type.
 
typedef OffsetT difference_type
 Type to express the result of subtracting one iterator from another.
 
typedef void value_type
 The type of the element the iterator can point to.
 
typedef void pointer
 The type of a pointer to an element the iterator can point to.
 
typedef Reference reference
 The type of a reference to an element the iterator can point to.
 
typedef std::random_access_iterator_tag iterator_category
 The iterator category.
 

Public Member Functions

template<typename QualifiedValueType >
__host__ __device__ __forceinline__ CacheModifiedOutputIterator (QualifiedValueType *ptr)
 Constructor.
 
__host__ __device__ __forceinline__ self_type operator++ (int)
 Postfix increment.
 
__host__ __device__ __forceinline__ self_type operator++ ()
 Prefix increment.
 
__host__ __device__ __forceinline__ reference operator* () const
 Indirection.
 
template<typename Distance >
__host__ __device__ __forceinline__ self_type operator+ (Distance n) const
 Addition.
 
template<typename Distance >
__host__ __device__ __forceinline__ self_typeoperator+= (Distance n)
 Addition assignment.
 
template<typename Distance >
__host__ __device__ __forceinline__ self_type operator- (Distance n) const
 Subtraction.
 
template<typename Distance >
__host__ __device__ __forceinline__ self_typeoperator-= (Distance n)
 Subtraction assignment.
 
__host__ __device__ __forceinline__ difference_type operator- (self_type other) const
 Distance.
 
template<typename Distance >
__host__ __device__ __forceinline__ reference operator[] (Distance n) const
 Array subscript.
 
__host__ __device__ __forceinline__ bool operator== (const self_type &rhs)
 Equal to.
 
__host__ __device__ __forceinline__ bool operator!= (const self_type &rhs)
 Not equal to.
 

Private Attributes

ValueType * ptr
 

Friends

std::ostream & operator<< (std::ostream &os, const self_type &itr)
 ostream operator
 

Member Typedef Documentation

◆ difference_type

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
typedef OffsetT cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::difference_type

Type to express the result of subtracting one iterator from another.

Definition at line 133 of file cache_modified_output_iterator.cuh.

◆ iterator_category

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
typedef std::random_access_iterator_tag cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::iterator_category

The iterator category.

Definition at line 147 of file cache_modified_output_iterator.cuh.

◆ pointer

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
typedef void cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::pointer

The type of a pointer to an element the iterator can point to.

Definition at line 135 of file cache_modified_output_iterator.cuh.

◆ reference

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
typedef Reference cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::reference

The type of a reference to an element the iterator can point to.

Definition at line 136 of file cache_modified_output_iterator.cuh.

◆ self_type

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
typedef CacheModifiedOutputIterator cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::self_type

My own type.

Definition at line 132 of file cache_modified_output_iterator.cuh.

◆ value_type

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
typedef void cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::value_type

The type of the element the iterator can point to.

Definition at line 134 of file cache_modified_output_iterator.cuh.

Constructor & Destructor Documentation

◆ CacheModifiedOutputIterator()

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
template<typename QualifiedValueType >
__host__ __device__ __forceinline__ cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::CacheModifiedOutputIterator ( QualifiedValueType *  ptr)
inline

Constructor.

Parameters
ptrNative pointer to wrap

Definition at line 158 of file cache_modified_output_iterator.cuh.

Member Function Documentation

◆ operator!=()

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ bool cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator!= ( const self_type rhs)
inline

Not equal to.

Definition at line 238 of file cache_modified_output_iterator.cuh.

◆ operator*()

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ reference cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator* ( ) const
inline

Indirection.

Definition at line 181 of file cache_modified_output_iterator.cuh.

◆ operator+()

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ self_type cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator+ ( Distance  n) const
inline

Addition.

Definition at line 188 of file cache_modified_output_iterator.cuh.

◆ operator++() [1/2]

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ self_type cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator++ ( )
inline

Prefix increment.

Definition at line 174 of file cache_modified_output_iterator.cuh.

◆ operator++() [2/2]

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ self_type cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator++ ( int  )
inline

Postfix increment.

Definition at line 165 of file cache_modified_output_iterator.cuh.

◆ operator+=()

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ self_type & cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator+= ( Distance  n)
inline

Addition assignment.

Definition at line 196 of file cache_modified_output_iterator.cuh.

◆ operator-() [1/2]

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ self_type cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator- ( Distance  n) const
inline

Subtraction.

Definition at line 204 of file cache_modified_output_iterator.cuh.

◆ operator-() [2/2]

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ difference_type cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator- ( self_type  other) const
inline

Distance.

Definition at line 219 of file cache_modified_output_iterator.cuh.

◆ operator-=()

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ self_type & cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator-= ( Distance  n)
inline

Subtraction assignment.

Definition at line 212 of file cache_modified_output_iterator.cuh.

◆ operator==()

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
__host__ __device__ __forceinline__ bool cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator== ( const self_type rhs)
inline

Equal to.

Definition at line 232 of file cache_modified_output_iterator.cuh.

◆ operator[]()

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
template<typename Distance >
__host__ __device__ __forceinline__ reference cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::operator[] ( Distance  n) const
inline

Array subscript.

Definition at line 226 of file cache_modified_output_iterator.cuh.

Friends And Related Symbol Documentation

◆ operator<<

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
std::ostream & operator<< ( std::ostream &  os,
const self_type itr 
)
friend

ostream operator

Definition at line 244 of file cache_modified_output_iterator.cuh.

Field Documentation

◆ ptr

template<CacheStoreModifier MODIFIER, typename ValueType , typename OffsetT = ptrdiff_t>
ValueType* cub::CacheModifiedOutputIterator< MODIFIER, ValueType, OffsetT >::ptr
private

Definition at line 152 of file cache_modified_output_iterator.cuh.


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