lambdaclass / cairo-vm

cairo-vm is a Rust implementation of the Cairo VM. Cairo (CPU Algebraic Intermediate Representation) is a programming language for writing provable programs, where one party can prove to another that a certain computation was executed correctly without the need for this party to re-execute the same program.
https://lambdaclass.github.io/cairo-vm
Apache License 2.0
485 stars 132 forks source link

[Cairo 1] Improve arg handling #1782

Closed fmoletta closed 1 month ago

fmoletta commented 1 month ago

Fixes:

github-actions[bot] commented 1 month ago
**Hyper Thereading Benchmark results**

hyperfine -r 2 -n "hyper_threading_main threads: 1" 'RAYON_NUM_THREADS=1 ./hyper_threading_main' -n "hyper_threading_pr threads: 1" 'RAYON_NUM_THREADS=1 ./hyper_threading_pr'
Benchmark 1: hyper_threading_main threads: 1
  Time (mean ± σ):     25.838 s ±  0.015 s    [User: 25.140 s, System: 0.696 s]
  Range (min … max):   25.827 s … 25.849 s    2 runs

Benchmark 2: hyper_threading_pr threads: 1
  Time (mean ± σ):     25.771 s ±  0.037 s    [User: 24.954 s, System: 0.814 s]
  Range (min … max):   25.744 s … 25.797 s    2 runs

Summary
  'hyper_threading_pr threads: 1' ran
    1.00 ± 0.00 times faster than 'hyper_threading_main threads: 1'

hyperfine -r 2 -n "hyper_threading_main threads: 2" 'RAYON_NUM_THREADS=2 ./hyper_threading_main' -n "hyper_threading_pr threads: 2" 'RAYON_NUM_THREADS=2 ./hyper_threading_pr'
Benchmark 1: hyper_threading_main threads: 2
  Time (mean ± σ):     14.450 s ±  0.029 s    [User: 25.588 s, System: 0.830 s]
  Range (min … max):   14.429 s … 14.470 s    2 runs

Benchmark 2: hyper_threading_pr threads: 2
  Time (mean ± σ):     14.473 s ±  0.066 s    [User: 25.601 s, System: 0.752 s]
  Range (min … max):   14.426 s … 14.520 s    2 runs

Summary
  'hyper_threading_main threads: 2' ran
    1.00 ± 0.01 times faster than 'hyper_threading_pr threads: 2'

hyperfine -r 2 -n "hyper_threading_main threads: 4" 'RAYON_NUM_THREADS=4 ./hyper_threading_main' -n "hyper_threading_pr threads: 4" 'RAYON_NUM_THREADS=4 ./hyper_threading_pr'
Benchmark 1: hyper_threading_main threads: 4
  Time (mean ± σ):     10.419 s ±  0.175 s    [User: 36.805 s, System: 0.934 s]
  Range (min … max):   10.295 s … 10.543 s    2 runs

Benchmark 2: hyper_threading_pr threads: 4
  Time (mean ± σ):     10.461 s ±  0.524 s    [User: 36.904 s, System: 0.938 s]
  Range (min … max):   10.091 s … 10.832 s    2 runs

Summary
  'hyper_threading_main threads: 4' ran
    1.00 ± 0.05 times faster than 'hyper_threading_pr threads: 4'

hyperfine -r 2 -n "hyper_threading_main threads: 6" 'RAYON_NUM_THREADS=6 ./hyper_threading_main' -n "hyper_threading_pr threads: 6" 'RAYON_NUM_THREADS=6 ./hyper_threading_pr'
Benchmark 1: hyper_threading_main threads: 6
  Time (mean ± σ):     10.175 s ±  0.007 s    [User: 37.309 s, System: 0.908 s]
  Range (min … max):   10.170 s … 10.180 s    2 runs

Benchmark 2: hyper_threading_pr threads: 6
  Time (mean ± σ):     10.373 s ±  0.212 s    [User: 37.234 s, System: 1.061 s]
  Range (min … max):   10.223 s … 10.523 s    2 runs

Summary
  'hyper_threading_main threads: 6' ran
    1.02 ± 0.02 times faster than 'hyper_threading_pr threads: 6'

hyperfine -r 2 -n "hyper_threading_main threads: 8" 'RAYON_NUM_THREADS=8 ./hyper_threading_main' -n "hyper_threading_pr threads: 8" 'RAYON_NUM_THREADS=8 ./hyper_threading_pr'
Benchmark 1: hyper_threading_main threads: 8
  Time (mean ± σ):     10.158 s ±  0.149 s    [User: 37.212 s, System: 1.054 s]
  Range (min … max):   10.053 s … 10.264 s    2 runs

Benchmark 2: hyper_threading_pr threads: 8
  Time (mean ± σ):     10.226 s ±  0.080 s    [User: 37.266 s, System: 0.974 s]
  Range (min … max):   10.169 s … 10.283 s    2 runs

Summary
  'hyper_threading_main threads: 8' ran
    1.01 ± 0.02 times faster than 'hyper_threading_pr threads: 8'

hyperfine -r 2 -n "hyper_threading_main threads: 16" 'RAYON_NUM_THREADS=16 ./hyper_threading_main' -n "hyper_threading_pr threads: 16" 'RAYON_NUM_THREADS=16 ./hyper_threading_pr'
Benchmark 1: hyper_threading_main threads: 16
  Time (mean ± σ):     10.003 s ±  0.068 s    [User: 37.900 s, System: 0.988 s]
  Range (min … max):    9.955 s … 10.051 s    2 runs

