[Mlir-commits] [mlir] Add lower-vector-multi-reduction pass (PR #87333)

llvmlistbot at llvm.org llvmlistbot at llvm.org
Mon Apr 8 00:49:09 PDT 2024


================
@@ -461,6 +471,31 @@ struct OneDimMultiReductionToTwoDim
     return success();
   }
 };
+
+struct LowerVectorMultiReductionPass
+    : public vector::impl::LowerVectorMultiReductionBase<
+          LowerVectorMultiReductionPass> {
+  LowerVectorMultiReductionPass(vector::VectorMultiReductionLowering option) {
+    this->loweringStrategy = option;
+  }
+
+  void runOnOperation() override {
+    Operation *op = getOperation();
+    MLIRContext *context = op->getContext();
+
+    RewritePatternSet loweringPatterns(context);
+    populateVectorMultiReductionLoweringPatterns(loweringPatterns,
+                                                 this->loweringStrategy);
----------------
xiaoleis-nv wrote:

Hi @joker-eph,

I understand this point, and I've learned something new from it. Regarding the specific pattern in question, it's actually not just a single pattern but rather a collection of patterns, which includes:

- InnerOuterDimReductionConversion
- ReduceMultiDimReductionRank
- OneDimMultiReductionToTwoDim
- TwoDimMultiReductionToReduction
- TwoDimMultiReductionToElementWise

As you have mentioned, these patterns might not make the time spent in the greedy rewriter stand out. Therefore, I think we can maintain the current implementation here.

https://github.com/llvm/llvm-project/pull/87333


More information about the Mlir-commits mailing list