cub::CacheModifiedInputIterator
Defined in cub/iterator/cache_modified_input_iterator.cuh
-
template<CacheLoadModifier MODIFIER, typename ValueType, typename OffsetT = ptrdiff_t>
class CacheModifiedInputIterator A random-access input wrapper for dereferencing array values using a PTX cache load modifier.
- Overview
CacheModifiedInputIterator is a random-access input iterator that wraps a native device pointer of type
ValueType*
.ValueType
references are made by readingValueType
values through loads modified byMODIFIER
.Can be used to load any data type from memory using PTX cache load modifiers (e.g., “LOAD_LDG”, “LOAD_CG”, “LOAD_CA”, “LOAD_CS”, “LOAD_CV”, 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
CacheModifiedInputIterator
to dereference a device array of double using the “ldg” PTX load modifier (i.e., load values through texture cache).#include <cub/cub.cuh> // or equivalently <cub/iterator/cache_modified_input_iterator.cuh> // Declare, allocate, and initialize a device array double *d_in; // e.g., [8.0, 6.0, 7.0, 5.0, 3.0, 0.0, 9.0] // Create an iterator wrapper cub::CacheModifiedInputIterator<cub::LOAD_LDG, double> itr(d_in); // Within device code: printf("%f\n", itr[0]); // 8.0 printf("%f\n", itr[1]); // 6.0 printf("%f\n", itr[6]); // 9.0
- Template Parameters
CacheLoadModifier – The cub::CacheLoadModifier 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 = CacheModifiedInputIterator
My own type.
-
using difference_type = OffsetT
Type to express the result of subtracting one iterator from another.
-
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
Public Functions
-
template<typename QualifiedValueType>
inline CacheModifiedInputIterator(QualifiedValueType *ptr) Constructor.
- Parameters
ptr – Native pointer to wrap
-
inline difference_type operator-(self_type other) const
Distance.