mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-09 20:25:34 -05:00
feat: option to force cyphertext encoding
This commit is contained in:
Submodule compiler/concrete-optimizer updated: f19becac21...20833cefac
@@ -24,6 +24,8 @@ constexpr uint DEFAULT_FALLBACK_LOG_NORM_WOPPBS = 8;
|
||||
constexpr bool DEFAULT_DISPLAY = false;
|
||||
constexpr bool DEFAULT_STRATEGY_V0 = false;
|
||||
constexpr bool DEFAULT_USE_GPU_CONSTRAINTS = false;
|
||||
constexpr concrete_optimizer::Encoding DEFAULT_ENCODING =
|
||||
concrete_optimizer::Encoding::Auto;
|
||||
|
||||
struct Config {
|
||||
double p_error;
|
||||
@@ -33,15 +35,19 @@ struct Config {
|
||||
std::uint64_t security;
|
||||
double fallback_log_norm_woppbs;
|
||||
bool use_gpu_constraints;
|
||||
concrete_optimizer::Encoding encoding;
|
||||
};
|
||||
|
||||
constexpr Config DEFAULT_CONFIG = {UNSPECIFIED_P_ERROR,
|
||||
NO_GLOBAL_P_ERROR,
|
||||
DEFAULT_DISPLAY,
|
||||
DEFAULT_STRATEGY_V0,
|
||||
DEFAULT_SECURITY,
|
||||
DEFAULT_FALLBACK_LOG_NORM_WOPPBS,
|
||||
DEFAULT_USE_GPU_CONSTRAINTS};
|
||||
constexpr Config DEFAULT_CONFIG = {
|
||||
UNSPECIFIED_P_ERROR,
|
||||
NO_GLOBAL_P_ERROR,
|
||||
DEFAULT_DISPLAY,
|
||||
DEFAULT_STRATEGY_V0,
|
||||
DEFAULT_SECURITY,
|
||||
DEFAULT_FALLBACK_LOG_NORM_WOPPBS,
|
||||
DEFAULT_USE_GPU_CONSTRAINTS,
|
||||
DEFAULT_ENCODING,
|
||||
};
|
||||
|
||||
using Dag = rust::Box<concrete_optimizer::OperationDag>;
|
||||
using Solution = concrete_optimizer::v0::Solution;
|
||||
|
||||
@@ -24,11 +24,13 @@ namespace mlir {
|
||||
namespace concretelang {
|
||||
|
||||
concrete_optimizer::Options options_from_config(optimizer::Config config) {
|
||||
concrete_optimizer::Options options;
|
||||
options.security_level = config.security;
|
||||
options.maximum_acceptable_error_probability = config.p_error;
|
||||
options.default_log_norm2_woppbs = config.fallback_log_norm_woppbs;
|
||||
options.use_gpu_constraints = config.use_gpu_constraints;
|
||||
concrete_optimizer::Options options = {
|
||||
/* .security_level = */ config.security,
|
||||
/* .maximum_acceptable_error_probability = */ config.p_error,
|
||||
/* .default_log_norm2_woppbs = */ config.fallback_log_norm_woppbs,
|
||||
/* .use_gpu_constraints = */ config.use_gpu_constraints,
|
||||
/* .encoding = */ config.encoding,
|
||||
};
|
||||
return options;
|
||||
}
|
||||
|
||||
|
||||
@@ -223,6 +223,16 @@ llvm::cl::opt<double> fallbackLogNormWoppbs(
|
||||
llvm::cl::init(mlir::concretelang::optimizer::DEFAULT_CONFIG
|
||||
.fallback_log_norm_woppbs));
|
||||
|
||||
llvm::cl::opt<concrete_optimizer::Encoding> optimizerEncoding(
|
||||
"force-encoding", llvm::cl::desc("Choose cyphertext encoding."),
|
||||
llvm::cl::init(mlir::concretelang::optimizer::DEFAULT_CONFIG.encoding),
|
||||
llvm::cl::values(clEnumValN(concrete_optimizer::Encoding::Auto, "auto",
|
||||
"Pick the best [default]")),
|
||||
llvm::cl::values(clEnumValN(concrete_optimizer::Encoding::Native, "native",
|
||||
"native")),
|
||||
llvm::cl::values(clEnumValN(concrete_optimizer::Encoding::Native, "crt",
|
||||
"Chineese Reminder Theorem representation")));
|
||||
|
||||
llvm::cl::list<int64_t> fhelinalgTileSizes(
|
||||
"fhelinalg-tile-sizes",
|
||||
llvm::cl::desc(
|
||||
@@ -371,6 +381,7 @@ cmdlineCompilationOptions() {
|
||||
options.optimizerConfig.p_error = cmdline::pbsErrorProbability;
|
||||
options.optimizerConfig.display = cmdline::displayOptimizerChoice;
|
||||
options.optimizerConfig.strategy_v0 = cmdline::optimizerV0;
|
||||
options.optimizerConfig.encoding = cmdline::optimizerEncoding;
|
||||
|
||||
if (!std::isnan(options.optimizerConfig.global_p_error) &&
|
||||
options.optimizerConfig.strategy_v0) {
|
||||
|
||||
Reference in New Issue
Block a user