mirror of
https://github.com/zama-ai/concrete.git
synced 2026-02-08 11:35:02 -05:00
dc8b76270885045ad6b77693b6392c3328c5c668
this was already implemented for JIT using mlir::ExecutionEngine, but was using a different, and more complex way for library compilation and execution, which was causing a bad calling convention at the assembly level in MacOS M1 machine. This commits unify the invocation of JIT and Library compiled circuit, solving the previously mentioned issue, but also gives the ability to extend compiled libraries to support more than one returned value
Concrete
The concrete project is a set of crates that implements Zama's variant of
TFHE and make it easy to use. In a nutshell,
fully homomorphic encryption (FHE), allows
you to perform computations over encrypted data, allowing you to implement Zero Trust services.
Concrete is based on the Learning With Errors (LWE) and the Ring Learning With Errors (RLWE) problems, which are well studied cryptographic hardness assumptions believed to be secure even against quantum computers.
Project layout
The concrete project is a set of several modules which are high-level frontends, compilers, backends and side tools.
- The
frontendsdirectory contains apythonfrontend. - The
compilersdirectory contains theconcrete-compilerandconcrete-optimizermodules. Theconcrete-compileris a compiler that synthetize a FHE computation dag expressed as a MLIR dialect, compile to a set of artifacts, and provide tools to manipulate those artifacts at runtime. Theconcrete-optimizeris a specific module used by the compiler to find the best, secure and accurate set of crypto parameters for a given dag. - The
backendsdirectory contains implementations of cryptographic primitives on different computation unit, used by theconcrete-compilerruntime. Theconcrete-cpumodule provides CPU implementation, whileconcrete-cudamodule provides GPU implementation using the CUDA platform. - The
toolsdirectory contains side tools used by the rest of the project.
Description
Languages
C++
34.3%
Python
23.1%
MLIR
22.9%
Rust
14.6%
C
2.2%
Other
2.8%