[Mlir-commits] [mlir] [MLIR][SCFToOpenMP] Add automatic-num-threads option (PR #85771)
Pablo Antonio Martinez
llvmlistbot at llvm.org
Tue Mar 26 07:58:54 PDT 2024
================
@@ -437,7 +440,37 @@ struct ParallelOpLowering : public OpRewritePattern<scf::ParallelOp> {
rewriter.eraseOp(reduce);
Value numThreadsVar;
- if (numThreads > 0) {
+ if (automaticNumThreads) {
+ unsigned inferredNumThreads = 1;
+ for (auto [lb, ub, step] :
+ llvm::zip_equal(parallelOp.getLowerBound(),
+ parallelOp.getUpperBound(), parallelOp.getStep())) {
+ std::optional<int64_t> cstLb = getConstantIntValue(lb);
+ std::optional<int64_t> cstUb = getConstantIntValue(ub);
+ std::optional<int64_t> cstStep = getConstantIntValue(step);
+
+ if (!cstLb.has_value())
+ return emitError(loc)
+ << "Expected a parallel loop with constant lower bounds when "
+ "trying to automatically infer number of threads";
+
+ if (!cstUb.has_value())
+ return emitError(loc)
+ << "Expected a parallel loop with constant upper bounds when "
+ "trying to automatically infer number of threads\n";
+
+ if (!cstStep.has_value())
+ return emitError(loc)
+ << "Expected a forall with constant steps when trying to "
----------------
pabloantoniom wrote:
My bad, I meant parallel loop, it is fixed now.
https://github.com/llvm/llvm-project/pull/85771
More information about the Mlir-commits
mailing list