LogoLogo
WebsiteDocumentationGithubCommunity forum
2.3
2.3
  • What is Concrete?
  • Getting Started
    • Basics of FHE programs
    • Installation
    • Quick Start
    • Compatibility
    • Exactness
    • Performance
    • Terminology and Structure
  • Tutorials
    • Decorator
    • Progressbar
    • Formatting
    • Tagging
    • Extensions
    • Comparisons
    • Table Lookups
    • Rounding
    • Floating Points
    • Multi Precision
    • Multi Parameters
    • Simulation
    • Direct Circuits
  • Application Tutorials
    • Key Value Database
    • SHA-256
  • How To
    • Configure
    • Manage Keys
    • Deploy
    • Reuse Arguments
    • Debug
    • Call FHE circuits from other languages
  • Explanations
    • Frontend fusing
    • Compilation
      • Automatic Crypto Parameters choice
      • MLIR FHE Dialects
        • FHELinalg Dialect
        • FHE Dialect
        • TFHE Dialect
        • Concrete Dialect
        • Tracing Dialect
        • Runtime Dialect
        • SDFG Dialect
    • Security curves
  • Developer
    • Contribute
    • Project layout
    • Compiler backend
      • Adding a new backend
Powered by GitBook
On this page

Was this helpful?

Export as PDF
  1. Developer

Compiler backend

PreviousProject layoutNextAdding a new backend

Last updated 1 year ago

Was this helpful?

The concrete backends are implementations of the cryptographic primitives of the Zama variant of . 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.

TFHE