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

[DNM] main branch #1757

Closed juanbono closed 1 month ago

juanbono commented 1 month ago

TITLE

Description

Description of the pull request changes and motivation.

Checklist

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 ± σ):     27.071 s ±  0.077 s    [User: 26.265 s, System: 0.804 s]
  Range (min … max):   27.016 s … 27.125 s    2 runs

Benchmark 2: hyper_threading_pr threads: 1
  Time (mean ± σ):     27.461 s ±  0.501 s    [User: 26.648 s, System: 0.811 s]
  Range (min … max):   27.107 s … 27.815 s    2 runs

Summary
  'hyper_threading_main threads: 1' ran
    1.01 ± 0.02 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 ± σ):     14.534 s ±  0.006 s    [User: 26.901 s, System: 0.733 s]
  Range (min … max):   14.530 s … 14.539 s    2 runs

Benchmark 2: hyper_threading_pr threads: 2
  Time (mean ± σ):     14.512 s ±  0.012 s    [User: 26.792 s, System: 0.781 s]
  Range (min … max):   14.503 s … 14.520 s    2 runs

Summary
  'hyper_threading_pr threads: 2' ran
    1.00 ± 0.00 times faster than 'hyper_threading_main 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.151 s ±  0.034 s    [User: 38.476 s, System: 0.982 s]
  Range (min … max):   11.127 s … 11.175 s    2 runs

Benchmark 2: hyper_threading_pr threads: 4
  Time (mean ± σ):     10.704 s ±  0.078 s    [User: 38.799 s, System: 0.960 s]
  Range (min … max):   10.649 s … 10.759 s    2 runs

Summary
  'hyper_threading_pr threads: 4' ran
    1.04 ± 0.01 times faster than 'hyper_threading_main 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.365 s ±  0.041 s    [User: 39.397 s, System: 1.023 s]
  Range (min … max):   10.336 s … 10.394 s    2 runs

Benchmark 2: hyper_threading_pr threads: 6
  Time (mean ± σ):     10.901 s ±  0.097 s    [User: 38.774 s, System: 0.990 s]
  Range (min … max):   10.833 s … 10.970 s    2 runs

Summary
  'hyper_threading_main threads: 6' ran
    1.05 ± 0.01 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.622 s ±  0.089 s    [User: 39.040 s, System: 1.033 s]
  Range (min … max):   10.560 s … 10.685 s    2 runs

Benchmark 2: hyper_threading_pr threads: 8
  Time (mean ± σ):     10.322 s ±  0.051 s    [User: 39.354 s, System: 0.968 s]
  Range (min … max):   10.286 s … 10.359 s    2 runs

Summary
  'hyper_threading_pr threads: 8' ran
    1.03 ± 0.01 times faster than 'hyper_threading_main 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.496 s ±  0.192 s    [User: 39.532 s, System: 1.090 s]
  Range (min … max):   10.360 s … 10.631 s    2 runs

Benchmark 2: hyper_threading_pr threads: 16
  Time (mean ± σ):     10.694 s ±  0.053 s    [User: 39.375 s, System: 1.088 s]
  Range (min … max):   10.656 s … 10.732 s    2 runs

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

Codecov Report

All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 94.76%. Comparing base (b25dae7) to head (d14bdfe).

Additional details and impacted files ```diff @@ Coverage Diff @@ ## main #1757 +/- ## ======================================= Coverage 94.76% 94.76% ======================================= Files 101 101 Lines 38826 38826 ======================================= Hits 36795 36795 Misses 2031 2031 ```

