mirror of
https://github.com/pseXperiments/icicle.git
synced 2026-01-09 15:37:58 -05:00
This PR solves an issue for large ecntt where cuda blocks are too large and cannot be assigned to SMs. The fix is to reduce thread count per block and increase block count in that case.
Rust Bindings
icicle-core defines all interfaces, macros and common methods.
icicle-cuda-runtime defines DeviceContext which can be used to manage a specific GPU as well as wrapping common CUDA methods.
icicle-curves implements all interfaces and macros from icicle-core for each curve. For example icicle-bn254 implements curve bn254. Each curve has its own build script which will build the CUDA libraries for that curve as part of the rust-toolchain build.
Building a curve and running tests
Enter a curve implementation.
cd icicle-curves/icicle-bn254
To build
cargo build --release
The build may take a while because we are also building the CUDA libraries for the selected curve.
To run benchmarks
cargo bench
To run test
cargo test