mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-17 08:01:20 -05:00
In the optimizer, nodes without consumers are identified as outputs. Since we can now return multiple values, this is inherently buggy, since a value can then be both returned, and consumed to create another input. This commit fixes this by allowing the compiler to tag nodes as being outputs.
Concrete optimizer
Concrete Optimizer is a Rust library that find the best cryptographic parameters for a given TFHE homomorphic circuit. The goal if to minimize computation time under security and error constaints. Its main client is Concrete Compiler. It is implemented in Rust and offers a C++ API. It also provides a CLI tool to provide parameters for simplified circuits.
Prerequisite
- Have a rust toolchain installed (the last stable version is supported) https://www.rust-lang.org/tools/install
Build
Concrete Optimizer and its C++ interface are built automatically by Concrete Compiler.
To build Concrete Optimizer manually, run:
cargo build --release
Test
To run the tests, run:
cargo test --release
CLI tool Usage
Running ./optimizer prints a table of cryptographic parameters for different precisions and log2(norm2).
The tools accepts different options that can be recalled by:
./optimizer --help