poulpyFully homomorphic encryption
GitHub Get started
Menu

Poulpy 0.8.3Apache-2.0Rust

Compute on
encrypted data.

Poulpy is a backend agnostic modular Rust library for Fully Homomorphic Encryption over the Torus.

Poulpy octopus mascot
One arithmetic foundation.
CKKS · Binary FHE · Any backend

Why Poulpy

One application.
Any hardware.

Write your application once, validate it with portable backends, and deploy it on specialized hardware. Choose the API level that fits your work, from polynomial arithmetic to complete FHE schemes.

01

Write generic code. Choose any hardware.

Express your application through backend-independent APIs. Keep the computation as your hardware changes.

What this means for you

Write Rust code that is generic over the backend. Poulpy separates the operations your application calls from their execution, so a compatible backend can target different hardware without rewriting your application logic.

Explore the architecture →
02

Validate locally. Deploy with confidence.

Develop and check your application with portable backends before moving to specialized hardware.

What this means for you

Validate your computation with portable backends before deploying it on specialized cloud hardware.

Explore the architecture →
03

Choose the level you work at.

Use CKKS or Binary FHE, build with GLWE operations, or work directly with HAL arithmetic.

What this means for you

Choose the level of abstraction that you need to build your application.

Explore the architecture →
04

One setup, simpler parameterization

Define your arithmetic setup once, then tailor scale and computation budget to each circuit with base-2ᴷ.

What this means for you

Conventional RNS rescaling follows a prime chain chosen at setup. Poulpy separates that setup from the circuit’s scaling schedule: base-2ᴷ lets you choose modulus widths and rescaling amounts directly in bits.

  • Reuse the setup. Run circuits with different depths and scaling schedules within the same configured capacity.
  • Tune each calculation. Allocate the bits each stage needs, without searching for primes that match its rescaling schedule.
Explore setup reuse with base-2ᴷ →

Benchmark

One operation.
Several backends.

Full-slot CKKS bootstrapping processes 2¹⁵ complex values with at least 19 bits of precision and restores 16 net levels at scale 2³⁵. Compare measured CPU backends on an AMD Ryzen 9 9950X.

20 measured runs after 3 warm-ups · Poulpy 0.8.3

View all benchmarks →
CKKS bootstrapping · S2C-firstFastest configuration per backend · Lower latency is better
Reference · 1 thread
39.4 s
AVX2 / FMA / Rayon · 16 threads
3.26 s
AVX-512 / Rayon · 16 threads
3.04 s
AVX-512 / IFMA / Rayon · 16 threads
2.29 s
GPU · In development
Results pending · Coming soon

Poulpy ecosystem

See what you can build.

View the ecosystem →

Poulpy / Apache-2.0

Start with a working example.

Run an encrypted calculation, inspect the result, and explore the code.