[PATCH] D148916: [Support][Parallel] Initialize threadIndex and add assertion checking its usage.

Chris Lattner via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Tue Apr 25 15:29:39 PDT 2023


lattner added a comment.

It isn't just the function pass manager:

  ~/Projects/circt> grep -i -r parallel lib (trimmed):
  lib/Transforms/StripDebugInfoWithPred.cpp:  parallelForEach(
  lib/Conversion/ExportVerilog/ExportVerilog.cpp:  parallelForEach(context, thingsToEmit, [&](StringOrOpToEmit &stringOrOp) {
  lib/Conversion/ExportVerilog/ExportVerilog.cpp:  if (failed(failableParallelForEach(
  lib/Conversion/ExportVerilog/ExportVerilog.cpp:  emitter.emitOps(list, output->os(), /*parallelize=*/false);
  lib/Conversion/ExportVerilog/ExportVerilog.cpp:  // Emit each file in parallel if context enables it.
  lib/Conversion/ExportVerilog/ExportVerilog.cpp:  parallelForEach(module->getContext(), emitter.files.begin(),
  lib/Conversion/ExportVerilog/ExportVerilog.cpp:  if (failed(failableParallelForEach(
  lib/Conversion/ExportVerilog/LegalizeNames.cpp:  mlir::parallelForEach(
  lib/Conversion/FIRRTLToHW/LowerToHW.cpp:    memories = llvm::parallelTransformReduce(
  lib/Conversion/FIRRTLToHW/LowerToHW.cpp:  auto result = mlir::failableParallelForEachN(
  lib/Dialect/HW/InnerSymbolTable.cpp:  return mlir::failableParallelForEach(
  lib/Dialect/HW/InnerSymbolTable.cpp:  return mlir::failableParallelForEach(
  lib/Dialect/FIRRTL/Transforms/IMDeadCodeElim.cpp:  mlir::parallelForEach(circuit.getContext(),
  lib/Dialect/FIRRTL/Transforms/IMConstProp.cpp:  mlir::parallelForEach(circuit.getContext(),
  lib/Dialect/FIRRTL/Transforms/VBToBV.cpp:      failableParallelForEach(&getContext(), modules, [&](FModuleOp module) {
  lib/Dialect/FIRRTL/Transforms/InnerSymbolDCE.cpp:  parallelForEach(&getContext(), modules,
  lib/Dialect/FIRRTL/Transforms/LowerTypes.cpp:  auto result = failableParallelForEach(&getContext(), ops, lowerModules);
  lib/Dialect/FIRRTL/Transforms/MemToRegOfVec.cpp:    mlir::parallelForEach(circtOp.getContext(), dutModuleSet,
  lib/Dialect/FIRRTL/Import/FIRParser.cpp:  auto anyFailed = mlir::failableParallelForEachN(

simialrly the MLIR inliner and verifier and passmgr have things like:

  ./mlir/lib/Pass/Pass.cpp:  if (failed(failableParallelForEach(context, opInfos, processFn)))
  ./mlir/lib/IR/Verifier.cpp:  if (failed(failableParallelForEach(
  ./mlir/lib/Transforms/Inliner.cpp:  return failableParallelForEach(ctx, nodesToVisit, [&](CallGraphNode *node) {


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D148916/new/

https://reviews.llvm.org/D148916



More information about the llvm-commits mailing list