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

[WIP] Remove `create_entry_code` #1746

Closed fmoletta closed 4 months ago

fmoletta commented 5 months ago

TITLE

Description

Description of the pull request changes and motivation.

Checklist

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.408 s ±  0.054 s    [User: 29.690 s, System: 0.716 s]
  Range (min … max):   30.370 s … 30.445 s    2 runs

Benchmark 2: hyper_threading_pr threads: 1
  Time (mean ± σ):     30.198 s ±  0.018 s    [User: 29.481 s, System: 0.715 s]
  Range (min … max):   30.186 s … 30.211 s    2 runs

Summary
  'hyper_threading_pr threads: 1' ran
    1.01 ± 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 ± σ):     16.403 s ±  0.007 s    [User: 30.197 s, System: 0.650 s]
  Range (min … max):   16.398 s … 16.408 s    2 runs

Benchmark 2: hyper_threading_pr threads: 2
  Time (mean ± σ):     16.325 s ±  0.017 s    [User: 30.034 s, System: 0.668 s]
  Range (min … max):   16.313 s … 16.337 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.667 s ±  0.064 s    [User: 41.702 s, System: 0.963 s]
  Range (min … max):   11.622 s … 11.713 s    2 runs

Benchmark 2: hyper_threading_pr threads: 4
  Time (mean ± σ):     11.721 s ±  0.351 s    [User: 41.388 s, System: 0.864 s]
  Range (min … max):   11.473 s … 11.969 s    2 runs

Summary
  'hyper_threading_main threads: 4' ran
    1.00 ± 0.03 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.653 s ±  0.099 s    [User: 41.815 s, System: 1.013 s]
  Range (min … max):   11.583 s … 11.723 s    2 runs

Benchmark 2: hyper_threading_pr threads: 6
  Time (mean ± σ):     11.650 s ±  0.038 s    [User: 41.465 s, System: 0.944 s]
  Range (min … max):   11.624 s … 11.677 s    2 runs

Summary
  'hyper_threading_pr threads: 6' ran
    1.00 ± 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.456 s ±  0.147 s    [User: 42.241 s, System: 0.970 s]
  Range (min … max):   11.352 s … 11.559 s    2 runs

Benchmark 2: hyper_threading_pr threads: 8
  Time (mean ± σ):     11.283 s ±  0.107 s    [User: 41.729 s, System: 0.940 s]
  Range (min … max):   11.207 s … 11.358 s    2 runs

Summary
  'hyper_threading_pr threads: 8' ran
    1.02 ± 0.02 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 ± σ):     11.165 s ±  0.054 s    [User: 42.592 s, System: 0.995 s]
  Range (min … max):   11.127 s … 11.203 s    2 runs

Benchmark 2: hyper_threading_pr threads: 16
  Time (mean ± σ):     11.167 s ±  0.215 s    [User: 41.951 s, System: 1.028 s]
  Range (min … max):   11.015 s … 11.319 s    2 runs

Summary
  'hyper_threading_main threads: 16' ran
    1.00 ± 0.02 times faster than 'hyper_threading_pr threads: 16'
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.388 ± 0.072 2.337 2.575 1.01 ± 0.03
head big_factorial 2.357 ± 0.021 2.335 2.402 1.00
Command Mean [s] Min [s] Max [s] Relative
base big_fibonacci 2.297 ± 0.023 2.280 2.343 1.00
head big_fibonacci 2.329 ± 0.049 2.271 2.419 1.01 ± 0.02
Command Mean [s] Min [s] Max [s] Relative
base blake2s_integration_benchmark 8.783 ± 0.335 8.505 9.412 1.02 ± 0.04
head blake2s_integration_benchmark 8.641 ± 0.084 8.536 8.839 1.00
Command Mean [s] Min [s] Max [s] Relative
base compare_arrays_200000 2.402 ± 0.017 2.382 2.431 1.00 ± 0.01
head compare_arrays_200000 2.401 ± 0.018 2.380 2.442 1.00
Command Mean [s] Min [s] Max [s] Relative
base dict_integration_benchmark 1.538 ± 0.007 1.531 1.548 1.00
head dict_integration_benchmark 1.551 ± 0.011 1.543 1.573 1.01 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base field_arithmetic_get_square_benchmark 1.430 ± 0.022 1.414 1.489 1.00
head field_arithmetic_get_square_benchmark 1.431 ± 0.012 1.414 1.453 1.00 ± 0.02
Command Mean [s] Min [s] Max [s] Relative
base integration_builtins 8.771 ± 0.193 8.499 9.176 1.02 ± 0.03
head integration_builtins 8.626 ± 0.097 8.503 8.806 1.00
Command Mean [s] Min [s] Max [s] Relative
base keccak_integration_benchmark 8.979 ± 0.144 8.793 9.209 1.00 ± 0.02
head keccak_integration_benchmark 8.954 ± 0.100 8.809 9.098 1.00
Command Mean [s] Min [s] Max [s] Relative
base linear_search 2.414 ± 0.018 2.395 2.454 1.00
head linear_search 2.414 ± 0.016 2.398 2.440 1.00 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base math_cmp_and_pow_integration_benchmark 1.899 ± 0.024 1.879 1.943 1.00 ± 0.01
head math_cmp_and_pow_integration_benchmark 1.893 ± 0.008 1.884 1.907 1.00
Command Mean [s] Min [s] Max [s] Relative
base math_integration_benchmark 1.688 ± 0.004 1.682 1.695 1.00
head math_integration_benchmark 1.697 ± 0.012 1.685 1.725 1.01 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base memory_integration_benchmark 1.339 ± 0.014 1.324 1.371 1.00
head memory_integration_benchmark 1.354 ± 0.015 1.341 1.394 1.01 ± 0.02
Command Mean [s] Min [s] Max [s] Relative
base operations_with_data_structures_benchmarks 1.992 ± 0.014 1.978 2.024 1.00
head operations_with_data_structures_benchmarks 1.997 ± 0.019 1.982 2.045 1.00 ± 0.01
Command Mean [ms] Min [ms] Max [ms] Relative
base pedersen 559.0 ± 1.3 556.2 560.8 1.01 ± 0.00
head pedersen 556.0 ± 0.9 554.8 557.6 1.00
Command Mean [ms] Min [ms] Max [ms] Relative
base poseidon_integration_benchmark 986.1 ± 2.9 983.2 993.7 1.00
head poseidon_integration_benchmark 986.4 ± 5.3 981.4 998.7 1.00 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base secp_integration_benchmark 2.004 ± 0.015 1.980 2.031 1.01 ± 0.01
head secp_integration_benchmark 1.988 ± 0.024 1.970 2.052 1.00
Command Mean [ms] Min [ms] Max [ms] Relative
base set_integration_benchmark 744.9 ± 3.7 742.2 754.7 1.00
head set_integration_benchmark 746.8 ± 7.7 740.9 766.5 1.00 ± 0.01
Command Mean [s] Min [s] Max [s] Relative
base uint256_integration_benchmark 4.796 ± 0.050 4.746 4.892 1.00
head uint256_integration_benchmark 4.850 ± 0.063 4.782 4.978 1.01 ± 0.02