## Describe the changes
Add a non-blocking `warmup` function to `CudaStream`
> when you run the benchmark (e.g. the msm example you have) the first
instance is always slow, with a constant overhead of 200~300ms cuda
stream warmup. and I want to get rid of that in my application by
warming it up in parallel while my host do something else.
## Describe the changes
This PR:
- Moves common crate attributes to the workspace Cargo.toml.
- Adds a manual release flow for bumping, tagging, and draft release
This PR is a compilation of small improvements
- Lock bindgen version for `icicle-cuda-runtime`
- Add an error message when trying to build on Mac (or any non
windows/linux machine)
- Add documentation and template files for adding new curve
- Add documentation on _params.cuh contents
- Add the script to bump all the rust crates versions to the same
version
Resolves#313
Updates the CI to:
- run per supported language
- conditional run logic
- pipelined jobs for failing fast
- additional parallelization
- run golang build on windows
- reuse the check-changed-files workflow
- this mode is allocating additional 4N twiddle-factors to achieve faster computation
- enabled by flag for initDomain(). Defaults to false.
Co-authored-by: hadaringonyama <hadar@ingonyama.com>
* Improved MSM
* Zero point handling in large buckets
* Fixed affine zero point conversion for arkworks
* cargo fmt
* Addressed comments
* MSM comments
* All zero scalars case handled
* clang format
- Mixed-radix NTT orderings support
- radix-2 small refactor: split core logic to function and renamed ct_butterfly to dit
- testing both radix2 and mixed-radix algs for all ntt tests
* BW scalar field is now the same as BLS base field
* add poseidon
* add merkle tree builder
* poseidon rust bindings
* implement rust bindings
* add doc comments
* remove global poseidon constants
* add custom constants API and script for generating new constants
* add the rest of the curves for poseidon
* add all the curves for real
* misname bls12-377
* typo
* partial rounds
* minor fixes
* small tweak for big performance boost
* add CHK_INIT_IF_RETURN
---------
Co-authored-by: DmytroTym <dmytrotym1@gmail.com>
* BW scalar field is now the same as BLS base field
* add poseidon
* add merkle tree builder
* poseidon rust bindings
* implement rust bindings
* add doc comments
* remove global poseidon constants
* add custom constants API and script for generating new constants
* add the rest of the curves for poseidon
* add all the curves for real
* misname bls12-377
* typo
* partial rounds
* minor fixes
* small tweak for big performance boost
* add CHK_INIT_IF_RETURN
---------
Co-authored-by: DmytroTym <dmytrotym1@gmail.com>
- Make the curve config's omegas_count conditionally accessed when creating fields
- Remove the extern C function that returns a UDT containing non-POD types and replace it with a default_config function on the Rust bindings side
* Safer smart pointer that covers host and device
* Fixed MSM test
* Scalars and points in MSM are non-mutable in all cases
* change mont API (#332)
* Some Rust doc comments
---------
Co-authored-by: ChickenLover <Romangg81@gmail.com>
* fix memory error in single_stage_multi_reduction_kernel (#235)
* refactor
* refactor
* revert
* refactor: clang format
* Update icicle/appUtils/msm/msm.cu
* Added separate device context struct, returned lde
* wip - msm and eq
* added lde to cmake
* Montgomery param added in lde.cu mul function
* fixed on_device for ntt and lde
* CamelCase
* fixed msm_test, int unification, google guilde
* wip - ntt crash debugging
* async MSM with a rust wrapper
* wip ntt tests with corretness
* hotfix for correctness > 2^9
* wip on device inout mixing with correctness
* cleanup
* preserving twiddles after first call
* fixed twiddles preserving
* formatting
* removed some printing
* disable ecntt temporarily
* format
* rust fmt
* exclude target from format
* passing ntt after merge
* hotfix for linking issue
* format
* format
* draft of pr comments + correctness restored
* wip refactor + format
* domain wip
* rust format
* Merged feature branch in and Rust MSM correctness
* rust build for correct curve
* Slowdown fixed by passing release flag to cmake
* WIP field and curve
* still wip field and curve
* field and curve in rust 1.0
* Refactored rust into several crates
* Arkworks is now an option, bn254 crate created
* Rust msm and ntt wip
* A version of rust msm done, cuda runtime wrapped
* refactor rust by creating a curve folder
* vec_ops instead of lde for now
* format
---------
Co-authored-by: ImmanuelSegol <3ditds@gmail.com>
Co-authored-by: Vitalii <vitalii@ingonyama.com>