mirror of
https://github.com/zama-ai/concrete.git
synced 2026-01-14 15:27:58 -05:00
29 lines
2.5 KiB
Markdown
29 lines
2.5 KiB
Markdown
# Project layout
|
|
|
|
## Concrete layout
|
|
|
|
Concrete is a modular framework composed by sub-projects using different technologies, all having theirs own build system and test suite. Each sub-project have is own README that explain how to setup the developer environment, how to build it and how to run tests commands.
|
|
|
|
Concrete is made of 4 main categories of sub-project that are organized in subdirectories from the root of the Concrete repo:
|
|
|
|
* `frontends` contains **high-level transpilers** that target end users developers who want to use the Concrete stack easily from their usual environment. There are for now only one frontend provided by the Concrete project: a Python frontend named `concrete-python`.
|
|
* `compilers` contains the sub-projects in charge of actually solving the compilation problem of an high-level abstraction of FHE to an actual executable. `concrete-optimizer` is a Rust based project that solves the optimization problems of an FHE dag to a TFHE dag and `concrete-compiler` which use `concrete-optimizer` is an end-to-end MLIR-based compiler that takes a crypto free FHE dialect and generates compilation artifacts both for the client and the server. `concrete-compiler` project provide in addition of the compilation engine, a client and server library in order to easily play with the compilation artifacts to implement a client and server protocol.
|
|
* `backends` contains CAPI that can be called by the `concrete-compiler` runtime to perform the cryptographic operations. There are currently two backends:
|
|
* `concrete-cpu`, using TFHE-rs that implement the fastest implementation of TFHE on CPU.
|
|
* `concrete-cuda` that provides a GPU acceleration of TFHE primitives.
|
|
* `tools` are basically every other sub-projects that cannot be classified in the three previous categories and which are used as a common support by the others.
|
|
|
|
## Concrete Python layout
|
|
|
|
The module structure of **Concrete Python**. You are encouraged to check individual `.py` files to learn more.
|
|
|
|
* concrete
|
|
* fhe
|
|
* **dtypes:** data type specifications (e.g., int4, uint5, float32)
|
|
* **values:** value specifications (i.e., data type + shape + encryption status)
|
|
* **representation:** representation of computation (e.g., computation graphs, nodes)
|
|
* **tracing:** tracing of python functions
|
|
* **extensions:** custom functionality (see [Extensions](../core-features/extensions.md))
|
|
* **mlir:** computation graph to mlir conversion
|
|
* **compilation:** configuration, compiler, artifacts, circuit, client/server, and anything else related to compilation
|