: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.041 ± 0.017 2.022 2.075 1.00 ± 0.01
head big_factorial 2.034 ± 0.012 2.014 2.052 1.00
Command Mean [s] Min [s] Max [s] Relative
base big_fibonacci 2.012 ± 0.055 1.975 2.160 1.01 ± 0.04
head big_fibonacci 2.001 ± 0.043 1.962 2.114 1.00
Command Mean [s] Min [s] Max [s] Relative
base blake2s_integration_benchmark 7.655 ± 0.087 7.514 7.786 1.01 ± 0.02
head blake2s_integration_benchmark 7.603 ± 0.093 7.475 7.761 1.00
Command Mean [s] Min [s] Max [s] Relative
base compare_arrays_200000 2.109 ± 0.013 2.094 2.135 1.00
head compare_arrays_200000 2.120 ± 0.013 2.102 2.133 1.01 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base dict_integration_benchmark 1.422 ± 0.006 1.414 1.431 1.02 ± 0.01
head dict_integration_benchmark 1.393 ± 0.014 1.382 1.428 1.00
Command Mean [s] Min [s] Max [s] Relative
base field_arithmetic_get_square_benchmark 1.298 ± 0.019 1.273 1.332 1.01 ± 0.02
head field_arithmetic_get_square_benchmark 1.286 ± 0.015 1.275 1.328 1.00
Command Mean [s] Min [s] Max [s] Relative
base integration_builtins 7.697 ± 0.111 7.549 7.963 1.01 ± 0.02
head integration_builtins 7.649 ± 0.094 7.520 7.828 1.00
Command Mean [s] Min [s] Max [s] Relative
base keccak_integration_benchmark 7.865 ± 0.079 7.756 7.965 1.00
head keccak_integration_benchmark 7.958 ± 0.169 7.771 8.364 1.01 ± 0.02
Command Mean [s] Min [s] Max [s] Relative
base linear_search 2.086 ± 0.030 2.047 2.134 1.01 ± 0.02
head linear_search 2.065 ± 0.023 2.043 2.123 1.00
Command Mean [s] Min [s] Max [s] Relative
base math_cmp_and_pow_integration_benchmark 1.699 ± 0.059 1.677 1.867 1.01 ± 0.04
head math_cmp_and_pow_integration_benchmark 1.687 ± 0.028 1.670 1.766 1.00
Command Mean [s] Min [s] Max [s] Relative
base math_integration_benchmark 1.582 ± 0.010 1.570 1.606 1.00
head math_integration_benchmark 1.591 ± 0.011 1.576 1.618 1.01 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base memory_integration_benchmark 1.185 ± 0.010 1.174 1.210 1.00 ± 0.01
head memory_integration_benchmark 1.183 ± 0.010 1.173 1.209 1.00
Command Mean [s] Min [s] Max [s] Relative
base operations_with_data_structures_benchmarks 1.801 ± 0.006 1.795 1.812 1.00
head operations_with_data_structures_benchmarks 1.804 ± 0.018 1.786 1.838 1.00 ± 0.01
Command Mean [ms] Min [ms] Max [ms] Relative
base pedersen 516.8 ± 4.1 512.6 527.2 1.00 ± 0.01
head pedersen 515.0 ± 2.3 512.6 519.4 1.00
Command Mean [ms] Min [ms] Max [ms] Relative
base poseidon_integration_benchmark 946.8 ± 4.1 939.6 952.7 1.00 ± 0.01
head poseidon_integration_benchmark 942.2 ± 3.9 937.4 948.0 1.00
Command Mean [s] Min [s] Max [s] Relative
base secp_integration_benchmark 1.846 ± 0.012 1.835 1.876 1.00 ± 0.01
head secp_integration_benchmark 1.842 ± 0.006 1.833 1.850 1.00
Command Mean [ms] Min [ms] Max [ms] Relative
base set_integration_benchmark 641.8 ± 6.6 637.6 659.8 1.00 ± 0.01
head set_integration_benchmark 638.8 ± 4.7 633.3 650.7 1.00
Command Mean [s] Min [s] Max [s] Relative
base uint256_integration_benchmark 4.206 ± 0.046 4.140 4.269 1.00
head uint256_integration_benchmark 4.206 ± 0.081 4.128 4.416 1.00 ± 0.02