diff --git a/docs/SUMMARY.md b/docs/SUMMARY.md index b6aed9bad..3df14c3d9 100644 --- a/docs/SUMMARY.md +++ b/docs/SUMMARY.md @@ -6,46 +6,46 @@ * [What is Concrete?](get-started/readme.md) * [Installation](get-started/installing.md) -* [Quick start](get-started/quick_start.md) +* [Quick start](get-started/quick\_start.md) * [Compatibility](get-started/compatibility.md) * [Terminology](get-started/terminology.md) ## Core features -* [Overview](core-features/fhe_basics.md) -* [Table lookups (basics)](core-features/table_lookups.md) -* [Non-linear operations](core-features/non_linear_operations.md) -* Advanced features - * [Bit extraction](core-features/bit_extraction.md) +* [Overview](core-features/fhe\_basics.md) +* [Table lookups (basics)](core-features/table\_lookups.md) +* [Non-linear operations](core-features/non\_linear\_operations.md) +* [Advanced features](core-features/advanced-features/README.md) + * [Bit extraction](core-features/bit\_extraction.md) * [Common tips](core-features/workarounds.md) * [Extensions](core-features/extensions.md) ## Compilation * [Combining compiled functions](compilation/combining.md) - * [With composition](compilation/composition.md) - * [With modules](compilation/composing_functions_with_modules.md) -* Key-related options for faster execution - * [Multi precision](compilation/multi_precision.md) - * [Multi parameters](compilation/multi_parameters.md) + * [With composition](compilation/composition.md) + * [With modules](compilation/composing\_functions\_with\_modules.md) +* [Key-related options for faster execution](compilation/key-related-options-for-faster-execution/README.md) + * [Multi precision](compilation/multi\_precision.md) + * [Multi parameters](compilation/multi\_parameters.md) * [Compression](compilation/compression.md) -* [Reusing arguments](compilation/reuse_arguments.md) -* [Common errors](compilation/common_errors.md) +* [Reusing arguments](compilation/reuse\_arguments.md) +* [Common errors](compilation/common\_errors.md) ## Execution / Analysis * [Simulation](execution-analysis/simulation.md) * [Debugging and artifact](execution-analysis/debug.md) -* [GPU acceleration](execution-analysis/gpu_acceleration.md) -* Other +* [GPU acceleration](execution-analysis/gpu\_acceleration.md) +* [Other](execution-analysis/other/README.md) * [Statistics](compilation/statistics.md) * [Progressbar](execution-analysis/progressbar.md) - * [Formatting and drawing](execution-analysis/formatting_and_drawing.md) + * [Formatting and drawing](execution-analysis/formatting\_and\_drawing.md) ## Guides * [Configure](guides/configure.md) -* [Manage keys](guides/manage_keys.md) +* [Manage keys](guides/manage\_keys.md) * [Deploy](guides/deploy.md) ## Tutorials @@ -60,16 +60,16 @@ ## Explanations -* [Compiler workflow](dev/compilation/compiler_workflow.md) -* Compiler internals - * [Table lookups](core-features/table_lookups_advanced.md) +* [Compiler workflow](dev/compilation/compiler\_workflow.md) +* [Compiler internals](explanations/compiler-internals/README.md) + * [Table lookups](core-features/table\_lookups\_advanced.md) * [Rounding](core-features/rounding.md) * [Truncating](core-features/truncating.md) - * [Floating points](core-features/floating_points.md) + * [Floating points](core-features/floating\_points.md) * [Comparisons](core-features/comparisons.md) * [Min/Max operations](core-features/minmax.md) * [Bitwise operations](core-features/bitwise.md) - * [Direct circuits](compilation/direct_circuits.md) + * [Direct circuits](compilation/direct\_circuits.md) * [Tagging](core-features/tagging.md) * [Security](explanations/security.md) * [Frontend fusing](explanations/fusing.md) @@ -79,10 +79,10 @@ * [Contributing](dev/contributing.md) * [Release note](https://github.com/zama-ai/concrete/releases) * [Feature request](https://github.com/zama-ai/concrete/issues/new?assignees=\&labels=feature\&projects=\&template=features.md) -* [Bug report](https://github.com/zama-ai/concrete/issues/new?assignees=\&labels=bug%2C+triage\&projects=\&template=bug_report.md) +* [Bug report](https://github.com/zama-ai/concrete/issues/new?assignees=\&labels=bug%2C+triage\&projects=\&template=bug\_report.md) * [Project layout](explanations/layout.md) * [Compiler backend](explanations/backends/README.md) - * [Adding a new backend](explanations/backends/new_backend.md) + * [Adding a new backend](explanations/backends/new\_backend.md) * [Optimizer](explanations/optimizer.md) * [MLIR FHE dialects](explanations/dialects.md) * [FHELinalg dialect](explanations/FHELinalgDialect.md) @@ -92,4 +92,4 @@ * [Tracing dialect](explanations/TracingDialect.md) * [Runtime dialect](explanations/RTDialect.md) * [SDFG dialect](explanations/SDFGDialect.md) -* [Call FHE circuits from other languages](explanations/call_from_other_language.md) +* [Call FHE circuits from other languages](explanations/call\_from\_other\_language.md) diff --git a/docs/compilation/key-related-options-for-faster-execution/README.md b/docs/compilation/key-related-options-for-faster-execution/README.md new file mode 100644 index 000000000..ef517ada1 --- /dev/null +++ b/docs/compilation/key-related-options-for-faster-execution/README.md @@ -0,0 +1,2 @@ +# Key-related options for faster execution + diff --git a/docs/core-features/advanced-features/README.md b/docs/core-features/advanced-features/README.md new file mode 100644 index 000000000..3eb3b2aba --- /dev/null +++ b/docs/core-features/advanced-features/README.md @@ -0,0 +1,2 @@ +# Advanced features + diff --git a/docs/execution-analysis/other/README.md b/docs/execution-analysis/other/README.md new file mode 100644 index 000000000..cc0f5a7e4 --- /dev/null +++ b/docs/execution-analysis/other/README.md @@ -0,0 +1,2 @@ +# Other + diff --git a/docs/explanations/compiler-internals/README.md b/docs/explanations/compiler-internals/README.md new file mode 100644 index 000000000..66ae0cff2 --- /dev/null +++ b/docs/explanations/compiler-internals/README.md @@ -0,0 +1,2 @@ +# Compiler internals + diff --git a/docs/explanations/optimizer.md b/docs/explanations/optimizer.md index 88b0363eb..3ebb64031 100644 --- a/docs/explanations/optimizer.md +++ b/docs/explanations/optimizer.md @@ -1,8 +1,8 @@ -# Optimizing Crypto Parameters +# Optimizer `concrete-optimizer` is a tool that selects appropriate cryptographic parameters for a given fully homomorphic encryption (FHE) computation. These parameters have an impact on the security, correctness, and efficiency of the computation. -The computation is guaranteed to be secure with the given level of security (see [here](./security.md) for details) which is typically 128 bits. The correctness of the computation is guaranteed up to a given failure probability. A surrogate of the execution time is minimized which allows for efficient FHE computation. +The computation is guaranteed to be secure with the given level of security (see [here](security.md) for details) which is typically 128 bits. The correctness of the computation is guaranteed up to a given failure probability. A surrogate of the execution time is minimized which allows for efficient FHE computation. The cryptographic parameters are degrees of freedom in the FHE algorithms (bootstrapping, keyswitching, etc.) that need to be fixed. The search space for possible crypto-parameters is finite but extremely large. The role of the optimizer is to quickly find the most efficient crypto-parameters possible while guaranteeing security and correctness. @@ -14,7 +14,7 @@ The security level is chosen by the user. We typically operate at a fixed securi An independent public research tool, the [lattice estimator](https://github.com/malb/lattice-estimator), is used to estimate the security level. The lattice estimator is maintained by FHE experts. For a given set of crypto-parameters, this tool considers all possible attacks and returns a security level. -For each security level, a parameter curve of the appropriate minimal error level is pre-computed using the lattice estimator, and is used as an input to the optimizer. Learn more about the parameter curves [here](./security.md). +For each security level, a parameter curve of the appropriate minimal error level is pre-computed using the lattice estimator, and is used as an input to the optimizer. Learn more about the parameter curves [here](security.md). ### Correctness @@ -40,13 +40,14 @@ In more complex cases, the optimizer iteratively performs an exhaustive search, ## How can I determine, understand, and explore crypto-parameters -One can have a look at [reference crypto-parameters](../../compilers/concrete-optimizer/v0-parameters/ref/v0_last_128) for each security level (but for a given correctness). This provides insight between the calcululs content (i.e. maximum precision, maximum dot 2-norm, etc.,) and the cost. +One can have a look at [reference crypto-parameters](https://github.com/zama-ai/concrete/blob/main/compilers/concrete-optimizer/v0-parameters/ref/v0\_last\_128) for each security level (but for a given correctness). This provides insight between the calcululs content (i.e. maximum precision, maximum dot 2-norm, etc.,) and the cost. -Then one can manually explore crypto-parameters space using a [CLI tool](../../compilers/concrete-optimizer/v0-parameters/README.md). +Then one can manually explore crypto-parameters space using a [CLI tool](../../compilers/concrete-optimizer/v0-parameters/). ## Citing If you use this tool in your work, please cite: + > Bergerat, Loris and Boudi, Anas and Bourgerie, Quentin and Chillotti, Ilaria and Ligier, Damien and Orfila Jean-Baptiste and Tap, Samuel, Parameter Optimization and Larger Precision for (T)FHE, Journal of Cryptology, 2023, Volume 36 A pre-print is available as Cryptology ePrint Archive [Paper 2022/704](https://eprint.iacr.org/2022/704)