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
514 stars 144 forks source link

`cairo1-run` CLI: Allow loading arguments from file #1739

Closed fmoletta closed 5 months ago

fmoletta commented 5 months ago

Adds the --args_file that takes a filename and processes the arguments in the file as if they were sent via --args

github-actions[bot] commented 5 months 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 ± σ):     30.288 s ±  0.073 s    [User: 29.621 s, System: 0.664 s]
  Range (min … max):   30.236 s … 30.340 s    2 runs

Benchmark 2: hyper_threading_pr threads: 1
  Time (mean ± σ):     30.409 s ±  0.034 s    [User: 29.710 s, System: 0.696 s]
  Range (min … max):   30.385 s … 30.433 s    2 runs

Summary
  'hyper_threading_main threads: 1' ran
    1.00 ± 0.00 times faster than 'hyper_threading_pr 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 ± σ):     16.400 s ±  0.052 s    [User: 30.085 s, System: 0.704 s]
  Range (min … max):   16.363 s … 16.437 s    2 runs

Benchmark 2: hyper_threading_pr threads: 2
  Time (mean ± σ):     16.464 s ±  0.075 s    [User: 30.199 s, System: 0.748 s]
  Range (min … max):   16.412 s … 16.517 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 ± σ):     11.503 s ±  0.054 s    [User: 42.119 s, System: 0.950 s]
  Range (min … max):   11.465 s … 11.542 s    2 runs

Benchmark 2: hyper_threading_pr threads: 4
  Time (mean ± σ):     11.557 s ±  0.105 s    [User: 42.063 s, System: 0.903 s]
  Range (min … max):   11.482 s … 11.631 s    2 runs

Summary
  'hyper_threading_main threads: 4' ran
    1.00 ± 0.01 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 ± σ):     11.634 s ±  0.038 s    [User: 41.793 s, System: 1.082 s]
  Range (min … max):   11.607 s … 11.661 s    2 runs

Benchmark 2: hyper_threading_pr threads: 6
  Time (mean ± σ):     11.569 s ±  0.154 s    [User: 42.013 s, System: 0.971 s]
  Range (min … max):   11.461 s … 11.678 s    2 runs

Summary
  'hyper_threading_pr threads: 6' ran
    1.01 ± 0.01 times faster than 'hyper_threading_main 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 ± σ):     11.407 s ±  0.037 s    [User: 42.154 s, System: 0.971 s]
  Range (min … max):   11.381 s … 11.433 s    2 runs

Benchmark 2: hyper_threading_pr threads: 8
  Time (mean ± σ):     11.476 s ±  0.069 s    [User: 42.158 s, System: 1.062 s]
  Range (min … max):   11.427 s … 11.525 s    2 runs

Summary
  'hyper_threading_main threads: 8' ran
    1.01 ± 0.01 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 ± σ):     11.413 s ±  0.481 s    [User: 42.347 s, System: 1.043 s]
  Range (min … max):   11.073 s … 11.753 s    2 runs

Benchmark 2: hyper_threading_pr threads: 16
  Time (mean ± σ):     11.463 s ±  0.056 s    [User: 42.149 s, System: 1.064 s]
  Range (min … max):   11.424 s … 11.503 s    2 runs

Summary
  'hyper_threading_main threads: 16' ran
    1.00 ± 0.04 times faster than 'hyper_threading_pr threads: 16'
codecov[bot] commented 5 months ago

Codecov Report

Attention: Patch coverage is 75.00000% with 1 lines in your changes are missing coverage. Please review.

Project coverage is 94.80%. Comparing base (73e188d) to head (734c36d).

Files Patch % Lines
cairo1-run/src/main.rs 75.00% 1 Missing :warning:
Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #1739 +/- ## ========================================== - Coverage 94.80% 94.80% -0.01% ========================================== Files 101 101 Lines 38686 38689 +3 ========================================== + Hits 36677 36679 +2 - Misses 2009 2010 +1 ```

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

github-actions[bot] commented 5 months ago

Benchmark Results for unmodified programs :rocket:

