41 #include "dispatch/dispatch_histogram.cuh"
42 #include "../util_namespace.cuh"
119 typename SampleIteratorT,
125 void* d_temp_storage,
126 size_t& temp_storage_bytes,
127 SampleIteratorT d_samples,
128 CounterT* d_histogram,
133 cudaStream_t stream = 0,
134 bool debug_synchronous =
false)
137 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
139 CounterT* d_histogram1[1] = {d_histogram};
140 int num_levels1[1] = {num_levels};
141 LevelT lower_level1[1] = {lower_level};
142 LevelT upper_level1[1] = {upper_level};
144 return MultiHistogramEven<1, 1>(
154 sizeof(SampleT) * num_samples,
218 typename SampleIteratorT,
224 void* d_temp_storage,
225 size_t& temp_storage_bytes,
226 SampleIteratorT d_samples,
227 CounterT* d_histogram,
231 OffsetT num_row_samples,
233 size_t row_stride_bytes,
234 cudaStream_t stream = 0,
235 bool debug_synchronous =
false)
237 CounterT* d_histogram1[1] = {d_histogram};
238 int num_levels1[1] = {num_levels};
239 LevelT lower_level1[1] = {lower_level};
240 LevelT upper_level1[1] = {upper_level};
242 return MultiHistogramEven<1, 1>(
319 int NUM_ACTIVE_CHANNELS,
320 typename SampleIteratorT,
326 void* d_temp_storage,
327 size_t& temp_storage_bytes,
328 SampleIteratorT d_samples,
329 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
330 int num_levels[NUM_ACTIVE_CHANNELS],
331 LevelT lower_level[NUM_ACTIVE_CHANNELS],
332 LevelT upper_level[NUM_ACTIVE_CHANNELS],
334 cudaStream_t stream = 0,
335 bool debug_synchronous =
false)
338 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
340 return MultiHistogramEven<NUM_CHANNELS, NUM_ACTIVE_CHANNELS>(
350 sizeof(SampleT) * NUM_CHANNELS * num_pixels,
426 int NUM_ACTIVE_CHANNELS,
427 typename SampleIteratorT,
433 void* d_temp_storage,
434 size_t& temp_storage_bytes,
435 SampleIteratorT d_samples,
436 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
437 int num_levels[NUM_ACTIVE_CHANNELS],
438 LevelT lower_level[NUM_ACTIVE_CHANNELS],
439 LevelT upper_level[NUM_ACTIVE_CHANNELS],
440 OffsetT num_row_pixels,
442 size_t row_stride_bytes,
443 cudaStream_t stream = 0,
444 bool debug_synchronous =
false)
447 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
448 Int2Type<sizeof(SampleT) == 1> is_byte_sample;
450 if ((
sizeof(OffsetT) >
sizeof(
int)) && (row_stride_bytes * num_rows < std::numeric_limits<int>::max()))
455 return DipatchHistogram<NUM_CHANNELS, NUM_ACTIVE_CHANNELS, SampleIteratorT, CounterT, LevelT, int>::DispatchEven(
456 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, lower_level, upper_level,
457 (
int) num_row_pixels, (
int) num_rows, (
int) (row_stride_bytes /
sizeof(SampleT)),
458 stream, debug_synchronous, is_byte_sample);
461 return DipatchHistogram<NUM_CHANNELS, NUM_ACTIVE_CHANNELS, SampleIteratorT, CounterT, LevelT, OffsetT>::DispatchEven(
462 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, lower_level, upper_level,
463 num_row_pixels, num_rows, (OffsetT) (row_stride_bytes /
sizeof(SampleT)),
464 stream, debug_synchronous, is_byte_sample);
522 typename SampleIteratorT,
528 void* d_temp_storage,
529 size_t& temp_storage_bytes,
530 SampleIteratorT d_samples,
531 CounterT* d_histogram,
535 cudaStream_t stream = 0,
536 bool debug_synchronous =
false)
539 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
541 CounterT* d_histogram1[1] = {d_histogram};
542 int num_levels1[1] = {num_levels};
543 LevelT* d_levels1[1] = {d_levels};
545 return MultiHistogramRange<1, 1>(
554 sizeof(SampleT) * num_samples,
617 typename SampleIteratorT,
623 void* d_temp_storage,
624 size_t& temp_storage_bytes,
625 SampleIteratorT d_samples,
626 CounterT* d_histogram,
629 OffsetT num_row_samples,
631 size_t row_stride_bytes,
632 cudaStream_t stream = 0,
633 bool debug_synchronous =
false)
635 CounterT* d_histogram1[1] = {d_histogram};
636 int num_levels1[1] = {num_levels};
637 LevelT* d_levels1[1] = {d_levels};
639 return MultiHistogramRange<1, 1>(
715 int NUM_ACTIVE_CHANNELS,
716 typename SampleIteratorT,
722 void* d_temp_storage,
723 size_t& temp_storage_bytes,
724 SampleIteratorT d_samples,
725 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
726 int num_levels[NUM_ACTIVE_CHANNELS],
727 LevelT* d_levels[NUM_ACTIVE_CHANNELS],
729 cudaStream_t stream = 0,
730 bool debug_synchronous =
false)
733 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
735 return MultiHistogramRange<NUM_CHANNELS, NUM_ACTIVE_CHANNELS>(
744 sizeof(SampleT) * NUM_CHANNELS * num_pixels,
818 int NUM_ACTIVE_CHANNELS,
819 typename SampleIteratorT,
825 void* d_temp_storage,
826 size_t& temp_storage_bytes,
827 SampleIteratorT d_samples,
828 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
829 int num_levels[NUM_ACTIVE_CHANNELS],
830 LevelT* d_levels[NUM_ACTIVE_CHANNELS],
831 OffsetT num_row_pixels,
833 size_t row_stride_bytes,
834 cudaStream_t stream = 0,
835 bool debug_synchronous =
false)
838 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
839 Int2Type<sizeof(SampleT) == 1> is_byte_sample;
841 if ((
sizeof(OffsetT) >
sizeof(
int)) && (row_stride_bytes * num_rows < std::numeric_limits<int>::max()))
844 return DipatchHistogram<NUM_CHANNELS, NUM_ACTIVE_CHANNELS, SampleIteratorT, CounterT, LevelT, int>::DispatchRange(
845 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, d_levels,
846 (
int) num_row_pixels, (
int) num_rows, (
int) (row_stride_bytes /
sizeof(SampleT)),
847 stream, debug_synchronous, is_byte_sample);
850 return DipatchHistogram<NUM_CHANNELS, NUM_ACTIVE_CHANNELS, SampleIteratorT, CounterT, LevelT, OffsetT>::DispatchRange(
851 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, d_levels,
852 num_row_pixels, num_rows, (OffsetT) (row_stride_bytes /
sizeof(SampleT)),
853 stream, debug_synchronous, is_byte_sample);