[Mlir-commits] [mlir] [mlir][scf] Add getPartialResultTilePosition to PartialReductionOpInterface (PR #120465)
llvmlistbot at llvm.org
llvmlistbot at llvm.org
Mon Dec 23 13:53:07 PST 2024
================
@@ -476,29 +484,74 @@ struct LinalgOpPartialReductionInterface
Location loc, ValueRange partialReduce,
ArrayRef<int> reductionDims) const {
auto linalgOp = cast<LinalgOp>(op);
- SmallVector<int64_t> reductionDimsInt64(reductionDims);
- auto reduction = b.create<linalg::ReduceOp>(
- loc, partialReduce, linalgOp.getDpsInits(), reductionDimsInt64,
- [&linalgOp](OpBuilder &b, Location loc, ValueRange inputs) {
- int64_t numInits = linalgOp.getNumDpsInits();
- SmallVector<Value> yieldedValues;
- for (int idx : llvm::seq<int>(0, numInits)) {
+
+ // Permute the reduction dims as permuted by the partial result map.
+
+ int64_t numInits = linalgOp.getNumDpsInits();
+ SmallVector<Operation *> mergeOperations;
+ SmallVector<Value> replacements;
+ for (int idx : llvm::seq(numInits)) {
+ // linalg.reduce's iteration space is the result's iteration space (and
----------------
MaheshRavishankar wrote:
Is this correct? The iteration space of the `linalg.reduce` should be the operands iteration space cause the result does not have the reduction dimension.
https://github.com/llvm/llvm-project/pull/120465
More information about the Mlir-commits
mailing list