Benchmark 2: hyper_threading_pr threads: 16
  Time (mean ± σ):     10.276 s ±  0.084 s    [User: 37.600 s, System: 1.058 s]
  Range (min … max):   10.217 s … 10.336 s    2 runs

Summary
  'hyper_threading_main threads: 16' ran
    1.03 ± 0.01 times faster than 'hyper_threading_pr threads: 16'
codecov[bot] commented 1 month ago

Codecov Report

Attention: Patch coverage is 97.05882% with 1 line in your changes missing coverage. Please review.

Project coverage is 94.84%. Comparing base (7159ed9) to head (a3ad7d7).

Files Patch % Lines
cairo1-run/src/main.rs 97.05% 1 Missing :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #1782 +/- ## ========================================== - Coverage 94.85% 94.84% -0.01% ========================================== Files 102 102 Lines 40065 40068 +3 ========================================== + Hits 38002 38004 +2 - Misses 2063 2064 +1 ```

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.

github-actions[bot] commented 1 month ago

Benchmark Results for unmodified programs :rocket:

Command Mean [s] Min [s] Max [s] Relative
base big_factorial 2.032 ± 0.021 1.997 2.078 1.00
head big_factorial 2.044 ± 0.067 1.991 2.231 1.01 ± 0.03
Command Mean [s] Min [s] Max [s] Relative
base big_fibonacci 2.011 ± 0.149 1.946 2.435 1.03 ± 0.08
head big_fibonacci 1.960 ± 0.021 1.938 1.999 1.00
Command Mean [s] Min [s] Max [s] Relative
base blake2s_integration_benchmark 7.480 ± 0.205 7.345 8.043 1.01 ± 0.03
head blake2s_integration_benchmark 7.436 ± 0.095 7.295 7.563 1.00
Command Mean [s] Min [s] Max [s] Relative
base compare_arrays_200000 2.132 ± 0.078 2.090 2.341 1.01 ± 0.04
head compare_arrays_200000 2.117 ± 0.010 2.102 2.138 1.00
Command Mean [s] Min [s] Max [s] Relative
base dict_integration_benchmark 1.418 ± 0.025 1.397 1.486 1.02 ± 0.02
head dict_integration_benchmark 1.392 ± 0.011 1.374 1.411 1.00
Command Mean [s] Min [s] Max [s] Relative
base field_arithmetic_get_square_benchmark 1.215 ± 0.012 1.202 1.241 1.01 ± 0.01
head field_arithmetic_get_square_benchmark 1.200 ± 0.013 1.185 1.228 1.00
Command Mean [s] Min [s] Max [s] Relative
base integration_builtins 7.454 ± 0.092 7.363 7.613 1.00
head integration_builtins 7.575 ± 0.380 7.361 8.607 1.02 ± 0.05
Command Mean [s] Min [s] Max [s] Relative
base keccak_integration_benchmark 7.665 ± 0.171 7.539 8.121 1.00
head keccak_integration_benchmark 7.719 ± 0.134 7.610 8.078 1.01 ± 0.03
Command Mean [s] Min [s] Max [s] Relative
base linear_search 2.084 ± 0.016 2.064 2.122 1.01 ± 0.01
head linear_search 2.065 ± 0.015 2.047 2.092 1.00
Command Mean [s] Min [s] Max [s] Relative
base math_cmp_and_pow_integration_benchmark 1.475 ± 0.026 1.454 1.530 1.00 ± 0.03
head math_cmp_and_pow_integration_benchmark 1.471 ± 0.030 1.442 1.530 1.00
Command Mean [s] Min [s] Max [s] Relative
base math_integration_benchmark 1.455 ± 0.022 1.433 1.512 1.01 ± 0.02
head math_integration_benchmark 1.441 ± 0.006 1.428 1.450 1.00
Command Mean [s] Min [s] Max [s] Relative
base memory_integration_benchmark 1.189 ± 0.010 1.176 1.205 1.00
head memory_integration_benchmark 1.191 ± 0.018 1.174 1.238 1.00 ± 0.02
Command Mean [s] Min [s] Max [s] Relative
base operations_with_data_structures_benchmarks 1.528 ± 0.014 1.506 1.552 1.00
head operations_with_data_structures_benchmarks 1.545 ± 0.031 1.503 1.603 1.01 ± 0.02
Command Mean [ms] Min [ms] Max [ms] Relative
base pedersen 513.4 ± 5.5 509.2 528.5 1.00 ± 0.01
head pedersen 511.8 ± 4.2 507.6 522.7 1.00
Command Mean [ms] Min [ms] Max [ms] Relative
base poseidon_integration_benchmark 743.4 ± 3.2 740.0 750.0 1.00
head poseidon_integration_benchmark 746.5 ± 4.3 739.6 752.2 1.00 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base secp_integration_benchmark 1.810 ± 0.025 1.789 1.875 1.00
head secp_integration_benchmark 1.816 ± 0.058 1.777 1.943 1.00 ± 0.04
Command Mean [ms] Min [ms] Max [ms] Relative
base set_integration_benchmark 663.9 ± 1.8 661.1 666.9 1.00 ± 0.00
head set_integration_benchmark 663.7 ± 1.6 661.0 666.1 1.00
Command Mean [s] Min [s] Max [s] Relative
base uint256_integration_benchmark 4.159 ± 0.050 4.094 4.242 1.00
head uint256_integration_benchmark 4.196 ± 0.075 4.090 4.347 1.01 ± 0.02