41 #include "dispatch/dispatch_histogram.cuh"
42 #include "../util_namespace.cuh"
120 typename SampleIteratorT,
126 void* d_temp_storage,
127 size_t& temp_storage_bytes,
128 SampleIteratorT d_samples,
129 CounterT* d_histogram,
134 cudaStream_t stream = 0,
135 bool debug_synchronous =
false)
138 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
140 CounterT* d_histogram1[1] = {d_histogram};
141 int num_levels1[1] = {num_levels};
142 LevelT lower_level1[1] = {lower_level};
143 LevelT upper_level1[1] = {upper_level};
145 return MultiHistogramEven<1, 1>(
155 sizeof(SampleT) * num_samples,
220 typename SampleIteratorT,
226 void* d_temp_storage,
227 size_t& temp_storage_bytes,
228 SampleIteratorT d_samples,
229 CounterT* d_histogram,
233 OffsetT num_row_samples,
235 size_t row_stride_bytes,
236 cudaStream_t stream = 0,
237 bool debug_synchronous =
false)
239 CounterT* d_histogram1[1] = {d_histogram};
240 int num_levels1[1] = {num_levels};
241 LevelT lower_level1[1] = {lower_level};
242 LevelT upper_level1[1] = {upper_level};
244 return MultiHistogramEven<1, 1>(
322 int NUM_ACTIVE_CHANNELS,
323 typename SampleIteratorT,
329 void* d_temp_storage,
330 size_t& temp_storage_bytes,
331 SampleIteratorT d_samples,
332 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
333 int num_levels[NUM_ACTIVE_CHANNELS],
334 LevelT lower_level[NUM_ACTIVE_CHANNELS],
335 LevelT upper_level[NUM_ACTIVE_CHANNELS],
337 cudaStream_t stream = 0,
338 bool debug_synchronous =
false)
341 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
343 return MultiHistogramEven<NUM_CHANNELS, NUM_ACTIVE_CHANNELS>(
353 sizeof(SampleT) * NUM_CHANNELS * num_pixels,
430 int NUM_ACTIVE_CHANNELS,
431 typename SampleIteratorT,
437 void* d_temp_storage,
438 size_t& temp_storage_bytes,
439 SampleIteratorT d_samples,
440 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
441 int num_levels[NUM_ACTIVE_CHANNELS],
442 LevelT lower_level[NUM_ACTIVE_CHANNELS],
443 LevelT upper_level[NUM_ACTIVE_CHANNELS],
444 OffsetT num_row_pixels,
446 size_t row_stride_bytes,
447 cudaStream_t stream = 0,
448 bool debug_synchronous =
false)
451 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
454 if ((
sizeof(OffsetT) >
sizeof(
int)) && (row_stride_bytes * num_rows < std::numeric_limits<int>::max()))
459 return DipatchHistogram<NUM_CHANNELS, NUM_ACTIVE_CHANNELS, SampleIteratorT, CounterT, LevelT, int>::DispatchEven(
460 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, lower_level, upper_level,
461 (
int) num_row_pixels, (
int) num_rows, (
int) (row_stride_bytes /
sizeof(SampleT)),
462 stream, debug_synchronous, is_byte_sample);
465 return DipatchHistogram<NUM_CHANNELS, NUM_ACTIVE_CHANNELS, SampleIteratorT, CounterT, LevelT, OffsetT>::DispatchEven(
466 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, lower_level, upper_level,
467 num_row_pixels, num_rows, (OffsetT) (row_stride_bytes /
sizeof(SampleT)),
468 stream, debug_synchronous, is_byte_sample);
527 typename SampleIteratorT,
533 void* d_temp_storage,
534 size_t& temp_storage_bytes,
535 SampleIteratorT d_samples,
536 CounterT* d_histogram,
540 cudaStream_t stream = 0,
541 bool debug_synchronous =
false)
544 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
546 CounterT* d_histogram1[1] = {d_histogram};
547 int num_levels1[1] = {num_levels};
548 LevelT* d_levels1[1] = {d_levels};
550 return MultiHistogramRange<1, 1>(
559 sizeof(SampleT) * num_samples,
623 typename SampleIteratorT,
629 void* d_temp_storage,
630 size_t& temp_storage_bytes,
631 SampleIteratorT d_samples,
632 CounterT* d_histogram,
635 OffsetT num_row_samples,
637 size_t row_stride_bytes,
638 cudaStream_t stream = 0,
639 bool debug_synchronous =
false)
641 CounterT* d_histogram1[1] = {d_histogram};
642 int num_levels1[1] = {num_levels};
643 LevelT* d_levels1[1] = {d_levels};
645 return MultiHistogramRange<1, 1>(
722 int NUM_ACTIVE_CHANNELS,
723 typename SampleIteratorT,
729 void* d_temp_storage,
730 size_t& temp_storage_bytes,
731 SampleIteratorT d_samples,
732 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
733 int num_levels[NUM_ACTIVE_CHANNELS],
734 LevelT* d_levels[NUM_ACTIVE_CHANNELS],
736 cudaStream_t stream = 0,
737 bool debug_synchronous =
false)
740 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
742 return MultiHistogramRange<NUM_CHANNELS, NUM_ACTIVE_CHANNELS>(
751 sizeof(SampleT) * NUM_CHANNELS * num_pixels,
826 int NUM_ACTIVE_CHANNELS,
827 typename SampleIteratorT,
833 void* d_temp_storage,
834 size_t& temp_storage_bytes,
835 SampleIteratorT d_samples,
836 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
837 int num_levels[NUM_ACTIVE_CHANNELS],
838 LevelT* d_levels[NUM_ACTIVE_CHANNELS],
839 OffsetT num_row_pixels,
841 size_t row_stride_bytes,
842 cudaStream_t stream = 0,
843 bool debug_synchronous =
false)
846 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
849 if ((
sizeof(OffsetT) >
sizeof(
int)) && (row_stride_bytes * num_rows < std::numeric_limits<int>::max()))
852 return DipatchHistogram<NUM_CHANNELS, NUM_ACTIVE_CHANNELS, SampleIteratorT, CounterT, LevelT, int>::DispatchRange(
853 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, d_levels,
854 (
int) num_row_pixels, (
int) num_rows, (
int) (row_stride_bytes /
sizeof(SampleT)),
855 stream, debug_synchronous, is_byte_sample);
858 return DipatchHistogram<NUM_CHANNELS, NUM_ACTIVE_CHANNELS, SampleIteratorT, CounterT, LevelT, OffsetT>::DispatchRange(
859 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, d_levels,
860 num_row_pixels, num_rows, (OffsetT) (row_stride_bytes /
sizeof(SampleT)),
861 stream, debug_synchronous, is_byte_sample);