#avx2 #back-end #cpu #extension #poulpy-hal

poulpy-backend

A crate providing concrete implementations of poulpy-hal through its open extension points

1 unstable release

Uses new Rust 2024

0.3.1 Oct 24, 2025
0.3.0 Oct 23, 2025
0.2.2 Sep 30, 2025
0.1.3 Aug 25, 2025

#335 in Hardware support

Download history 305/week @ 2025-08-15 111/week @ 2025-08-22 44/week @ 2025-08-29 14/week @ 2025-09-05 253/week @ 2025-09-12 51/week @ 2025-09-19 130/week @ 2025-09-26 45/week @ 2025-10-03 18/week @ 2025-10-10 108/week @ 2025-10-17 226/week @ 2025-10-24

353 downloads per month
Used in 2 crates

Apache-2.0 and LGPL-3.0+

2MB
45K SLoC

Rust 25K SLoC // 0.0% comments C 11K SLoC // 0.2% comments C++ 6.5K SLoC // 0.0% comments GNU Style Assembly 1.5K SLoC // 0.0% comments Shell 22 SLoC // 0.1% comments

🐙 Poulpy-Backend

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.

Backends

cpu-spqlios

This module provides a CPU AVX2 accelerated backend through C bindings over 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) and has not been tested in Poulpy.

Example

use poulpy_backend::cpu_spqlios::FFT64;
use poulpy_hal::{api::ModuleNew, layouts::Module};

let log_n: usize = 10;
let module = Module<FFT64> = Module<FFT64>::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.
This will automatically make your backend compatible with the API of poulpy-hal, poulpy-core and poulpy-schemes.

Dependencies

~12–18MB
~326K SLoC