Skip to content

Commit

Permalink
Add Poseidon benchmark (lambdaclass#947)
Browse files Browse the repository at this point in the history
* Add poseidon builtin (lambdaclass#875)

* Add instance def

* Add file

* Add poseidon instance def to builtin instance def

* Add Poseidon to BuiltinRunners

* Add simple tests program

* Prevent poseidon from being rejected by deserialize

* Use modified version of starknet-crypto poseidon hash (need permute fn to be public in order to access full state

* Add poseidon builtin impl + remove unreleased AddAssign usage

* Fix EOF

* Save a step

* Add comment before unwrap

* Clippy

* Reorder files

* Add comment

* Use constants for cells

* Add more test program

* Add integration tests

* test constant creation doesnt panic

* Add tests

* Fix failling tests

* Use final values for POSEIDON_COMP_CONSTANTS and move calculation to test module

* typo

* Solve post-merge conflicts

* Implement poseidon hints

* Add file

* Add tests for new hint

* Clippy

* Fix hint names

* Solve post-merge conflicts

* Add missing import

* Use `starknet-crypto` for poseidon (lambdaclass#890)

* ec_op changes 0.11 release (lambdaclass#876)

* ec_op changes 0.11 release cairo_lang

* Update src/vm/runners/builtin_runner/ec_op.rs

Co-authored-by: fmoletta <[email protected]>

* remove rc and change bigint to felt

* debug cache

* debug cache

* change add_int implementation

* cargo fmt

---------

Co-authored-by: fmoletta <[email protected]>

* [WIP] Update keccak-builtin  (lambdaclass#873)

* Add cache to keccak builtin

* Temporaryly unhide recursive layout for debugging

* Use same keccak method as the one used in keccak_utils

* Make keccak builtin work

* Fix visisbility

* Small refactor

* Refactor

* Refactor

* Add tests

* Fix address management

* Add test program

* Clippy + Update tests

* Remove unused import

* Remove uneeded Rc

* Make error less specific

* Add integration test

* Add proposed changes

* Re-hide recursive layout

* Update layouts to cairo-lang 0.11 release (lambdaclass#874)

* update layouts to cairo-lang 0.11 release

* update layout all

* update benches and makefile

* Add instance def

* Add file

* Add poseidon instance def to builtin instance def

* Add Poseidon to BuiltinRunners

* Add simple tests program

* Prevent poseidon from being rejected by deserialize

* Use modified version of starknet-crypto poseidon hash (need permute fn to be public in order to access full state

* Add poseidon builtin impl + remove unreleased AddAssign usage

* Fix EOF

* Save a step

* Add comment before unwrap

* Clippy

* Reorder files

* reset run_benchmark script

* Add comment

* Use constants for cells

* Add more test program

* Add integration tests

* test constant creation doesnt panic

* Add tests

* Fix failling tests

* Use final values for POSEIDON_COMP_CONSTANTS and move calculation to test module

* typo

* Solve post-merge conflicts

* Implement poseidon hints

* Add file

* Add tests for new hint

* Clippy

* allow dead code in default poseidon

* remove wrong text

* Update .github/workflows/rust.yml

Co-authored-by: fmoletta <[email protected]>

* Update src/types/instance_definitions/poseidon_instance_def.rs

Co-authored-by: fmoletta <[email protected]>

* Update src/types/instance_definitions/poseidon_instance_def.rs

Co-authored-by: fmoletta <[email protected]>

* Update src/types/instance_definitions/builtins_instance_def.rs

Co-authored-by: fmoletta <[email protected]>

* Update src/types/instance_definitions/builtins_instance_def.rs

Co-authored-by: fmoletta <[email protected]>

* Update src/types/instance_definitions/builtins_instance_def.rs

Co-authored-by: fmoletta <[email protected]>

---------

Co-authored-by: Federica <[email protected]>
Co-authored-by: fmoletta <[email protected]>

* Add new keccak hints + update import paths  (lambdaclass#883)

* Add cache to keccak builtin

* Temporaryly unhide recursive layout for debugging

* Use same keccak method as the one used in keccak_utils

* Make keccak builtin work

* Fix visisbility

* Small refactor

* Refactor

* Refactor

* Add tests

* Fix address management

* Add test program

* Clippy + Update tests

* Remove unused import

* Remove uneeded Rc

* Make error less specific

* Add integration test

* Add proposed changes

* Add new hints

* Add test program

* Move constants

* Add keccak hints;

* Fix overflowing operation

* Add more hints

* Add unit tests

* Add integration test

* Update import paths in cairo programs used for testing

* Update hints with new import paths

* Add newline at end of file

* Clippy

* Clean imports

* Re-hide recursive layout

* Update src/hint_processor/builtin_hint_processor/keccak_utils.rs

Co-authored-by: Mario Rugiero <[email protected]>

* Add suggested change + fix conflicts

* Update src/hint_processor/builtin_hint_processor/keccak_utils.rs

Co-authored-by: Mario Rugiero <[email protected]>

* Fix

* Use u64 in split_n_bytes hints

* Use starknet_with_keccak layout when running cairo-lang

* Fix relative path in compare_vm_state script

---------

Co-authored-by: Mario Rugiero <[email protected]>

* Remove typeguard pin

* Run cairo-format

* Fix program ruined by formatter

* Fix wasm compatibility for newer files

* Fix wasm compatibility for newer files

* Fix wrong version

* Fix syntax

* Fix wasm compatibility

* Tempfix for iai workflow

* Fix workflow

* Use the same layout for memory trace proof mode comparison

* Add dynamic layout (lambdaclass#879)

* Change instance def ratios to Option

* Move builtin runner ratios to option

* Modify methods to accomodate dynamic ratios

* Misc fixes

* Misc fixes

* Fix wrong impl

* Fix tests

* Fix tests

* Add dynamic layout

* Fix wrong impl

* Fix tests

* Expose instances_per_component

* Move get_used_cells_and_allocated_sizes to mod

* Move get_allocated_memory_units to mod

* Finnish prev tasks

* Fix test

* fix get_perm_range_check_limit

* Fix get_range_check_usage

* Fix test values

* Fix workflows

* Update Cargo.lock

* Remove comment

* [0.11] Add `SegmentArenaBuiltinRunner` (lambdaclass#913)

* Change instance def ratios to Option

* Move builtin runner ratios to option

* Modify methods to accomodate dynamic ratios

* Misc fixes

* Misc fixes

* Fix wrong impl

* Fix tests

* Fix tests

* Add dynamic layout

* Fix wrong impl

* Fix tests

* Expose instances_per_component

* Move get_used_cells_and_allocated_sizes to mod

* Move get_allocated_memory_units to mod

* Finnish prev tasks

* Fix test

* Initial progress

* Add builtin specific methods

* Add SegmentArenaBuiltinRunner to BuiltinRunner enum

* implement final_stack for segmen arena nuiltin runner

* Add other methods

* Integrate into runner

* Remove error from initialize_segments

* Fix comment

* Add test

* Add tests for segment arena builtin

* Fix

* fix get_perm_range_check_limit

* Fix get_range_check_usage

* Fix test values

* expose program base for starknet reasons

* Update src/vm/runners/builtin_runner/mod.rs

Co-authored-by: Mario Rugiero <[email protected]>

* Fix build

* Add nostd Vec import

* Fix wasm import

---------

Co-authored-by: Mario Rugiero <[email protected]>
Co-authored-by: Mario Rugiero <[email protected]>

* Add suggested changes

* Fix overriden run_benchmarks script

* Add `program_segment_size` argument to `verify_secure_runner` & `run_from_entrypoint` (lambdaclass#928)

* Change instance def ratios to Option

* Move builtin runner ratios to option

* Modify methods to accomodate dynamic ratios

* Misc fixes

* Misc fixes

* Fix wrong impl

* Fix tests

* Fix tests

* Add dynamic layout

* Fix wrong impl

* Fix tests

* Expose instances_per_component

* Move get_used_cells_and_allocated_sizes to mod

* Move get_allocated_memory_units to mod

* Finnish prev tasks

* Fix test

* Initial progress

* Add builtin specific methods

* Add SegmentArenaBuiltinRunner to BuiltinRunner enum

* implement final_stack for segmen arena nuiltin runner

* Add other methods

* Integrate into runner

* Remove error from initialize_segments

* Fix comment

* Add test

* Add tests for segment arena builtin

* Fix

* fix get_perm_range_check_limit

* Fix get_range_check_usage

* Fix test values

* expose program base for starknet reasons

* Update src/vm/runners/builtin_runner/mod.rs

Co-authored-by: Mario Rugiero <[email protected]>

* Add optional program_size argument to verify_secure_runner & run_from_entrypoint

* Fix build

* Add nostd Vec import

* Fix wasm import

* Expose get_segment_size (lambdaclass#934)

---------

Co-authored-by: Mario Rugiero <[email protected]>
Co-authored-by: Mario Rugiero <[email protected]>

* Fix typo

* Add misc tests

* Add misc tests

* Add misc test

* Add misc test

* Add misc test

* Expand misc test

* Add wasm attr + misc test

* Add poseidon benchmarks

* Run cairo-format

* Remove unused import

* Add unmerged

* Add bench to iai benchmarks

* fmt

---------

Co-authored-by: Jonathan LEI <[email protected]>
Co-authored-by: Juan Rigada <[email protected]>
Co-authored-by: Mario Rugiero <[email protected]>
Co-authored-by: Mario Rugiero <[email protected]>
  • Loading branch information
5 people authored and kariy committed Jun 23, 2023
1 parent 414b208 commit f224d29
Show file tree
Hide file tree
Showing 5 changed files with 191 additions and 35 deletions.
136 changes: 101 additions & 35 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 1 addition & 0 deletions bench/criterion_benchmark.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ const BENCH_NAMES: &[&str] = &[
"operations_with_data_structures_benchmarks",
"uint256_integration_benchmark",
"set_integration_benchmark",
"poseidon_integration_benchmark",
"pedersen",
];
const BENCH_PATH: &str = "cairo_programs/benchmarks/";
Expand Down
2 changes: 2 additions & 0 deletions bench/iai_benchmark.rs
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ iai_bench_expand_prog! {math_cmp_and_pow_integration_benchmark}
iai_bench_expand_prog! {operations_with_data_structures_benchmarks}
iai_bench_expand_prog! {uint256_integration_benchmark}
iai_bench_expand_prog! {set_integration_benchmark}
iai_bench_expand_prog! {poseidon_integration_benchmark}
iai_bench_expand_prog! {pedersen}

main!(
Expand All @@ -133,5 +134,6 @@ main!(
operations_with_data_structures_benchmarks,
uint256_integration_benchmark,
set_integration_benchmark,
poseidon_integration_benchmark
pedersen,
);
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
from poseidon_multirun import run_test
from starkware.cairo.common.cairo_builtins import PoseidonBuiltin

func main{poseidon_ptr: PoseidonBuiltin*}() -> () {
// For each test, 3 poseidon hashes are computed (single, 2 values, and 3 values)
run_test(10000);
return ();
}
Loading

0 comments on commit f224d29

Please sign in to comment.