36 #include <thrust/reduce.h>
37 #include <thrust/scan.h>
38 #include <thrust/copy.h>
39 #include <thrust/sort.h>
40 #include <thrust/binary_search.h>
41 #include <thrust/merge.h>
42 #include <thrust/iterator/constant_iterator.h>
44 #if defined(__CUDACC__)
96 template <
typename system_tag,
typename PredicateIterator>
99 const PredicateIterator pred);
103 template <
typename system_tag,
typename PredicateIterator>
106 const PredicateIterator pred);
110 template <
typename system_tag,
typename Iterator>
113 const Iterator values);
118 template <
typename system_tag,
typename Iterator,
typename Headflags>
121 const Iterator values,
122 const Headflags flags);
127 template <
typename system_tag,
typename Iterator,
typename Functor>
135 template <
typename system_tag,
typename Iterator,
typename Output,
typename Functor>
140 const Functor functor);
144 template <
typename system_tag,
typename Iterator1,
typename Iterator2,
typename Output,
typename Functor>
150 const Functor functor);
159 template <
typename system_tag,
typename InputIterator,
typename BinaryOp>
160 typename std::iterator_traits<InputIterator>::value_type
reduce(
174 template <
typename system_tag,
typename InputIterator,
typename OutputIterator,
typename BinaryOp>
191 template <
typename system_tag,
typename InputIterator,
typename OutputIterator,
typename BinaryOp,
typename Identity>
210 template <
typename system_tag,
typename InputIterator,
typename FlagsIterator,
typename OutputIterator>
228 template <
typename system_tag,
typename InputIterator,
typename OutputIterator,
typename Predicate>
233 const Predicate pred,
246 template <
typename system_tag,
typename InputIterator,
typename OutputIterator,
typename CountIterator>
251 CountIterator counts,
266 template <
typename system_tag,
typename KeyIterator,
typename ValueIterator,
typename OutputKeyIterator,
typename OutputValueIterator,
typename ReductionOp>
270 ValueIterator values_in,
271 OutputKeyIterator keys_out,
272 OutputValueIterator values_out,
273 ReductionOp reduction_op,
284 template <
typename system_tag,
typename KeyIterator,
typename ValueIterator,
typename OutputIterator>
287 ValueIterator values,
290 OutputIterator indices);
300 template <
typename system_tag,
typename KeyIterator,
typename ValueIterator,
typename OutputIterator>
303 ValueIterator values,
306 OutputIterator indices);
314 template <
typename system_tag,
typename KeyIterator>
327 template <
typename system_tag,
typename KeyIterator,
typename ValueIterator>
331 ValueIterator values,
348 typename key_iterator1,
349 typename key_iterator2,
350 typename value_iterator1,
351 typename value_iterator2,
353 typename value_output>
357 const key_iterator1 A_keys,
358 const key_iterator2 B_keys,
359 const value_iterator1 A_values,
360 const value_iterator2 B_values,
362 value_output C_values,
368 template <
typename system_tag>
373 template <
typename Iterator,
typename Functor>
379 for_each<system_tag>( n, in, functor );
384 template <
typename Functor>
389 for_each<system_tag>( n, thrust::make_counting_iterator<uint64>(0), functor );
405 m_speed_hi( 0.0f ) {}
409 template <
typename Iterator,
typename Functor>
417 template <
typename Functor>
422 this->
operator()( n, thrust::make_counting_iterator<uint64>(0), functor );
429 template <
typename KernelFunction>
430 uint32 suggested_blocks(KernelFunction kernel,
const uint32 cta_size)
const;
434 void update(
const uint32 n_blocks,
const float speed);