[Mlir-commits] [mlir] [mlir][gpu] Add 'cluster_size' attribute to gpu.subgroup_reduce (PR #104851)
Jakub Kuderski
llvmlistbot at llvm.org
Mon Aug 19 13:59:59 PDT 2024
================
@@ -1208,11 +1208,21 @@ def GPU_SubgroupReduceOp : GPU_Op<"subgroup_reduce", [SameOperandsAndResultType]
```mlir
%1 = gpu.subgroup_reduce add %a : (f32) -> (f32)
%2 = gpu.subgroup_reduce add %b : (vector<4xf16>) -> (vector<4xf16>)
+ %3 = gpu.subgroup_reduce add %c cluster_size(4) : (f32) -> (f32)
```
If `uniform` flag is set either none or all lanes of a subgroup need to execute
- this op in convergence. The reduction operation must be one
- of:
+ this op in convergence.
+
+ If a `cluster_size` is not provided, the reduction covers all lanes of the
+ subgroup and the result is equal for all lanes.
+
+ If a `cluster_size` is provided, the subgroup is divided into clusters of
+ `cluster_size` contiguous lanes each, a reduction is done for all lanes of
----------------
kuhar wrote:
It would be nice to clarify that these clusters are contagious and adjacent (instead of, say, strided / interleaved).
https://github.com/llvm/llvm-project/pull/104851
More information about the Mlir-commits
mailing list