Module primitives

Module primitives 

Source

Modules§

reduce_max_shuffle
reduce_min_shuffle
reduce_prod_shuffle
reduce_slice
reduce_slice_plane
reduce_slice_shared
reduce_sum_shuffle
reduce_tree

Structs§

ReduceRange
A simple range to specify how to iterate a slice when performing a reduction.
ReduceRangeExpand

Functions§

reduce_max_shuffle
Warp-level max reduction using shuffle operations. All lanes get the maximum of all 32 values in the warp.
reduce_min_shuffle
Warp-level min reduction using shuffle operations. All lanes get the minimum of all 32 values in the warp.
reduce_prod_shuffle
Warp-level product reduction using shuffle operations. All lanes get the product of all 32 values in the warp.
reduce_slice
Use an individual unit to reduce the items with the specified range. That is, this will reduces items[range.start], items[range.start + range.step] until items[range.end] (exclusive).
reduce_slice_plane
Use an individual plane to reduce the items with the specified range. That is, this will reduces items[range.start], items[range.start + range.step] until items[range.end] (exclusive).
reduce_slice_shared
Use an individual cube to reduce the items with the specified range. That is, this will reduces items[range.start], items[range.start + range.step] until items[range.end] (exclusive). Inside a cube, the reduction will use plane operations if use_planes is set to true.
reduce_sum_shuffle
Warp-level sum reduction using shuffle operations.
reduce_tree
Use all units within a cube to fuse the first size elements of accumulator inplace like this with some padding if size is not a power of 2.