Command Mean [s] Min [s] Max [s] Relative
base big_factorial 2.390 ± 0.024 2.369 2.448 1.00 ± 0.01
head big_factorial 2.384 ± 0.017 2.370 2.422 1.00
Command Mean [s] Min [s] Max [s] Relative
base big_fibonacci 2.352 ± 0.020 2.331 2.374 1.01 ± 0.01
head big_fibonacci 2.339 ± 0.015 2.327 2.370 1.00
Command Mean [s] Min [s] Max [s] Relative
base blake2s_integration_benchmark 8.789 ± 0.130 8.643 8.973 1.00
head blake2s_integration_benchmark 8.807 ± 0.121 8.665 8.962 1.00 ± 0.02
Command Mean [s] Min [s] Max [s] Relative
base compare_arrays_200000 2.447 ± 0.035 2.415 2.518 1.01 ± 0.02
head compare_arrays_200000 2.434 ± 0.017 2.409 2.462 1.00
Command Mean [s] Min [s] Max [s] Relative
base dict_integration_benchmark 1.551 ± 0.006 1.545 1.563 1.00 ± 0.01
head dict_integration_benchmark 1.545 ± 0.010 1.531 1.559 1.00
Command Mean [s] Min [s] Max [s] Relative
base field_arithmetic_get_square_benchmark 1.438 ± 0.011 1.420 1.456 1.00
head field_arithmetic_get_square_benchmark 1.439 ± 0.032 1.422 1.527 1.00 ± 0.02
Command Mean [s] Min [s] Max [s] Relative
base integration_builtins 8.800 ± 0.308 8.651 9.654 1.00 ± 0.04
head integration_builtins 8.780 ± 0.117 8.613 8.919 1.00
Command Mean [s] Min [s] Max [s] Relative
base keccak_integration_benchmark 8.893 ± 0.080 8.806 9.105 1.00
head keccak_integration_benchmark 9.006 ± 0.128 8.856 9.197 1.01 ± 0.02
Command Mean [s] Min [s] Max [s] Relative
base linear_search 2.467 ± 0.028 2.440 2.516 1.00
head linear_search 2.470 ± 0.021 2.441 2.500 1.00 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base math_cmp_and_pow_integration_benchmark 1.929 ± 0.010 1.917 1.947 1.00 ± 0.01
head math_cmp_and_pow_integration_benchmark 1.928 ± 0.011 1.915 1.950 1.00
Command Mean [s] Min [s] Max [s] Relative
base math_integration_benchmark 1.712 ± 0.013 1.694 1.737 1.00 ± 0.01
head math_integration_benchmark 1.712 ± 0.022 1.692 1.759 1.00
Command Mean [s] Min [s] Max [s] Relative
base memory_integration_benchmark 1.362 ± 0.022 1.346 1.406 1.01 ± 0.02
head memory_integration_benchmark 1.350 ± 0.015 1.342 1.392 1.00
Command Mean [s] Min [s] Max [s] Relative
base operations_with_data_structures_benchmarks 1.986 ± 0.011 1.972 2.010 1.00
head operations_with_data_structures_benchmarks 1.991 ± 0.011 1.973 2.008 1.00 ± 0.01
Command Mean [ms] Min [ms] Max [ms] Relative
base pedersen 566.3 ± 6.1 561.7 578.1 1.00 ± 0.02
head pedersen 566.3 ± 9.6 559.3 591.2 1.00
Command Mean [s] Min [s] Max [s] Relative
base poseidon_integration_benchmark 1.021 ± 0.023 1.010 1.086 1.01 ± 0.02
head poseidon_integration_benchmark 1.009 ± 0.002 1.006 1.012 1.00
Command Mean [s] Min [s] Max [s] Relative
base secp_integration_benchmark 2.000 ± 0.023 1.974 2.041 1.00 ± 0.01
head secp_integration_benchmark 1.997 ± 0.012 1.978 2.015 1.00
Command Mean [ms] Min [ms] Max [ms] Relative
base set_integration_benchmark 751.1 ± 2.3 747.9 754.8 1.00
head set_integration_benchmark 778.7 ± 89.0 748.0 1031.8 1.04 ± 0.12
Command Mean [s] Min [s] Max [s] Relative
base uint256_integration_benchmark 4.895 ± 0.046 4.812 4.941 1.00 ± 0.01
head uint256_integration_benchmark 4.874 ± 0.047 4.805 4.923 1.00
pefontana commented 5 months ago

nice one!