Update doc & readme (#122)

* update poulpy_arch.svg

* update main readme

* update lib_diagram.png & main readme

* update poulpy-core readme

* update backend readmes

* update poulpy-hal readme

* update poulpy-schemes readme

* update CHANGELOG.md
This commit is contained in:
Jean-Philippe Bossuat
2025-11-19 17:08:11 +01:00
committed by GitHub
parent ad837c8fa8
commit 8a039e1c3a
9 changed files with 147 additions and 128 deletions

View File

@@ -1,38 +1,18 @@
# 🐙 Poulpy-Backend
# 🐙 Poulpy-CPU-AVX
**Poulpy-Backend** is a Rust crate that provides concrete implementations of **`poulpy-hal`**. This crate is used to instantiate projects implemented with **`poulpy-hal`**, **`poulpy-core`** and/or **`poulpy-schemes`**.
**Poulpy-Backend-CPU-AVX** is a Rust crate that provides the reference CPU implementation of **`poulpy-hal`**. This crate is used to instantiate projects implemented with **`poulpy-hal`**, **`poulpy-core`** and/or **`poulpy-schemes`**.
## Backends
### cpu-spqlios
This module provides a CPU AVX2 accelerated backend through C bindings over [**spqlios-arithmetic**](https://github.com/tfhe/spqlios-arithmetic).
- Currently supported: `FFT64` backend
- Planned: `NTT120` backend
### Build Notes
This backend is built and compiled automatically and has been tested on wsl/ubuntu.
- `cmake` is invoked automatically by the build script (`build.rs`) when compiling the crate.
- No manual setup is required beyond having a standard Rust toolchain.
- Build options can be changed in `/build/cpu_spqlios.rs`
- Automatic build of cpu-spqlios/spqlios-arithmetic can be disabled in `build.rs`.
Spqlios-arithmetic is windows/mac compatible but building for those platforms is slightly different (see [spqlios-arithmetic/wiki/build](https://github.com/tfhe/spqlios-arithmetic/wiki/build)) and has not been tested in Poulpy.
### Example
## Example
```rust
use poulpy_backend::cpu_spqlios::FFT64;
use poulpy_backend_cpu_ref::FFT64Ref;
use poulpy_hal::{api::ModuleNew, layouts::Module};
let log_n: usize = 10;
let module = Module<FFT64> = Module<FFT64>::new(1<<log_n);
let module = Module<FFT64Ref> = Module<FFT64Ref>::new(1<<log_n);
```
## Contributors
To add a backend, implement the open extension traits from **`poulpy-hal/oep`** for a struct that implements the `Backend` trait.
To add your own backend, implement the open extension traits from **`poulpy-hal/oep`** for a struct that implements the `Backend` trait.
This will automatically make your backend compatible with the API of **`poulpy-hal`**, **`poulpy-core`** and **`poulpy-schemes`**.