#[non_exhaustive]pub enum GroupOperation {
Reduce = 0,
InclusiveScan = 1,
ExclusiveScan = 2,
ClusteredReduce = 3,
PartitionedReduceNV = 6,
PartitionedInclusiveScanNV = 7,
PartitionedExclusiveScanNV = 8,
}
Expand description
Defines the class of group operation.
Variants (Non-exhaustive)§
This enum is marked as non-exhaustive
Reduce = 0
A reduction operation for all values of a specific value X specified by invocations within a workgroup.
InclusiveScan = 1
A binary operation with an identity I and n (where n is the size of the workgroup) elements[a0, a1, … an-1] resulting in [a0, (a0 op a1), …(a0 op a1 op … op an-1)]
ExclusiveScan = 2
A binary operation with an identity I and n (where n is the size of the workgroup) elements[a0, a1, … an-1] resulting in [I, a0, (a0 op a1), … (a0 op a1 op … op an-2)].
ClusteredReduce = 3
The GroupOperation
ClusteredReduce
.
All instructions with a GroupOperation
require an additional ClusterSize
parameter when GroupOperation
is
ClusteredReduce
. To map this requirement into rust, all function have a base version accepting GroupOperation
as a const generic, and a _clustered
variant that is fixed to ClusteredReduce
and takes the additional
ClusterSize
parameter as a const generic. To not accidentally use a ClusteredReduce
in the base variant of the
function, it was removed from the GroupOperation
enum and instead resides individually.
PartitionedReduceNV = 6
Reserved.
Requires Capability GroupNonUniformPartitionedNV
.
PartitionedInclusiveScanNV = 7
Reserved.
Requires Capability GroupNonUniformPartitionedNV
.
PartitionedExclusiveScanNV = 8
Reserved.
Requires Capability GroupNonUniformPartitionedNV
.