Files
concrete/docs/dev/backends/README.md
2023-07-13 14:33:54 +02:00

27 lines
1.1 KiB
Markdown

# Concrete backends
The concrete backends are implementations of the cryptographic primitives of the Zama variant of [TFHE](https://eprint.iacr.org/2018/421.pdf).
The compiler emits code which combines call into these backends to perform more complex homomorphic operations.
There are client and server features.
Client features are:
- private (G)LWE key generation (currently random bits)
- encryption of ciphertexts using a private key
- public key generation from private keys for keyswitch, bootstrap or private packing
- (de)serialization of ciphertexts and public keys (also needed server side)
Server features are homomorphic operations on ciphertexts:
- linear operations (multisums with plain weights)
- keyswitch
- simple PBS
- WoP PBS
There are currently 2 backends:
- `concrete-cpu` which implements both client and server features targeting the CPU.
- `concrete-cuda` which implements only server features targeting GPUs to accelerate homomorphic circuit evalutation.
The compiler uses `concrete-cpu` for the client and can use either `concrete-cpu` or `concrete-cuda` for the server.