mirror of
https://github.com/pseXperiments/icicle.git
synced 2026-01-09 13:07:59 -05:00
migrate docs website + improved docs (#389) * Update README.md (#385) * refactor * refactor * refactor * rename task * update codespell * multi gpu docs (#391) * Refactor * refacotr * fix typo * Apply suggestions from code review * refactor * refactor --------- Co-authored-by: ImmanuelSegol <3ditds@gmail.com> Co-authored-by: DmytroTym <dmytrotym1@gmail.com> Co-authored-by: ChickenLover <Romangg81@gmail.com>
36 lines
850 B
Markdown
36 lines
850 B
Markdown
### 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](./icicle-curves/icicle-bn254/build.rs) 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
|
|
|
|
```sh
|
|
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
|
|
|
|
```sh
|
|
cargo test
|
|
```
|