Files
icicle/wrappers/rust
yshekel 5516320ad7 fix large (>512 elements) ecntt issue (#553)
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.
2024-07-04 15:33:49 +03:00
..
2024-06-02 16:37:58 +07:00
2024-07-03 20:48:28 +07:00
2024-07-03 19:06:35 +00:00

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