cub::TexObjInputIterator
Defined in cub/iterator/tex_obj_input_iterator.cuh
-
template<typename T, typename OffsetT = ptrdiff_t>
class TexObjInputIterator A random-access input wrapper for dereferencing array values through texture cache.
Uses newer Kepler-style texture objects.
- Overview
TexObjInputIterator wraps a native device pointer of type
ValueType*
. References to elements are to be loaded through texture cache.Can be used to load any data type from memory through texture cache.
Can be manipulated and exchanged within and between host and device functions, can only be constructed within host functions, and can only be dereferenced within device functions.
With regard to nested/dynamic parallelism, TexObjInputIterator iterators may only be created by the host thread, but can be used by any descendant kernel.
Compatible with Thrust API v1.7 or newer.
- Snippet
The code snippet below illustrates the use of
TexObjInputIterator
to dereference a device array of doubles through texture cache.#include <cub/cub.cuh> // or equivalently <cub/iterator/tex_obj_input_iterator.cuh> // Declare, allocate, and initialize a device array int num_items; // e.g., 7 double *d_in; // e.g., [8.0, 6.0, 7.0, 5.0, 3.0, 0.0, 9.0] // Create an iterator wrapper cub::TexObjInputIterator<double> itr; itr.BindTexture(d_in, sizeof(double) * num_items); ... // Within device code: printf("%f\n", itr[0]); // 8.0 printf("%f\n", itr[1]); // 6.0 printf("%f\n", itr[6]); // 9.0 ... itr.UnbindTexture();
- Template Parameters
T – The value type of this iterator
OffsetT – The difference type of this iterator (Default:
ptrdiff_t
)
Public Types
-
using self_type = TexObjInputIterator
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
The iterator category.
Public Functions
-
inline TexObjInputIterator()
Constructor.
-
template<typename QualifiedT>
inline cudaError_t BindTexture(QualifiedT *ptr, size_t bytes, size_t tex_offset = 0) Use this iterator to bind
ptr
with a texture reference.- Parameters
ptr – Native pointer to wrap that is aligned to cudaDeviceProp::textureAlignment
bytes – Number of bytes in the range
tex_offset – OffsetT (in items) from
ptr
denoting the position of the iterator
-
inline cudaError_t UnbindTexture()
Unbind this iterator from its texture reference.
-
inline difference_type operator-(self_type other) const
Distance.