cub::CacheModifiedOutputIterator
Defined in cub/iterator/cache_modified_output_iterator.cuh
-
template<CacheStoreModifier MODIFIER, typename ValueType, typename OffsetT = ptrdiff_t>
class CacheModifiedOutputIterator 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 writingValueType
values through stores modified byMODIFIER
.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 cub::CacheModifiedOutputIterator<cub::STORE_WT, double> itr(d_out); // Within device code: itr[0] = 8.0; itr[1] = 66.0; itr[55] = 24.0;
- Usage Considerations
Can only be dereferenced within device code
- Template Parameters
CacheStoreModifier – The cub::CacheStoreModifier to use when accessing data
ValueType – The value type of this iterator
OffsetT – The difference type of this iterator (Default:
ptrdiff_t
)
Public Types
-
using self_type = CacheModifiedOutputIterator
My own type.
-
using difference_type = OffsetT
Type to express the result of subtracting one iterator from another.
-
using value_type = void
The type of the element the iterator can point to.
-
using pointer = void
The type of a pointer to an element the iterator can point to.
-
using reference = Reference
The type of a reference to an element the iterator can point to.
-
using iterator_category = typename THRUST_NS_QUALIFIER::detail::iterator_facade_category<THRUST_NS_QUALIFIER::device_system_tag, THRUST_NS_QUALIFIER::random_access_traversal_tag, value_type, reference>::type
The iterator category.
Public Functions
-
template<typename QualifiedValueType>
inline CacheModifiedOutputIterator(QualifiedValueType *ptr) - Parameters
ptr – Native pointer to wrap
-
inline difference_type operator-(self_type other) const
Distance.