11 #ifndef SPIKE_STRIDED_RANGE
12 #define SPIKE_STRIDED_RANGE
14 #include <thrust/iterator/counting_iterator.h>
15 #include <thrust/iterator/transform_iterator.h>
16 #include <thrust/iterator/permutation_iterator.h>
17 #include <thrust/functional.h>
22 template <
typename Iterator>
28 struct stride_functor :
public thrust::unary_function<difference_type, difference_type>
39 typedef typename thrust::transform_iterator<stride_functor, CountingIterator>
TransformIterator;
thrust::counting_iterator< difference_type > CountingIterator
Definition: strided_range.h:38
Definition: strided_range.h:28
strided_range(Iterator first, Iterator last, difference_type stride)
Definition: strided_range.h:46
thrust::permutation_iterator< Iterator, TransformIterator > PermutationIterator
Definition: strided_range.h:40
iterator end(void) const
Definition: strided_range.h:54
__host__ __device__ difference_type operator()(const difference_type &i) const
Definition: strided_range.h:33
PermutationIterator iterator
Definition: strided_range.h:43
Definition: strided_range.h:23
thrust::transform_iterator< stride_functor, CountingIterator > TransformIterator
Definition: strided_range.h:39
difference_type m_stride
Definition: strided_range.h:62
stride_functor(difference_type stride)
Definition: strided_range.h:30
Iterator m_first
Definition: strided_range.h:60
difference_type m_stride
Definition: strided_range.h:35
iterator begin(void) const
Definition: strided_range.h:49
Iterator m_last
Definition: strided_range.h:61
thrust::iterator_difference< Iterator >::type difference_type
Definition: strided_range.h:26