Template class containing compile-time parameters to the segmented scan functions.
More...
|
typedef Oper | Op |
| The operator functor used for segmented scan.
|
|
template<typename T, class Oper, bool backward, bool exclusivity, bool doShiftFlags, bool fullBlock, bool sums, bool sm12OrBetter>
class SegmentedScanTraits< T, Oper, backward, exclusivity, doShiftFlags, fullBlock, sums, sm12OrBetter >
Template class containing compile-time parameters to the segmented scan functions.
SegmentedScanTraits is passed as a template parameter to all segmented scan functions. By using these compile-time functions we can enable generic code while maintaining the highest performance. This is crucial for the performance of low-level workhorse algorithms like segmented scan.
- Parameters
-
T | The datatype of the segmented scan |
oper | The CUDPPOperator to use for the segmented scan (add, max, etc.) |
unroll | True if scan inner loops should be unrolled |
sums | True if each block should write it's sum to the d_blockSums array (false for single-block scans) |
backward | True if this is a backward scan, False if this is a forward scan |
fullBlock | True if all blocks in this scan are full (CTA_SIZE * SCAN_ELEMENTS_PER_THREAD elements) |
exclusivity | True for exclusive scans, false for inclusive scans |
template<typename T , class Oper , bool backward, bool exclusivity, bool doShiftFlags, bool fullBlock, bool sums, bool sm12OrBetter>
static __device__ bool SegmentedScanTraits< T, Oper, backward, exclusivity, doShiftFlags, fullBlock, sums, sm12OrBetter >::isBackward |
( |
| ) |
|
|
inlinestatic |
- Returns
- true if this is a backward scan
template<typename T , class Oper , bool backward, bool exclusivity, bool doShiftFlags, bool fullBlock, bool sums, bool sm12OrBetter>
static __device__ bool SegmentedScanTraits< T, Oper, backward, exclusivity, doShiftFlags, fullBlock, sums, sm12OrBetter >::isExclusive |
( |
| ) |
|
|
inlinestatic |
- Returns
- true if this is an exclusive scan
template<typename T , class Oper , bool backward, bool exclusivity, bool doShiftFlags, bool fullBlock, bool sums, bool sm12OrBetter>
static __device__ bool SegmentedScanTraits< T, Oper, backward, exclusivity, doShiftFlags, fullBlock, sums, sm12OrBetter >::shiftFlags |
( |
| ) |
|
|
inlinestatic |
- Returns
- true if this scan needs to shift flags to the left. This is only needed for the first level scan in a multi-block scan
template<typename T , class Oper , bool backward, bool exclusivity, bool doShiftFlags, bool fullBlock, bool sums, bool sm12OrBetter>
static __device__ bool SegmentedScanTraits< T, Oper, backward, exclusivity, doShiftFlags, fullBlock, sums, sm12OrBetter >::isFullBlock |
( |
| ) |
|
|
inlinestatic |
- Returns
- true if this is a full scan – all blocks process CTA_SIZE * SCAN_ELEMENTS_PER_THREAD elements
template<typename T , class Oper , bool backward, bool exclusivity, bool doShiftFlags, bool fullBlock, bool sums, bool sm12OrBetter>
static __device__ bool SegmentedScanTraits< T, Oper, backward, exclusivity, doShiftFlags, fullBlock, sums, sm12OrBetter >::writeSums |
( |
| ) |
|
|
inlinestatic |
- Returns
- true if this scan writes the sum of each block to the d_blockSums array (multi-block scans)
template<typename T , class Oper , bool backward, bool exclusivity, bool doShiftFlags, bool fullBlock, bool sums, bool sm12OrBetter>
static __device__ bool SegmentedScanTraits< T, Oper, backward, exclusivity, doShiftFlags, fullBlock, sums, sm12OrBetter >::isSM12OrBetter |
( |
| ) |
|
|
inlinestatic |
- Returns
- true if we are sm12 or better hardware
The documentation for this class was generated from the following file: