diff --git a/compiler/concrete-optimizer b/compiler/concrete-optimizer index 20833cefa..d0654c0fa 160000 --- a/compiler/concrete-optimizer +++ b/compiler/concrete-optimizer @@ -1 +1 @@ -Subproject commit 20833cefac32b14ab409a6588593573e42839bc1 +Subproject commit d0654c0fa7a0ba1bcb74e3683c9a01194d7db328 diff --git a/compiler/include/concretelang/Support/V0Parameters.h b/compiler/include/concretelang/Support/V0Parameters.h index 78b3ca0a2..5df0b78a9 100644 --- a/compiler/include/concretelang/Support/V0Parameters.h +++ b/compiler/include/concretelang/Support/V0Parameters.h @@ -26,6 +26,7 @@ constexpr bool DEFAULT_STRATEGY_V0 = false; constexpr bool DEFAULT_USE_GPU_CONSTRAINTS = false; constexpr concrete_optimizer::Encoding DEFAULT_ENCODING = concrete_optimizer::Encoding::Auto; +constexpr bool DEFAULT_CACHE_ON_DISK = true; struct Config { double p_error; @@ -36,6 +37,7 @@ struct Config { double fallback_log_norm_woppbs; bool use_gpu_constraints; concrete_optimizer::Encoding encoding; + bool cache_on_disk; }; constexpr Config DEFAULT_CONFIG = { @@ -47,6 +49,7 @@ constexpr Config DEFAULT_CONFIG = { DEFAULT_FALLBACK_LOG_NORM_WOPPBS, DEFAULT_USE_GPU_CONSTRAINTS, DEFAULT_ENCODING, + DEFAULT_CACHE_ON_DISK, }; using Dag = rust::Box; diff --git a/compiler/lib/Support/V0Parameters.cpp b/compiler/lib/Support/V0Parameters.cpp index 1245ec419..1ca371e12 100644 --- a/compiler/lib/Support/V0Parameters.cpp +++ b/compiler/lib/Support/V0Parameters.cpp @@ -30,6 +30,7 @@ concrete_optimizer::Options options_from_config(optimizer::Config config) { /* .default_log_norm2_woppbs = */ config.fallback_log_norm_woppbs, /* .use_gpu_constraints = */ config.use_gpu_constraints, /* .encoding = */ config.encoding, + /* .cache_on_disk = */ config.cache_on_disk, }; return options; } diff --git a/compiler/src/main.cpp b/compiler/src/main.cpp index 9b8ce4314..5930cea49 100644 --- a/compiler/src/main.cpp +++ b/compiler/src/main.cpp @@ -249,6 +249,12 @@ llvm::cl::opt optimizerEncoding( llvm::cl::values(clEnumValN(concrete_optimizer::Encoding::Native, "crt", "Chineese Reminder Theorem representation"))); +llvm::cl::opt optimizerNoCacheOnDisk( + "optimizer-no-cache-on-disk", + llvm::cl::desc("Optimizer cache is sync from/to disk. Usefull to debug " + "cache issues."), + llvm::cl::init(false)); + llvm::cl::list fhelinalgTileSizes( "fhelinalg-tile-sizes", llvm::cl::desc( @@ -401,6 +407,7 @@ cmdlineCompilationOptions() { options.optimizerConfig.display = cmdline::displayOptimizerChoice; options.optimizerConfig.strategy_v0 = cmdline::optimizerV0; options.optimizerConfig.encoding = cmdline::optimizerEncoding; + options.optimizerConfig.cache_on_disk = !cmdline::optimizerNoCacheOnDisk; if (!std::isnan(options.optimizerConfig.global_p_error) && options.optimizerConfig.strategy_v0) {