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,
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],
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)) &&
451 ((
unsigned long long) (
num_rows * row_stride_bytes) < (
unsigned long long) std::numeric_limits<int>::max()))
457 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, lower_level, upper_level,
459 stream, debug_synchronous, is_byte_sample);
463 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, lower_level, upper_level,
465 stream, debug_synchronous, is_byte_sample);
523 typename SampleIteratorT,
529 void* d_temp_storage,
530 size_t& temp_storage_bytes,
531 SampleIteratorT d_samples,
532 CounterT* d_histogram,
536 cudaStream_t stream = 0,
537 bool debug_synchronous =
false)
540 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
542 CounterT* d_histogram1[1] = {d_histogram};
543 int num_levels1[1] = {num_levels};
544 LevelT* d_levels1[1] = {d_levels};
546 return MultiHistogramRange<1, 1>(
555 sizeof(SampleT) * num_samples,
618 typename SampleIteratorT,
624 void* d_temp_storage,
625 size_t& temp_storage_bytes,
626 SampleIteratorT d_samples,
627 CounterT* d_histogram,
632 size_t row_stride_bytes,
633 cudaStream_t stream = 0,
634 bool debug_synchronous =
false)
636 CounterT* d_histogram1[1] = {d_histogram};
637 int num_levels1[1] = {num_levels};
638 LevelT* d_levels1[1] = {d_levels};
640 return MultiHistogramRange<1, 1>(
716 int NUM_ACTIVE_CHANNELS,
717 typename SampleIteratorT,
723 void* d_temp_storage,
724 size_t& temp_storage_bytes,
725 SampleIteratorT d_samples,
726 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
727 int num_levels[NUM_ACTIVE_CHANNELS],
728 LevelT* d_levels[NUM_ACTIVE_CHANNELS],
730 cudaStream_t stream = 0,
731 bool debug_synchronous =
false)
734 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
736 return MultiHistogramRange<NUM_CHANNELS, NUM_ACTIVE_CHANNELS>(
745 sizeof(SampleT) * NUM_CHANNELS * num_pixels,
819 int NUM_ACTIVE_CHANNELS,
820 typename SampleIteratorT,
826 void* d_temp_storage,
827 size_t& temp_storage_bytes,
828 SampleIteratorT d_samples,
829 CounterT* d_histogram[NUM_ACTIVE_CHANNELS],
830 int num_levels[NUM_ACTIVE_CHANNELS],
831 LevelT* d_levels[NUM_ACTIVE_CHANNELS],
834 size_t row_stride_bytes,
835 cudaStream_t stream = 0,
836 bool debug_synchronous =
false)
839 typedef typename std::iterator_traits<SampleIteratorT>::value_type SampleT;
840 Int2Type<
sizeof(SampleT) == 1> is_byte_sample;
842 if ((
sizeof(
OffsetT) >
sizeof(
int)) &&
843 ((
unsigned long long) (
num_rows * row_stride_bytes) < (
unsigned long long) std::numeric_limits<int>::max()))
847 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, d_levels,
849 stream, debug_synchronous, is_byte_sample);
853 d_temp_storage, temp_storage_bytes, d_samples, d_histogram, num_levels, d_levels,
855 stream, debug_synchronous, is_byte_sample);
Optional outer namespace(s)
ArrayWrapper< int, NUM_ACTIVE_CHANNELS > ArrayWrapper< int, NUM_ACTIVE_CHANNELS > ArrayWrapper< CounterT *, NUM_ACTIVE_CHANNELS > ArrayWrapper< CounterT *, NUM_ACTIVE_CHANNELS > ArrayWrapper< OutputDecodeOpT, NUM_ACTIVE_CHANNELS > ArrayWrapper< PrivatizedDecodeOpT, NUM_ACTIVE_CHANNELS > OffsetT OffsetT num_rows
The number of rows in the region of interest.
OffsetT OffsetT
[in] Total number of input data items
ArrayWrapper< int, NUM_ACTIVE_CHANNELS > ArrayWrapper< int, NUM_ACTIVE_CHANNELS > ArrayWrapper< CounterT *, NUM_ACTIVE_CHANNELS > ArrayWrapper< CounterT *, NUM_ACTIVE_CHANNELS > ArrayWrapper< OutputDecodeOpT, NUM_ACTIVE_CHANNELS > ArrayWrapper< PrivatizedDecodeOpT, NUM_ACTIVE_CHANNELS > OffsetT num_row_pixels
The number of multi-channel pixels per row in the region of interest.
DeviceHistogram provides device-wide parallel operations for constructing histogram(s) from a sequenc...
static CUB_RUNTIME_FUNCTION cudaError_t HistogramRange(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_histogram, int num_levels, LevelT *d_levels, OffsetT num_samples, cudaStream_t stream=0, bool debug_synchronous=false)
Computes an intensity histogram from a sequence of data samples using the specified bin boundary leve...
static CUB_RUNTIME_FUNCTION cudaError_t HistogramRange(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_histogram, int num_levels, LevelT *d_levels, OffsetT num_row_samples, OffsetT num_rows, size_t row_stride_bytes, cudaStream_t stream=0, bool debug_synchronous=false)
Computes an intensity histogram from a sequence of data samples using the specified bin boundary leve...
static CUB_RUNTIME_FUNCTION cudaError_t MultiHistogramEven(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_histogram[NUM_ACTIVE_CHANNELS], int num_levels[NUM_ACTIVE_CHANNELS], LevelT lower_level[NUM_ACTIVE_CHANNELS], LevelT upper_level[NUM_ACTIVE_CHANNELS], OffsetT num_row_pixels, OffsetT num_rows, size_t row_stride_bytes, cudaStream_t stream=0, bool debug_synchronous=false)
Computes per-channel intensity histograms from a sequence of multi-channel "pixel" data samples using...
static CUB_RUNTIME_FUNCTION cudaError_t MultiHistogramRange(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_histogram[NUM_ACTIVE_CHANNELS], int num_levels[NUM_ACTIVE_CHANNELS], LevelT *d_levels[NUM_ACTIVE_CHANNELS], OffsetT num_row_pixels, OffsetT num_rows, size_t row_stride_bytes, cudaStream_t stream=0, bool debug_synchronous=false)
Computes per-channel intensity histograms from a sequence of multi-channel "pixel" data samples using...
static CUB_RUNTIME_FUNCTION cudaError_t MultiHistogramRange(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_histogram[NUM_ACTIVE_CHANNELS], int num_levels[NUM_ACTIVE_CHANNELS], LevelT *d_levels[NUM_ACTIVE_CHANNELS], OffsetT num_pixels, cudaStream_t stream=0, bool debug_synchronous=false)
Computes per-channel intensity histograms from a sequence of multi-channel "pixel" data samples using...
static CUB_RUNTIME_FUNCTION cudaError_t MultiHistogramEven(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_histogram[NUM_ACTIVE_CHANNELS], int num_levels[NUM_ACTIVE_CHANNELS], LevelT lower_level[NUM_ACTIVE_CHANNELS], LevelT upper_level[NUM_ACTIVE_CHANNELS], OffsetT num_pixels, cudaStream_t stream=0, bool debug_synchronous=false)
Computes per-channel intensity histograms from a sequence of multi-channel "pixel" data samples using...
static CUB_RUNTIME_FUNCTION cudaError_t HistogramEven(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_histogram, int num_levels, LevelT lower_level, LevelT upper_level, OffsetT num_samples, cudaStream_t stream=0, bool debug_synchronous=false)
Computes an intensity histogram from a sequence of data samples using equal-width bins.
static CUB_RUNTIME_FUNCTION cudaError_t HistogramEven(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_histogram, int num_levels, LevelT lower_level, LevelT upper_level, OffsetT num_row_samples, OffsetT num_rows, size_t row_stride_bytes, cudaStream_t stream=0, bool debug_synchronous=false)
Computes an intensity histogram from a sequence of data samples using equal-width bins.
static CUB_RUNTIME_FUNCTION cudaError_t DispatchRange(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_output_histograms[NUM_ACTIVE_CHANNELS], int num_output_levels[NUM_ACTIVE_CHANNELS], LevelT *d_levels[NUM_ACTIVE_CHANNELS], OffsetT num_row_pixels, OffsetT num_rows, OffsetT row_stride_samples, cudaStream_t stream, bool debug_synchronous, Int2Type< false > is_byte_sample)
CUB_RUNTIME_FUNCTION static __forceinline__ cudaError_t DispatchEven(void *d_temp_storage, size_t &temp_storage_bytes, SampleIteratorT d_samples, CounterT *d_output_histograms[NUM_ACTIVE_CHANNELS], int num_output_levels[NUM_ACTIVE_CHANNELS], LevelT lower_level[NUM_ACTIVE_CHANNELS], LevelT upper_level[NUM_ACTIVE_CHANNELS], OffsetT num_row_pixels, OffsetT num_rows, OffsetT row_stride_samples, cudaStream_t stream, bool debug_synchronous, Int2Type< false > is_byte_sample)
Allows for the treatment of an integral constant as a type at compile-time (e.g., to achieve static c...