#[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.