mirror of
https://github.com/zama-ai/concrete.git
synced 2026-04-17 03:00:54 -04:00
Revert "feat(optimizer): create optimizer dag and use it"
This reverts commit 0b99f6d278.
This commit is contained in:
@@ -26,12 +26,9 @@
|
||||
#include <mlir/Target/LLVMIR/Export.h>
|
||||
#include <mlir/Transforms/Passes.h>
|
||||
|
||||
#include "concretelang/Support/CompilerEngine.h"
|
||||
#include "concretelang/Support/Error.h"
|
||||
#include <concretelang/Conversion/Passes.h>
|
||||
#include <concretelang/Dialect/BConcrete/Transforms/Passes.h>
|
||||
#include <concretelang/Dialect/Concrete/Transforms/Optimization.h>
|
||||
#include <concretelang/Dialect/FHE/Analysis/ConcreteOptimizer.h>
|
||||
#include <concretelang/Dialect/FHE/Analysis/MANP.h>
|
||||
#include <concretelang/Dialect/FHELinalg/Transforms/Tiling.h>
|
||||
#include <concretelang/Dialect/RT/Analysis/Autopar.h>
|
||||
@@ -76,13 +73,11 @@ addPotentiallyNestedPass(mlir::PassManager &pm, std::unique_ptr<Pass> pass,
|
||||
}
|
||||
}
|
||||
|
||||
llvm::Expected<std::map<std::string, llvm::Optional<optimizer::Description>>>
|
||||
getFHEContextFromFHE(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
optimizer::Config config,
|
||||
std::function<bool(mlir::Pass *)> enablePass) {
|
||||
llvm::Expected<llvm::Optional<mlir::concretelang::V0FHEConstraint>>
|
||||
getFHEConstraintsFromFHE(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
std::function<bool(mlir::Pass *)> enablePass) {
|
||||
llvm::Optional<size_t> oMax2norm;
|
||||
llvm::Optional<size_t> oMaxWidth;
|
||||
optimizer::FunctionsDag dags;
|
||||
|
||||
mlir::PassManager pm(&context);
|
||||
|
||||
@@ -114,36 +109,18 @@ getFHEContextFromFHE(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
if (pm.run(module.getOperation()).failed()) {
|
||||
return llvm::make_error<llvm::StringError>(
|
||||
"Failed to determine the maximum Arithmetic Noise Padding and maximum"
|
||||
" required precision",
|
||||
"required precision",
|
||||
llvm::inconvertibleErrorCode());
|
||||
}
|
||||
llvm::Optional<mlir::concretelang::V0FHEConstraint> constraint = llvm::None;
|
||||
llvm::Optional<mlir::concretelang::V0FHEConstraint> ret;
|
||||
|
||||
if (oMax2norm.hasValue() && oMaxWidth.hasValue()) {
|
||||
constraint = llvm::Optional<mlir::concretelang::V0FHEConstraint>(
|
||||
ret = llvm::Optional<mlir::concretelang::V0FHEConstraint>(
|
||||
{/*.norm2 = */ ceilLog2(oMax2norm.getValue()),
|
||||
/*.p = */ oMaxWidth.getValue()});
|
||||
}
|
||||
addPotentiallyNestedPass(pm, optimizer::createDagPass(config, dags),
|
||||
enablePass);
|
||||
if (pm.run(module.getOperation()).failed()) {
|
||||
return StreamStringError() << "Failed to create concrete-optimizer dag\n";
|
||||
}
|
||||
std::map<std::string, llvm::Optional<optimizer::Description>> descriptions;
|
||||
for (auto &entry_dag : dags) {
|
||||
if (!constraint) {
|
||||
descriptions.insert(
|
||||
decltype(descriptions)::value_type(entry_dag.first, llvm::None));
|
||||
continue;
|
||||
}
|
||||
optimizer::Description description = {*constraint,
|
||||
std::move(entry_dag.second)};
|
||||
llvm::Optional<optimizer::Description> opt_description{
|
||||
std::move(description)};
|
||||
descriptions.insert(decltype(descriptions)::value_type(
|
||||
entry_dag.first, std::move(opt_description)));
|
||||
}
|
||||
return std::move(descriptions);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
mlir::LogicalResult autopar(mlir::MLIRContext &context, mlir::ModuleOp &module,
|
||||
|
||||
Reference in New Issue
Block a user