mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-09 03:55:04 -05:00
fix(compiler): predicate OpenMP loop parallelization of Linalg on the --parallelize flag.
This commit is contained in:
@@ -48,7 +48,8 @@ lowerConcreteToStd(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
|
||||
mlir::LogicalResult
|
||||
lowerStdToLLVMDialect(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
std::function<bool(mlir::Pass *)> enablePass);
|
||||
std::function<bool(mlir::Pass *)> enablePass,
|
||||
bool parallelizeLoops);
|
||||
|
||||
mlir::LogicalResult optimizeLLVMModule(llvm::LLVMContext &llvmContext,
|
||||
llvm::Module &module);
|
||||
|
||||
@@ -296,8 +296,9 @@ CompilerEngine::compile(llvm::SourceMgr &sm, Target target, OptionalLib lib) {
|
||||
}
|
||||
|
||||
// MLIR canonical dialects -> LLVM Dialect
|
||||
if (mlir::concretelang::pipeline::lowerStdToLLVMDialect(mlirContext, module,
|
||||
enablePass)
|
||||
if (mlir::concretelang::pipeline::lowerStdToLLVMDialect(
|
||||
mlirContext, module, enablePass,
|
||||
/*parallelizeLoops =*/this->autoParallelize)
|
||||
.failed()) {
|
||||
return errorDiag("Failed to lower to LLVM dialect");
|
||||
}
|
||||
|
||||
@@ -193,7 +193,8 @@ lowerConcreteToStd(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
|
||||
mlir::LogicalResult
|
||||
lowerStdToLLVMDialect(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
std::function<bool(mlir::Pass *)> enablePass) {
|
||||
std::function<bool(mlir::Pass *)> enablePass,
|
||||
bool parallelizeLoops) {
|
||||
mlir::PassManager pm(&context);
|
||||
pipelinePrinting("StdToLLVM", pm, context);
|
||||
|
||||
@@ -208,16 +209,21 @@ lowerStdToLLVMDialect(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
addPotentiallyNestedPass(pm, mlir::createStdBufferizePass(), enablePass);
|
||||
addPotentiallyNestedPass(pm, mlir::createTensorBufferizePass(), enablePass);
|
||||
addPotentiallyNestedPass(pm, mlir::createLinalgBufferizePass(), enablePass);
|
||||
addPotentiallyNestedPass(pm, mlir::createConvertLinalgToParallelLoopsPass(),
|
||||
enablePass);
|
||||
if (parallelizeLoops)
|
||||
addPotentiallyNestedPass(pm, mlir::createConvertLinalgToParallelLoopsPass(),
|
||||
enablePass);
|
||||
else
|
||||
addPotentiallyNestedPass(pm, mlir::createConvertLinalgToLoopsPass(),
|
||||
enablePass);
|
||||
addPotentiallyNestedPass(pm, mlir::createSCFBufferizePass(), enablePass);
|
||||
addPotentiallyNestedPass(pm, mlir::createFuncBufferizePass(), enablePass);
|
||||
addPotentiallyNestedPass(
|
||||
pm, mlir::concretelang::createBufferizeDataflowTaskOpsPass(), enablePass);
|
||||
addPotentiallyNestedPass(pm, mlir::createFinalizingBufferizePass(),
|
||||
enablePass);
|
||||
addPotentiallyNestedPass(pm, mlir::createConvertSCFToOpenMPPass(),
|
||||
enablePass);
|
||||
if (parallelizeLoops)
|
||||
addPotentiallyNestedPass(pm, mlir::createConvertSCFToOpenMPPass(),
|
||||
enablePass);
|
||||
|
||||
// Lower Dataflow tasks to DRF
|
||||
addPotentiallyNestedPass(
|
||||
|
||||
Reference in New Issue
Block a user