Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: MemoryAccessAdapter #455

Merged
merged 18 commits into from
Sep 29, 2024
Merged

feat: MemoryAccessAdapter #455

merged 18 commits into from
Sep 29, 2024

Conversation

zlangley
Copy link
Contributor

@zlangley zlangley commented Sep 20, 2024

  • Replaces hashmap memory with a segment tree data structure to track conversions between word sizes
  • Adds AccessAdapterAir for the trace of conversion events
  • Changes compiler to align to common multiple of word size

Closes INT-2169 and INT-1939

@zlangley zlangley force-pushed the feat/memory-access-adapter branch 19 times, most recently from 8a9f8f2 to bca10d2 Compare September 23, 2024 21:17
@zlangley zlangley marked this pull request as ready for review September 23, 2024 21:24
@zlangley zlangley added the run-benchmark triggers benchmark workflows on the pr label Sep 23, 2024
@zlangley zlangley force-pushed the feat/memory-access-adapter branch from bca10d2 to ef7b827 Compare September 23, 2024 21:26
Copy link

linear bot commented Sep 23, 2024

INT-2169 Make compiler changes to ensure instruction operands are block-aligned

INT-1939 Memory support variable word size

Using the Mittal interaction argument: https://docs.google.com/document/d/1n1FU64ej0VGSRHRMHuf12gEanTT8HHwqEf3NAiTTo6Q/edit

We can do this concurrently with no-cpu switch since it only affects memory interface.

This comment has been minimized.

@zlangley zlangley force-pushed the feat/memory-access-adapter branch from ef7b827 to 30c5dbd Compare September 23, 2024 21:34

This comment has been minimized.

This comment has been minimized.

@zlangley zlangley force-pushed the feat/memory-access-adapter branch from 30c5dbd to 30f2395 Compare September 23, 2024 23:30
@zlangley zlangley force-pushed the feat/memory-access-adapter branch from 2cac386 to a153ab4 Compare September 27, 2024 16:55

This comment was marked as outdated.

This comment was marked as outdated.

luffykai and others added 6 commits September 28, 2024 00:56
* feat: field expression framework

* test pass

* update readme

* range check vars

* scalar mul and ec double

* address comment

* update readme

* address comments

* check the result in tests

* rename
* Add trait BaseAirWithPublicValues

* Keygen doesn't need to pass the number of public values
* feat: Keccak batch reads and use of AlignedBorrow

* Fix timestamp

* feat: add a separate memory block to select for when partial block read

* chore: todo comment on switching to range check output

---------

Co-authored-by: Jonathan Wang <[email protected]>

This comment was marked as outdated.

This comment was marked as outdated.

@jonathanpwang
Copy link
Contributor

fix: the verifier program for keccak was going OOM when compiler set word_size to 64: 2^24 * 64 = 2^30.

Copy link

vm_verify_fibair

stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms verify_program_compile_ms
8,091.0 (+276.0 [+3.5%]) 67,641,364 (+1,507,328 [+2.3%]) 30,798,646 (+376,688 [+1.2%]) 1,884.0 (+205.0 [+12.2%]) 34.0
chip_name rows_used
ByteXor 65,536
Core 320,679
FieldArithmetic 164,653
FieldExtension 7,914
Memory 107,624 (+252 [+0.2%])
Memory 2 44,892
Memory 3 22,447
Memory 4 4,583
Memory 5 0
Memory 6 0
Memory 7 0
Poseidon2 3,309
Program 37,634
RangeChecker 131,072
opcode cells_used frequency
FADD 4,278,386 (+45,718 [+1.1%]) 134,463
BNE 4,901,195 (+3,640 [+0.1%]) 75,347
STOREW 5,666,620 (+19,068 [+0.3%]) 73,719
LOADW 3,358,097 (+105,926 [+3.3%]) 48,920
LOADW2 2,581,941 (+47,935 [+1.9%]) 38,928
SHINTW 2,791,656 33,234
STOREW2 1,698,904 (+14,896 [+0.9%]) 21,546
FMUL 718,212 (+14,750 [+2.1%]) 20,720
JAL 834,674 (+120 [+0.0%]) 12,839
FSUB 396,523 (+39,852 [+11.2%]) 9,467
HINT_INPUT 310,050 4,770
CT_END 254,865 3,921
CT_START 254,865 3,921
BBE4MUL 219,703 (-38,645 [-15.0%]) 3,759
BEQ 222,885 3,429
COMP_POS2 1,352,390 (+8,034 [+0.6%]) 2,678
FE4ADD 110,982 (-4,718 [-4.1%]) 1,678
BBE4DIV 108,689 (+24,361 [+28.9%]) 1,239
FE4SUB 123,518 (+39,182 [+46.5%]) 1,238
PERM_POS2 373,331 (+56,569 [+17.9%]) 631
HINT_BITS 6,760 104
FDIV 93 3
TERMINATE 65 1
dsl_ir cells_used frequency
For 6,100,751 (+101 [+0.0%]) 116,132
StoreHintWord 3,574,096 58,474
AddVI 1,312,501 (+266 [+0.0%]) 40,299
Alloc 1,713,094 (+48 [+0.0%]) 39,111
StoreE 3,152,504 (+28,840 [+0.9%]) 37,932
LoadV 2,074,229 (+209 [+0.0%]) 30,939
LoadE 1,337,330 (+75,684 [+6.0%]) 19,400
LoadF 1,175,841 (+59,633 [+5.3%]) 17,071
IfEqI 982,345 15,113
StoreV 1,131,610 14,061
ImmV 920,810 (+342 [+0.0%]) 13,133
StoreF 890,094 (+476 [+0.1%]) 10,754
ImmF 474,595 (-171 [-0.0%]) 7,243
SubEF 431,591 (+57,633 [+15.4%]) 6,612
AddEI 239,649 (+45,401 [+23.4%]) 6,244
AssertEqF 328,120 5,048
HintInputVec 310,050 4,770
CycleTrackerEnd 254,865 3,921
CycleTrackerStart 254,865 3,921
SubVI 184,208 (+266 [+0.1%]) 3,900
MulE 213,744 (-40,764 [-16.0%]) 3,726
AssertEqV 236,600 3,640
SubV 108,619 3,502
MulVI 102,376 3,300
MulV 161,143 (+247 [+0.2%]) 3,224
AddFI 96,758 (-19 [-0.0%]) 3,101
IfNe 183,105 2,817
MulF 83,161 2,682
Poseidon2CompressBabyBear 1,352,390 (+8,034 [+0.6%]) 2,678
AddV 70,513 2,274
ImmE 138,101 (+3,377 [+2.5%]) 2,068
AddE 110,982 (-4,718 [-4.1%]) 1,678
MulEF 65,867 (+14,455 [+28.1%]) 1,656
DivE 108,613 (+24,353 [+28.9%]) 1,238
SubE 123,518 (+39,182 [+46.5%]) 1,238
IfEq 48,295 743
Poseidon2PermuteBabyBear 373,331 (+56,569 [+17.9%]) 631
IfNeI 40,235 619
AddEFFI 35,696 (+420 [+1.2%]) 524
AssertEqE 30,680 (+3,640 [+13.5%]) 416
SubVIN 12,772 412
MulEI 15,572 (+3,095 [+24.8%]) 165
HintBitsF 6,760 104
AssertEqVI 1,040 16
SubEI 318 (+70 [+28.2%]) 8
DivEIN 347 (+19 [+5.8%]) 5
AssertEqEI 260 4
DivFIN 93 3
Halt 65 1
MulFI 50 1
air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
CoreAir 44,564,480 112 19 65 20 0 8 524,288
ProgramAir 589,824 4 1 1 8 9 1 65,536
FieldArithmeticAir 12,320,768 23 15 31 16 0 8 262,144
FieldExtensionArithmeticAir 466,944 (-417,792 [-47.2%]) 23 (-15 [-39.5%]) 15 (-36 [-70.6%]) 41 (-27 [-39.7%]) 16 (-24 [-60.0%]) 0 8 8,192
Poseidon2VmAir 1,826,816 (-638,976 [-25.9%]) 373 (-46 [-11.0%]) 32 (-112 [-77.8%]) 418 (-84 [-16.7%]) 28 (-72 [-72.0%]) 0 8 4,096
XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
MemoryAuditAir 3,538,944 19 6 19 8 0 8 131,072
AccessAdapterAir<2> 1,507,328 11 5 11 12 0 4 65,536
AccessAdapterAir<4> 819,200 11 5 13 12 0 4 32,768
AccessAdapterAir<8> 237,568 11 5 17 12 0 4 8,192
VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 6558c01
AWS Instance Type: r7g.8xlarge
Benchmark Workflow

Copy link

tiny_e2e

group stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms
fibonacci_program_inner 464.0 (-9.0 [-1.9%]) 1,782,300 200,526 0.0
group chip_name rows_used
fibonacci_program_inner ByteXor 65,536
fibonacci_program_inner Core 6
fibonacci_program_inner FieldArithmetic 90
fibonacci_program_inner Memory 35
fibonacci_program_inner Memory 2 0
fibonacci_program_inner Memory 3 0
fibonacci_program_inner Memory 4 0
fibonacci_program_inner Memory 5 0
fibonacci_program_inner Memory 6 0
fibonacci_program_inner Memory 7 0
fibonacci_program_inner Program 97
fibonacci_program_inner RangeChecker 131,072
group opcode cells_used frequency
fibonacci_program_inner FADD 3,360 90
fibonacci_program_inner STOREW 320 4
fibonacci_program_inner JAL 80 1
fibonacci_program_inner TERMINATE 61 1
group dsl_ir cells_used frequency
fibonacci_program_inner AddFI 2,430 60
fibonacci_program_inner AddF 930 30
fibonacci_program_inner ImmF 160 2
fibonacci_program_inner Halt 61 1
group air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
fibonacci_program_inner CoreAir 840 114 19 61 44 0 2 8
fibonacci_program_inner ProgramAir 1,152 4 1 1 8 9 1 128
fibonacci_program_inner FieldArithmeticAir 8,576 28 15 31 36 0 2 128
fibonacci_program_inner XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
fibonacci_program_inner MemoryAuditAir 2,240 21 6 19 16 0 2 64
fibonacci_program_inner VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
fibonacci_program_inner VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 6558c01
AWS Instance Type: r7g.16xlarge
Benchmark Workflow

Copy link

vm_verify_fibair

stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms verify_program_compile_ms
8,145.0 (+330.0 [+4.2%]) 67,641,364 (+1,507,328 [+2.3%]) 30,798,646 (+376,688 [+1.2%]) 1,891.0 (+212.0 [+12.6%]) 35.0 (+1.0 [+2.9%])
chip_name rows_used
ByteXor 65,536
Core 320,679
FieldArithmetic 164,653
FieldExtension 7,914
Memory 107,624 (+252 [+0.2%])
Memory 2 44,892
Memory 3 22,447
Memory 4 4,583
Memory 5 0
Memory 6 0
Memory 7 0
Poseidon2 3,309
Program 37,634
RangeChecker 131,072
opcode cells_used frequency
FADD 4,278,386 (+45,718 [+1.1%]) 134,463
BNE 4,901,195 (+3,640 [+0.1%]) 75,347
STOREW 5,666,620 (+19,068 [+0.3%]) 73,719
LOADW 3,358,097 (+105,926 [+3.3%]) 48,920
LOADW2 2,581,941 (+47,935 [+1.9%]) 38,928
SHINTW 2,791,656 33,234
STOREW2 1,698,904 (+14,896 [+0.9%]) 21,546
FMUL 718,212 (+14,750 [+2.1%]) 20,720
JAL 834,674 (+120 [+0.0%]) 12,839
FSUB 396,523 (+39,852 [+11.2%]) 9,467
HINT_INPUT 310,050 4,770
CT_END 254,865 3,921
CT_START 254,865 3,921
BBE4MUL 219,703 (-38,645 [-15.0%]) 3,759
BEQ 222,885 3,429
COMP_POS2 1,352,390 (+8,034 [+0.6%]) 2,678
FE4ADD 110,982 (-4,718 [-4.1%]) 1,678
BBE4DIV 108,689 (+24,361 [+28.9%]) 1,239
FE4SUB 123,518 (+39,182 [+46.5%]) 1,238
PERM_POS2 373,331 (+56,569 [+17.9%]) 631
HINT_BITS 6,760 104
FDIV 93 3
TERMINATE 65 1
dsl_ir cells_used frequency
For 6,100,751 (+101 [+0.0%]) 116,132
StoreHintWord 3,574,096 58,474
AddVI 1,312,501 (+266 [+0.0%]) 40,299
Alloc 1,713,094 (+48 [+0.0%]) 39,111
StoreE 3,152,504 (+28,840 [+0.9%]) 37,932
LoadV 2,074,229 (+209 [+0.0%]) 30,939
LoadE 1,337,330 (+75,684 [+6.0%]) 19,400
LoadF 1,175,841 (+59,633 [+5.3%]) 17,071
IfEqI 982,345 15,113
StoreV 1,131,610 14,061
ImmV 920,810 (+342 [+0.0%]) 13,133
StoreF 890,094 (+476 [+0.1%]) 10,754
ImmF 474,595 (-171 [-0.0%]) 7,243
SubEF 431,591 (+57,633 [+15.4%]) 6,612
AddEI 239,649 (+45,401 [+23.4%]) 6,244
AssertEqF 328,120 5,048
HintInputVec 310,050 4,770
CycleTrackerEnd 254,865 3,921
CycleTrackerStart 254,865 3,921
SubVI 184,208 (+266 [+0.1%]) 3,900
MulE 213,744 (-40,764 [-16.0%]) 3,726
AssertEqV 236,600 3,640
SubV 108,619 3,502
MulVI 102,376 3,300
MulV 161,143 (+247 [+0.2%]) 3,224
AddFI 96,758 (-19 [-0.0%]) 3,101
IfNe 183,105 2,817
MulF 83,161 2,682
Poseidon2CompressBabyBear 1,352,390 (+8,034 [+0.6%]) 2,678
AddV 70,513 2,274
ImmE 138,101 (+3,377 [+2.5%]) 2,068
AddE 110,982 (-4,718 [-4.1%]) 1,678
MulEF 65,867 (+14,455 [+28.1%]) 1,656
DivE 108,613 (+24,353 [+28.9%]) 1,238
SubE 123,518 (+39,182 [+46.5%]) 1,238
IfEq 48,295 743
Poseidon2PermuteBabyBear 373,331 (+56,569 [+17.9%]) 631
IfNeI 40,235 619
AddEFFI 35,696 (+420 [+1.2%]) 524
AssertEqE 30,680 (+3,640 [+13.5%]) 416
SubVIN 12,772 412
MulEI 15,572 (+3,095 [+24.8%]) 165
HintBitsF 6,760 104
AssertEqVI 1,040 16
SubEI 318 (+70 [+28.2%]) 8
DivEIN 347 (+19 [+5.8%]) 5
AssertEqEI 260 4
DivFIN 93 3
Halt 65 1
MulFI 50 1
air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
CoreAir 44,564,480 112 19 65 20 0 8 524,288
ProgramAir 589,824 4 1 1 8 9 1 65,536
FieldArithmeticAir 12,320,768 23 15 31 16 0 8 262,144
FieldExtensionArithmeticAir 466,944 (-417,792 [-47.2%]) 23 (-15 [-39.5%]) 15 (-36 [-70.6%]) 41 (-27 [-39.7%]) 16 (-24 [-60.0%]) 0 8 8,192
Poseidon2VmAir 1,826,816 (-638,976 [-25.9%]) 373 (-46 [-11.0%]) 32 (-112 [-77.8%]) 418 (-84 [-16.7%]) 28 (-72 [-72.0%]) 0 8 4,096
XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
MemoryAuditAir 3,538,944 19 6 19 8 0 8 131,072
AccessAdapterAir<2> 1,507,328 11 5 11 12 0 4 65,536
AccessAdapterAir<4> 819,200 11 5 13 12 0 4 32,768
AccessAdapterAir<8> 237,568 11 5 17 12 0 4 8,192
VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 77efe63
AWS Instance Type: r7g.8xlarge
Benchmark Workflow

Copy link

tiny_e2e

group stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms
fibonacci_program_inner 467.0 (-6.0 [-1.3%]) 1,782,300 200,526 0.0
group chip_name rows_used
fibonacci_program_inner ByteXor 65,536
fibonacci_program_inner Core 6
fibonacci_program_inner FieldArithmetic 90
fibonacci_program_inner Memory 35
fibonacci_program_inner Memory 2 0
fibonacci_program_inner Memory 3 0
fibonacci_program_inner Memory 4 0
fibonacci_program_inner Memory 5 0
fibonacci_program_inner Memory 6 0
fibonacci_program_inner Memory 7 0
fibonacci_program_inner Program 97
fibonacci_program_inner RangeChecker 131,072
group opcode cells_used frequency
fibonacci_program_inner FADD 3,360 90
fibonacci_program_inner STOREW 320 4
fibonacci_program_inner JAL 80 1
fibonacci_program_inner TERMINATE 61 1
group dsl_ir cells_used frequency
fibonacci_program_inner AddFI 2,430 60
fibonacci_program_inner AddF 930 30
fibonacci_program_inner ImmF 160 2
fibonacci_program_inner Halt 61 1
group air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
fibonacci_program_inner CoreAir 840 114 19 61 44 0 2 8
fibonacci_program_inner ProgramAir 1,152 4 1 1 8 9 1 128
fibonacci_program_inner FieldArithmeticAir 8,576 28 15 31 36 0 2 128
fibonacci_program_inner XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
fibonacci_program_inner MemoryAuditAir 2,240 21 6 19 16 0 2 64
fibonacci_program_inner VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
fibonacci_program_inner VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 77efe63
AWS Instance Type: r7g.16xlarge
Benchmark Workflow

@jonathanpwang jonathanpwang force-pushed the feat/memory-access-adapter branch from 77efe63 to 712dae2 Compare September 28, 2024 20:08
Copy link

tiny_e2e

group stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms
fibonacci_program_inner 470.0 (-3.0 [-0.6%]) 1,782,300 200,526 0.0
group chip_name rows_used
fibonacci_program_inner ByteXor 65,536
fibonacci_program_inner Core 6
fibonacci_program_inner FieldArithmetic 90
fibonacci_program_inner Memory 35
fibonacci_program_inner Memory 2 0
fibonacci_program_inner Memory 3 0
fibonacci_program_inner Memory 4 0
fibonacci_program_inner Memory 5 0
fibonacci_program_inner Memory 6 0
fibonacci_program_inner Memory 7 0
fibonacci_program_inner Program 97
fibonacci_program_inner RangeChecker 131,072
group opcode cells_used frequency
fibonacci_program_inner FADD 3,360 90
fibonacci_program_inner STOREW 320 4
fibonacci_program_inner JAL 80 1
fibonacci_program_inner TERMINATE 61 1
group dsl_ir cells_used frequency
fibonacci_program_inner AddFI 2,430 60
fibonacci_program_inner AddF 930 30
fibonacci_program_inner ImmF 160 2
fibonacci_program_inner Halt 61 1
group air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
fibonacci_program_inner CoreAir 840 114 19 61 44 0 2 8
fibonacci_program_inner ProgramAir 1,152 4 1 1 8 9 1 128
fibonacci_program_inner FieldArithmeticAir 8,576 28 15 31 36 0 2 128
fibonacci_program_inner XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
fibonacci_program_inner MemoryAuditAir 2,240 21 6 19 16 0 2 64
fibonacci_program_inner VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
fibonacci_program_inner VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 712dae2
AWS Instance Type: r7g.16xlarge
Benchmark Workflow

Copy link

vm_verify_fibair

stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms verify_program_compile_ms
8,151.0 (+336.0 [+4.3%]) 67,641,364 (+1,507,328 [+2.3%]) 30,798,646 (+376,688 [+1.2%]) 1,870.0 (+191.0 [+11.4%]) 35.0 (+1.0 [+2.9%])
chip_name rows_used
ByteXor 65,536
Core 320,679
FieldArithmetic 164,653
FieldExtension 7,914
Memory 107,624 (+252 [+0.2%])
Memory 2 44,892
Memory 3 22,447
Memory 4 4,583
Memory 5 0
Memory 6 0
Memory 7 0
Poseidon2 3,309
Program 37,634
RangeChecker 131,072
opcode cells_used frequency
FADD 4,278,386 (+45,718 [+1.1%]) 134,463
BNE 4,901,195 (+3,640 [+0.1%]) 75,347
STOREW 5,666,620 (+19,068 [+0.3%]) 73,719
LOADW 3,358,097 (+105,926 [+3.3%]) 48,920
LOADW2 2,581,941 (+47,935 [+1.9%]) 38,928
SHINTW 2,791,656 33,234
STOREW2 1,698,904 (+14,896 [+0.9%]) 21,546
FMUL 718,212 (+14,750 [+2.1%]) 20,720
JAL 834,674 (+120 [+0.0%]) 12,839
FSUB 396,523 (+39,852 [+11.2%]) 9,467
HINT_INPUT 310,050 4,770
CT_END 254,865 3,921
CT_START 254,865 3,921
BBE4MUL 219,703 (-38,645 [-15.0%]) 3,759
BEQ 222,885 3,429
COMP_POS2 1,352,390 (+8,034 [+0.6%]) 2,678
FE4ADD 110,982 (-4,718 [-4.1%]) 1,678
BBE4DIV 108,689 (+24,361 [+28.9%]) 1,239
FE4SUB 123,518 (+39,182 [+46.5%]) 1,238
PERM_POS2 373,331 (+56,569 [+17.9%]) 631
HINT_BITS 6,760 104
FDIV 93 3
TERMINATE 65 1
dsl_ir cells_used frequency
For 6,100,751 (+101 [+0.0%]) 116,132
StoreHintWord 3,574,096 58,474
AddVI 1,312,501 (+266 [+0.0%]) 40,299
Alloc 1,713,094 (+48 [+0.0%]) 39,111
StoreE 3,152,504 (+28,840 [+0.9%]) 37,932
LoadV 2,074,229 (+209 [+0.0%]) 30,939
LoadE 1,337,330 (+75,684 [+6.0%]) 19,400
LoadF 1,175,841 (+59,633 [+5.3%]) 17,071
IfEqI 982,345 15,113
StoreV 1,131,610 14,061
ImmV 920,810 (+342 [+0.0%]) 13,133
StoreF 890,094 (+476 [+0.1%]) 10,754
ImmF 474,595 (-171 [-0.0%]) 7,243
SubEF 431,591 (+57,633 [+15.4%]) 6,612
AddEI 239,649 (+45,401 [+23.4%]) 6,244
AssertEqF 328,120 5,048
HintInputVec 310,050 4,770
CycleTrackerEnd 254,865 3,921
CycleTrackerStart 254,865 3,921
SubVI 184,208 (+266 [+0.1%]) 3,900
MulE 213,744 (-40,764 [-16.0%]) 3,726
AssertEqV 236,600 3,640
SubV 108,619 3,502
MulVI 102,376 3,300
MulV 161,143 (+247 [+0.2%]) 3,224
AddFI 96,758 (-19 [-0.0%]) 3,101
IfNe 183,105 2,817
MulF 83,161 2,682
Poseidon2CompressBabyBear 1,352,390 (+8,034 [+0.6%]) 2,678
AddV 70,513 2,274
ImmE 138,101 (+3,377 [+2.5%]) 2,068
AddE 110,982 (-4,718 [-4.1%]) 1,678
MulEF 65,867 (+14,455 [+28.1%]) 1,656
DivE 108,613 (+24,353 [+28.9%]) 1,238
SubE 123,518 (+39,182 [+46.5%]) 1,238
IfEq 48,295 743
Poseidon2PermuteBabyBear 373,331 (+56,569 [+17.9%]) 631
IfNeI 40,235 619
AddEFFI 35,696 (+420 [+1.2%]) 524
AssertEqE 30,680 (+3,640 [+13.5%]) 416
SubVIN 12,772 412
MulEI 15,572 (+3,095 [+24.8%]) 165
HintBitsF 6,760 104
AssertEqVI 1,040 16
SubEI 318 (+70 [+28.2%]) 8
DivEIN 347 (+19 [+5.8%]) 5
AssertEqEI 260 4
DivFIN 93 3
Halt 65 1
MulFI 50 1
air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
CoreAir 44,564,480 112 19 65 20 0 8 524,288
ProgramAir 589,824 4 1 1 8 9 1 65,536
FieldArithmeticAir 12,320,768 23 15 31 16 0 8 262,144
FieldExtensionArithmeticAir 466,944 (-417,792 [-47.2%]) 23 (-15 [-39.5%]) 15 (-36 [-70.6%]) 41 (-27 [-39.7%]) 16 (-24 [-60.0%]) 0 8 8,192
Poseidon2VmAir 1,826,816 (-638,976 [-25.9%]) 373 (-46 [-11.0%]) 32 (-112 [-77.8%]) 418 (-84 [-16.7%]) 28 (-72 [-72.0%]) 0 8 4,096
XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
MemoryAuditAir 3,538,944 19 6 19 8 0 8 131,072
AccessAdapterAir<2> 1,507,328 11 5 11 12 0 4 65,536
AccessAdapterAir<4> 819,200 11 5 13 12 0 4 32,768
AccessAdapterAir<8> 237,568 11 5 17 12 0 4 8,192
VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 712dae2
AWS Instance Type: r7g.8xlarge
Benchmark Workflow

Copy link

small_e2e

group stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms verify_program_compile_ms
bench_program_inner 1,207.0 1,915,681 (-83,155 [-4.2%]) 277,324 (-9,957 [-3.5%]) 2.0
inner_verifier 110,662.0 (-967.0 [-0.9%]) 1,069,219,860 (-121,962,496 [-10.2%]) 435,516,063 (-198,759,801 [-31.3%]) 29,457.0 (-4,724.0 [-13.8%]) 44,190.0 (-5.0 [-0.0%])
group chip_name rows_used
bench_program_inner ByteXor 65,536
bench_program_inner Core 28
bench_program_inner FieldArithmetic 13
bench_program_inner FieldExtension 1
bench_program_inner Keccak256 24
bench_program_inner Memory 65 (+6 [+10.2%])
bench_program_inner Memory 2 26
bench_program_inner Memory 3 13
bench_program_inner Memory 4 5
bench_program_inner Memory 5 0
bench_program_inner Memory 6 0
bench_program_inner Memory 7 0
bench_program_inner Program 37
bench_program_inner RangeChecker 131,072
inner_verifier ByteXor 65,536
inner_verifier Core 4,316,224 (-2,173,195 [-33.5%])
inner_verifier FieldArithmetic 1,757,624 (-763,054 [-30.3%])
inner_verifier FieldExtension 954,866 (-547,409 [-36.4%])
inner_verifier Memory 654,021 (-190,767 [-22.6%])
inner_verifier Memory 2 2,185,853
inner_verifier Memory 3 1,092,977
inner_verifier Memory 4 37,810
inner_verifier Memory 5 0
inner_verifier Memory 6 0
inner_verifier Memory 7 0
inner_verifier Poseidon2 22,971 (-8,183 [-26.3%])
inner_verifier Program 204,914 (-76,109 [-27.1%])
inner_verifier RangeChecker 131,072
group opcode cells_used frequency
bench_program_inner STOREW 1,261 16
bench_program_inner FADD 398 11
bench_program_inner BNE 305 5
bench_program_inner FMUL 62 2
bench_program_inner JAL 141 2
bench_program_inner LOADW 160 2
bench_program_inner STOREW2 160 2
bench_program_inner FE4ADD 222 (+78 [+54.2%]) 1
bench_program_inner KECCAK256 77,909 (-10,035 [-11.4%]) 1
bench_program_inner TERMINATE 61 1
inner_verifier LOADW 99,035,431 (-48,510,736 [-32.9%]) 1,434,738 (-816,740 [-36.3%])
inner_verifier LOADW2 86,265,606 (-46,304,196 [-34.9%]) 1,326,393 (-713,067 [-35.0%])
inner_verifier FADD 40,238,133 (-15,343,920 [-27.6%]) 1,239,509 (-505,483 [-29.0%])
inner_verifier BNE 50,096,080 (-22,097,275 [-30.6%]) 770,689 (-339,978 [-30.6%])
inner_verifier BBE4MUL 21,690,620 (-30,608,272 [-58.5%]) 466,392 (-272,800 [-36.9%])
inner_verifier FSUB 25,033,211 (+2,541,900 [+11.3%]) 462,659 (-262,356 [-36.2%])
inner_verifier FE4ADD 14,269,462 (-15,109,502 [-51.4%]) 251,639 (-140,309 [-35.8%])
inner_verifier SHINTW 18,987,444 (-7,381,248 [-28.0%]) 226,041 (-87,872 [-28.0%])
inner_verifier BBE4DIV 24,712,237 (+525,429 [+2.2%]) 222,846 (-132,801 [-37.3%])
inner_verifier STOREW2 11,967,928 (-2,709,941 [-18.5%]) 155,502 (-61,707 [-28.4%])
inner_verifier CT_END 7,750,535 (-4,236,960 [-35.3%]) 119,239 (-65,184 [-35.3%])
inner_verifier CT_START 7,750,535 (-4,236,960 [-35.3%]) 119,239 (-65,184 [-35.3%])
inner_verifier STOREW 8,295,062 (-1,733,193 [-17.3%]) 113,528 (-27,105 [-19.3%])
inner_verifier FMUL 1,785,697 (+132,535 [+8.0%]) 55,384 (+4,764 [+9.4%])
inner_verifier JAL 2,022,106 (+210,927 [+11.6%]) 31,095 (+3,231 [+11.6%])
inner_verifier PERM_POS2 7,519,327 (-4,011,613 [-34.8%]) 14,715 (-8,255 [-35.9%])
inner_verifier FE4SUB 2,281,752 (+144,504 [+6.8%]) 13,989 (-1,499 [-9.7%])
inner_verifier HINT_INPUT 701,220 (+22,035 [+3.2%]) 10,788 (+339 [+3.2%])
inner_verifier BEQ 581,490 (+4,680 [+0.8%]) 8,946 (+72 [+0.8%])
inner_verifier COMP_POS2 4,125,432 (+17,064 [+0.4%]) 8,256 (+72 [+0.9%])
inner_verifier FDIV 3,543 (+1,050 [+42.1%]) 72 (+21 [+41.2%])
inner_verifier HINT_BITS 1,625 25
inner_verifier TERMINATE 65 1
group dsl_ir cells_used frequency
bench_program_inner ImmE 640 8
bench_program_inner For 386 7
bench_program_inner AddVI 224 6
bench_program_inner Alloc 284 6
bench_program_inner ImmV 221 3
bench_program_inner IfEqI 122 2
bench_program_inner ImmF 160 2
bench_program_inner StoreV 160 2
bench_program_inner AddE 222 (+78 [+54.2%]) 1
bench_program_inner AddF 50 1
bench_program_inner Halt 61 1
bench_program_inner Keccak256 77,909 (-10,035 [-11.4%]) 1
inner_verifier SubEF 116,091,614 (-44,464,222 [-27.7%]) 1,779,168 (-1,062,504 [-37.4%])
inner_verifier For 61,506,910 (-26,594,897 [-30.2%]) 1,258,904 (-556,010 [-30.6%])
inner_verifier LoadE 62,953,822 (-36,054,022 [-36.4%]) 956,556 (-549,344 [-36.5%])
inner_verifier MulE 21,132,285 (-30,129,919 [-58.8%]) 463,830 (-268,129 [-36.6%])
inner_verifier StoreHintWord 25,636,262 (-10,115,789 [-28.3%]) 440,519 (-176,083 [-28.6%])
inner_verifier LoadF 23,346,909 (-12,715,388 [-35.3%]) 357,385 (-196,704 [-35.5%])
inner_verifier AddVI 9,628,400 (-3,942,518 [-29.1%]) 309,988 (-127,197 [-29.1%])
inner_verifier AddE 14,269,462 (-15,109,502 [-51.4%]) 251,639 (-140,309 [-35.8%])
inner_verifier DivE 24,706,108 (+522,248 [+2.2%]) 222,816 (-132,810 [-37.3%])
inner_verifier IfEqI 9,652,045 (-4,011,215 [-29.4%]) 148,493 (-61,711 [-29.4%])
inner_verifier StoreF 9,989,461 (-3,015,857 [-23.2%]) 130,374 (-64,890 [-33.2%])
inner_verifier CycleTrackerEnd 7,750,535 (-4,236,960 [-35.3%]) 119,239 (-65,184 [-35.3%])
inner_verifier CycleTrackerStart 7,750,535 (-4,236,960 [-35.3%]) 119,239 (-65,184 [-35.3%])
inner_verifier LoadV 5,522,020 (+796,527 [+16.9%]) 84,447 (+12,192 [+16.9%])
inner_verifier Alloc 3,115,012 (+97,804 [+3.2%]) 70,611 (+2,208 [+3.2%])
inner_verifier AddEI 3,848,359 (-91,789 [-2.3%]) 67,452 (-13,444 [-16.6%])
inner_verifier StoreV 2,410,659 (+187,992 [+8.5%]) 28,756 (+2,238 [+8.4%])
inner_verifier StoreE 2,033,880 (+249,384 [+14.0%]) 25,560 (+2,340 [+10.1%])
inner_verifier MulF 785,866 (+176,742 [+29.0%]) 25,326 (+5,694 [+29.0%])
inner_verifier ImmV 1,617,567 (-507,442 [-23.9%]) 24,572 (-7,822 [-24.1%])
inner_verifier ImmF 1,083,843 (+112,729 [+11.6%]) 16,614 (+1,734 [+11.7%])
inner_verifier SubV 497,049 (+101,184 [+25.6%]) 16,032 (+3,264 [+25.6%])
inner_verifier Poseidon2PermuteBabyBear 7,519,327 (-4,011,613 [-34.8%]) 14,715 (-8,255 [-35.9%])
inner_verifier AddFI 441,609 (+93,041 [+26.7%]) 14,148 (+3,005 [+27.0%])
inner_verifier SubE 2,281,752 (+144,504 [+6.8%]) 13,989 (-1,499 [-9.7%])
inner_verifier MulEI 1,313,667 (-1,603,658 [-55.0%]) 12,810 (-23,355 [-64.6%])
inner_verifier ImmE 1,033,580 (-463,068 [-30.9%]) 12,404 (-5,520 [-30.8%])
inner_verifier HintInputVec 701,220 (+22,035 [+3.2%]) 10,788 (+339 [+3.2%])
inner_verifier MulVI 292,320 (+9,579 [+3.4%]) 9,426 (+309 [+3.4%])
inner_verifier Poseidon2CompressBabyBear 4,125,432 (+17,064 [+0.4%]) 8,256 (+72 [+0.9%])
inner_verifier IfNe 512,590 7,886
inner_verifier IfEq 456,820 (+129,480 [+39.6%]) 7,028 (+1,992 [+39.6%])
inner_verifier AddV 211,160 (+10,013 [+5.0%]) 6,811 (+323 [+5.0%])
inner_verifier AssertEqF 301,145 4,633
inner_verifier MulEF 76,831 (+17,915 [+30.4%]) 1,872 (+72 [+4.0%])
inner_verifier MulEFI 73,985 (-58,815 [-44.3%]) 1,444 (-1,212 [-45.6%])
inner_verifier SubVI 60,064 (+566 [+1.0%]) 1,427 (+6 [+0.4%])
inner_verifier SubEFI 64,480 (+2,080 [+3.3%]) 1,284 (+36 [+2.9%])
inner_verifier AssertEqV 82,745 (+1,365 [+1.7%]) 1,273 (+21 [+1.7%])
inner_verifier IfNeI 70,265 (+4,680 [+7.1%]) 1,081 (+72 [+7.1%])
inner_verifier MulV 38,693 (+247 [+0.6%]) 775
inner_verifier AddEFFI 39,232 (+4,256 [+12.2%]) 520 (+24 [+4.8%])
inner_verifier SubVIN 12,648 408
inner_verifier SubEI 13,388 (+5,140 [+62.3%]) 240 (+72 [+42.9%])
inner_verifier AssertEqVI 12,220 (+2,535 [+26.2%]) 188 (+39 [+26.2%])
inner_verifier NegE 10,635 (-29,165 [-73.3%]) 184 (-612 [-76.9%])
inner_verifier AddEFI 8,655 (-9,345 [-51.9%]) 164 (-196 [-54.4%])
inner_verifier DivEIN 14,475 (+6,067 [+72.2%]) 150 (+45 [+42.9%])
inner_verifier AssertEqE 10,620 (+2,040 [+23.8%]) 144 (+12 [+9.1%])
inner_verifier DivFIN 3,543 (+1,050 [+42.1%]) 72 (+21 [+41.2%])
inner_verifier HintBitsF 1,625 25
inner_verifier MulFI 600 (+150 [+33.3%]) 12 (+3 [+33.3%])
inner_verifier AssertEqEI 295 (+35 [+13.5%]) 4
inner_verifier Halt 65 1
group air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
bench_program_inner CoreAir 3,360 114 19 61 44 0 2 32
bench_program_inner ProgramAir 576 4 1 1 8 9 1 64
bench_program_inner FieldArithmeticAir 1,072 28 15 31 36 0 2 16
bench_program_inner FieldExtensionArithmeticAir 77 (-99 [-56.2%]) 28 (-27 [-49.1%]) 15 (-36 [-70.6%]) 41 (-27 [-39.7%]) 36 (-72 [-66.7%]) 0 2 1
bench_program_inner KeccakVmAir 132,544 (-89,376 [-40.3%]) 2,251 (-735 [-24.6%]) 235 (-588 [-71.4%]) 3,198 (-441 [-12.1%]) 944 (-2,352 [-71.4%]) 0 2 32
bench_program_inner XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
bench_program_inner MemoryAuditAir 4,480 (+2,240 [+100.0%]) 21 6 19 16 0 2 128 (+64 [+100.0%])
bench_program_inner AccessAdapterAir<2> 2,240 14 5 11 24 0 2 64
bench_program_inner AccessAdapterAir<4> 1,184 14 5 13 24 0 2 32
bench_program_inner AccessAdapterAir<8> 656 14 5 17 24 0 2 16
bench_program_inner VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
bench_program_inner VmConnectorAir 20 4 2 2 8 1 2 2
inner_verifier CoreAir 713,031,680 112 19 65 20 0 8 8,388,608
inner_verifier ProgramAir 2,359,296 (-2,359,296 [-50.0%]) 4 1 1 8 9 1 262,144 (-262,144 [-50.0%])
inner_verifier FieldArithmeticAir 98,566,144 (-98,566,144 [-50.0%]) 23 15 31 16 0 8 2,097,152 (-2,097,152 [-50.0%])
inner_verifier FieldExtensionArithmeticAir 59,768,832 (-166,723,584 [-73.6%]) 23 (-15 [-39.5%]) 15 (-36 [-70.6%]) 41 (-27 [-39.7%]) 16 (-24 [-60.0%]) 0 8 1,048,576 (-1,048,576 [-50.0%])
inner_verifier Poseidon2VmAir 14,614,528 (-5,111,808 [-25.9%]) 373 (-46 [-11.0%]) 32 (-112 [-77.8%]) 418 (-84 [-16.7%]) 28 (-72 [-72.0%]) 0 8 32,768
inner_verifier XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
inner_verifier MemoryAuditAir 28,311,552 19 6 19 8 0 8 1,048,576
inner_verifier AccessAdapterAir<2> 96,468,992 11 5 11 12 0 4 4,194,304
inner_verifier AccessAdapterAir<4> 52,428,800 11 5 13 12 0 4 2,097,152
inner_verifier AccessAdapterAir<8> 1,900,544 11 5 17 12 0 4 65,536
inner_verifier VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
inner_verifier VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 712dae2
AWS Instance Type: r7g.16xlarge
Benchmark Workflow

Copy link

tiny_e2e

group stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms
fibonacci_program_inner 465.0 (-8.0 [-1.7%]) 1,782,300 200,526 0.0
group chip_name rows_used
fibonacci_program_inner ByteXor 65,536
fibonacci_program_inner Core 6
fibonacci_program_inner FieldArithmetic 90
fibonacci_program_inner Memory 35
fibonacci_program_inner Memory 2 0
fibonacci_program_inner Memory 3 0
fibonacci_program_inner Memory 4 0
fibonacci_program_inner Memory 5 0
fibonacci_program_inner Memory 6 0
fibonacci_program_inner Memory 7 0
fibonacci_program_inner Program 97
fibonacci_program_inner RangeChecker 131,072
group opcode cells_used frequency
fibonacci_program_inner FADD 3,360 90
fibonacci_program_inner STOREW 320 4
fibonacci_program_inner JAL 80 1
fibonacci_program_inner TERMINATE 61 1
group dsl_ir cells_used frequency
fibonacci_program_inner AddFI 2,430 60
fibonacci_program_inner AddF 930 30
fibonacci_program_inner ImmF 160 2
fibonacci_program_inner Halt 61 1
group air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
fibonacci_program_inner CoreAir 840 114 19 61 44 0 2 8
fibonacci_program_inner ProgramAir 1,152 4 1 1 8 9 1 128
fibonacci_program_inner FieldArithmeticAir 8,576 28 15 31 36 0 2 128
fibonacci_program_inner XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
fibonacci_program_inner MemoryAuditAir 2,240 21 6 19 16 0 2 64
fibonacci_program_inner VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
fibonacci_program_inner VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 4903ea7
AWS Instance Type: r7g.16xlarge
Benchmark Workflow

Copy link

vm_verify_fibair

stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms verify_program_compile_ms
8,127.0 (+312.0 [+4.0%]) 67,641,364 (+1,507,328 [+2.3%]) 30,798,646 (+376,688 [+1.2%]) 1,872.0 (+193.0 [+11.5%]) 34.0
chip_name rows_used
ByteXor 65,536
Core 320,679
FieldArithmetic 164,653
FieldExtension 7,914
Memory 107,624 (+252 [+0.2%])
Memory 2 44,892
Memory 3 22,447
Memory 4 4,583
Memory 5 0
Memory 6 0
Memory 7 0
Poseidon2 3,309
Program 37,634
RangeChecker 131,072
opcode cells_used frequency
FADD 4,278,386 (+45,718 [+1.1%]) 134,463
BNE 4,901,195 (+3,640 [+0.1%]) 75,347
STOREW 5,666,620 (+19,068 [+0.3%]) 73,719
LOADW 3,358,097 (+105,926 [+3.3%]) 48,920
LOADW2 2,581,941 (+47,935 [+1.9%]) 38,928
SHINTW 2,791,656 33,234
STOREW2 1,698,904 (+14,896 [+0.9%]) 21,546
FMUL 718,212 (+14,750 [+2.1%]) 20,720
JAL 834,674 (+120 [+0.0%]) 12,839
FSUB 396,523 (+39,852 [+11.2%]) 9,467
HINT_INPUT 310,050 4,770
CT_END 254,865 3,921
CT_START 254,865 3,921
BBE4MUL 219,703 (-38,645 [-15.0%]) 3,759
BEQ 222,885 3,429
COMP_POS2 1,352,390 (+8,034 [+0.6%]) 2,678
FE4ADD 110,982 (-4,718 [-4.1%]) 1,678
BBE4DIV 108,689 (+24,361 [+28.9%]) 1,239
FE4SUB 123,518 (+39,182 [+46.5%]) 1,238
PERM_POS2 373,331 (+56,569 [+17.9%]) 631
HINT_BITS 6,760 104
FDIV 93 3
TERMINATE 65 1
dsl_ir cells_used frequency
For 6,100,751 (+101 [+0.0%]) 116,132
StoreHintWord 3,574,096 58,474
AddVI 1,312,501 (+266 [+0.0%]) 40,299
Alloc 1,713,094 (+48 [+0.0%]) 39,111
StoreE 3,152,504 (+28,840 [+0.9%]) 37,932
LoadV 2,074,229 (+209 [+0.0%]) 30,939
LoadE 1,337,330 (+75,684 [+6.0%]) 19,400
LoadF 1,175,841 (+59,633 [+5.3%]) 17,071
IfEqI 982,345 15,113
StoreV 1,131,610 14,061
ImmV 920,810 (+342 [+0.0%]) 13,133
StoreF 890,094 (+476 [+0.1%]) 10,754
ImmF 474,595 (-171 [-0.0%]) 7,243
SubEF 431,591 (+57,633 [+15.4%]) 6,612
AddEI 239,649 (+45,401 [+23.4%]) 6,244
AssertEqF 328,120 5,048
HintInputVec 310,050 4,770
CycleTrackerEnd 254,865 3,921
CycleTrackerStart 254,865 3,921
SubVI 184,208 (+266 [+0.1%]) 3,900
MulE 213,744 (-40,764 [-16.0%]) 3,726
AssertEqV 236,600 3,640
SubV 108,619 3,502
MulVI 102,376 3,300
MulV 161,143 (+247 [+0.2%]) 3,224
AddFI 96,758 (-19 [-0.0%]) 3,101
IfNe 183,105 2,817
MulF 83,161 2,682
Poseidon2CompressBabyBear 1,352,390 (+8,034 [+0.6%]) 2,678
AddV 70,513 2,274
ImmE 138,101 (+3,377 [+2.5%]) 2,068
AddE 110,982 (-4,718 [-4.1%]) 1,678
MulEF 65,867 (+14,455 [+28.1%]) 1,656
DivE 108,613 (+24,353 [+28.9%]) 1,238
SubE 123,518 (+39,182 [+46.5%]) 1,238
IfEq 48,295 743
Poseidon2PermuteBabyBear 373,331 (+56,569 [+17.9%]) 631
IfNeI 40,235 619
AddEFFI 35,696 (+420 [+1.2%]) 524
AssertEqE 30,680 (+3,640 [+13.5%]) 416
SubVIN 12,772 412
MulEI 15,572 (+3,095 [+24.8%]) 165
HintBitsF 6,760 104
AssertEqVI 1,040 16
SubEI 318 (+70 [+28.2%]) 8
DivEIN 347 (+19 [+5.8%]) 5
AssertEqEI 260 4
DivFIN 93 3
Halt 65 1
MulFI 50 1
air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
CoreAir 44,564,480 112 19 65 20 0 8 524,288
ProgramAir 589,824 4 1 1 8 9 1 65,536
FieldArithmeticAir 12,320,768 23 15 31 16 0 8 262,144
FieldExtensionArithmeticAir 466,944 (-417,792 [-47.2%]) 23 (-15 [-39.5%]) 15 (-36 [-70.6%]) 41 (-27 [-39.7%]) 16 (-24 [-60.0%]) 0 8 8,192
Poseidon2VmAir 1,826,816 (-638,976 [-25.9%]) 373 (-46 [-11.0%]) 32 (-112 [-77.8%]) 418 (-84 [-16.7%]) 28 (-72 [-72.0%]) 0 8 4,096
XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
MemoryAuditAir 3,538,944 19 6 19 8 0 8 131,072
AccessAdapterAir<2> 1,507,328 11 5 11 12 0 4 65,536
AccessAdapterAir<4> 819,200 11 5 13 12 0 4 32,768
AccessAdapterAir<8> 237,568 11 5 17 12 0 4 8,192
VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 4903ea7
AWS Instance Type: r7g.8xlarge
Benchmark Workflow

Copy link

small_e2e

group stark_prove_excluding_trace_time_ms total_cells total_cells_used trace_gen_time_ms verify_program_compile_ms
bench_program_inner 1,230.0 (+23.0 [+1.9%]) 1,915,681 (-83,155 [-4.2%]) 277,324 (-9,957 [-3.5%]) 2.0
inner_verifier 111,122.0 (-507.0 [-0.5%]) 1,069,219,860 (-121,962,496 [-10.2%]) 435,516,063 (-198,759,801 [-31.3%]) 29,447.0 (-4,734.0 [-13.8%]) 44,400.0 (+205.0 [+0.5%])
group chip_name rows_used
bench_program_inner ByteXor 65,536
bench_program_inner Core 28
bench_program_inner FieldArithmetic 13
bench_program_inner FieldExtension 1
bench_program_inner Keccak256 24
bench_program_inner Memory 65 (+6 [+10.2%])
bench_program_inner Memory 2 26
bench_program_inner Memory 3 13
bench_program_inner Memory 4 5
bench_program_inner Memory 5 0
bench_program_inner Memory 6 0
bench_program_inner Memory 7 0
bench_program_inner Program 37
bench_program_inner RangeChecker 131,072
inner_verifier ByteXor 65,536
inner_verifier Core 4,316,224 (-2,173,195 [-33.5%])
inner_verifier FieldArithmetic 1,757,624 (-763,054 [-30.3%])
inner_verifier FieldExtension 954,866 (-547,409 [-36.4%])
inner_verifier Memory 654,021 (-190,767 [-22.6%])
inner_verifier Memory 2 2,185,853
inner_verifier Memory 3 1,092,977
inner_verifier Memory 4 37,810
inner_verifier Memory 5 0
inner_verifier Memory 6 0
inner_verifier Memory 7 0
inner_verifier Poseidon2 22,971 (-8,183 [-26.3%])
inner_verifier Program 204,914 (-76,109 [-27.1%])
inner_verifier RangeChecker 131,072
group opcode cells_used frequency
bench_program_inner STOREW 1,261 16
bench_program_inner FADD 398 11
bench_program_inner BNE 305 5
bench_program_inner FMUL 62 2
bench_program_inner JAL 141 2
bench_program_inner LOADW 160 2
bench_program_inner STOREW2 160 2
bench_program_inner FE4ADD 222 (+78 [+54.2%]) 1
bench_program_inner KECCAK256 77,909 (-10,035 [-11.4%]) 1
bench_program_inner TERMINATE 61 1
inner_verifier LOADW 99,035,431 (-48,510,736 [-32.9%]) 1,434,738 (-816,740 [-36.3%])
inner_verifier LOADW2 86,265,606 (-46,304,196 [-34.9%]) 1,326,393 (-713,067 [-35.0%])
inner_verifier FADD 40,238,133 (-15,343,920 [-27.6%]) 1,239,509 (-505,483 [-29.0%])
inner_verifier BNE 50,096,080 (-22,097,275 [-30.6%]) 770,689 (-339,978 [-30.6%])
inner_verifier BBE4MUL 21,690,620 (-30,608,272 [-58.5%]) 466,392 (-272,800 [-36.9%])
inner_verifier FSUB 25,033,211 (+2,541,900 [+11.3%]) 462,659 (-262,356 [-36.2%])
inner_verifier FE4ADD 14,269,462 (-15,109,502 [-51.4%]) 251,639 (-140,309 [-35.8%])
inner_verifier SHINTW 18,987,444 (-7,381,248 [-28.0%]) 226,041 (-87,872 [-28.0%])
inner_verifier BBE4DIV 24,712,237 (+525,429 [+2.2%]) 222,846 (-132,801 [-37.3%])
inner_verifier STOREW2 11,967,928 (-2,709,941 [-18.5%]) 155,502 (-61,707 [-28.4%])
inner_verifier CT_END 7,750,535 (-4,236,960 [-35.3%]) 119,239 (-65,184 [-35.3%])
inner_verifier CT_START 7,750,535 (-4,236,960 [-35.3%]) 119,239 (-65,184 [-35.3%])
inner_verifier STOREW 8,295,062 (-1,733,193 [-17.3%]) 113,528 (-27,105 [-19.3%])
inner_verifier FMUL 1,785,697 (+132,535 [+8.0%]) 55,384 (+4,764 [+9.4%])
inner_verifier JAL 2,022,106 (+210,927 [+11.6%]) 31,095 (+3,231 [+11.6%])
inner_verifier PERM_POS2 7,519,327 (-4,011,613 [-34.8%]) 14,715 (-8,255 [-35.9%])
inner_verifier FE4SUB 2,281,752 (+144,504 [+6.8%]) 13,989 (-1,499 [-9.7%])
inner_verifier HINT_INPUT 701,220 (+22,035 [+3.2%]) 10,788 (+339 [+3.2%])
inner_verifier BEQ 581,490 (+4,680 [+0.8%]) 8,946 (+72 [+0.8%])
inner_verifier COMP_POS2 4,125,432 (+17,064 [+0.4%]) 8,256 (+72 [+0.9%])
inner_verifier FDIV 3,543 (+1,050 [+42.1%]) 72 (+21 [+41.2%])
inner_verifier HINT_BITS 1,625 25
inner_verifier TERMINATE 65 1
group dsl_ir cells_used frequency
bench_program_inner ImmE 640 8
bench_program_inner For 386 7
bench_program_inner AddVI 224 6
bench_program_inner Alloc 284 6
bench_program_inner ImmV 221 3
bench_program_inner IfEqI 122 2
bench_program_inner ImmF 160 2
bench_program_inner StoreV 160 2
bench_program_inner AddE 222 (+78 [+54.2%]) 1
bench_program_inner AddF 50 1
bench_program_inner Halt 61 1
bench_program_inner Keccak256 77,909 (-10,035 [-11.4%]) 1
inner_verifier SubEF 116,091,614 (-44,464,222 [-27.7%]) 1,779,168 (-1,062,504 [-37.4%])
inner_verifier For 61,506,910 (-26,594,897 [-30.2%]) 1,258,904 (-556,010 [-30.6%])
inner_verifier LoadE 62,953,822 (-36,054,022 [-36.4%]) 956,556 (-549,344 [-36.5%])
inner_verifier MulE 21,132,285 (-30,129,919 [-58.8%]) 463,830 (-268,129 [-36.6%])
inner_verifier StoreHintWord 25,636,262 (-10,115,789 [-28.3%]) 440,519 (-176,083 [-28.6%])
inner_verifier LoadF 23,346,909 (-12,715,388 [-35.3%]) 357,385 (-196,704 [-35.5%])
inner_verifier AddVI 9,628,400 (-3,942,518 [-29.1%]) 309,988 (-127,197 [-29.1%])
inner_verifier AddE 14,269,462 (-15,109,502 [-51.4%]) 251,639 (-140,309 [-35.8%])
inner_verifier DivE 24,706,108 (+522,248 [+2.2%]) 222,816 (-132,810 [-37.3%])
inner_verifier IfEqI 9,652,045 (-4,011,215 [-29.4%]) 148,493 (-61,711 [-29.4%])
inner_verifier StoreF 9,989,461 (-3,015,857 [-23.2%]) 130,374 (-64,890 [-33.2%])
inner_verifier CycleTrackerEnd 7,750,535 (-4,236,960 [-35.3%]) 119,239 (-65,184 [-35.3%])
inner_verifier CycleTrackerStart 7,750,535 (-4,236,960 [-35.3%]) 119,239 (-65,184 [-35.3%])
inner_verifier LoadV 5,522,020 (+796,527 [+16.9%]) 84,447 (+12,192 [+16.9%])
inner_verifier Alloc 3,115,012 (+97,804 [+3.2%]) 70,611 (+2,208 [+3.2%])
inner_verifier AddEI 3,848,359 (-91,789 [-2.3%]) 67,452 (-13,444 [-16.6%])
inner_verifier StoreV 2,410,659 (+187,992 [+8.5%]) 28,756 (+2,238 [+8.4%])
inner_verifier StoreE 2,033,880 (+249,384 [+14.0%]) 25,560 (+2,340 [+10.1%])
inner_verifier MulF 785,866 (+176,742 [+29.0%]) 25,326 (+5,694 [+29.0%])
inner_verifier ImmV 1,617,567 (-507,442 [-23.9%]) 24,572 (-7,822 [-24.1%])
inner_verifier ImmF 1,083,843 (+112,729 [+11.6%]) 16,614 (+1,734 [+11.7%])
inner_verifier SubV 497,049 (+101,184 [+25.6%]) 16,032 (+3,264 [+25.6%])
inner_verifier Poseidon2PermuteBabyBear 7,519,327 (-4,011,613 [-34.8%]) 14,715 (-8,255 [-35.9%])
inner_verifier AddFI 441,609 (+93,041 [+26.7%]) 14,148 (+3,005 [+27.0%])
inner_verifier SubE 2,281,752 (+144,504 [+6.8%]) 13,989 (-1,499 [-9.7%])
inner_verifier MulEI 1,313,667 (-1,603,658 [-55.0%]) 12,810 (-23,355 [-64.6%])
inner_verifier ImmE 1,033,580 (-463,068 [-30.9%]) 12,404 (-5,520 [-30.8%])
inner_verifier HintInputVec 701,220 (+22,035 [+3.2%]) 10,788 (+339 [+3.2%])
inner_verifier MulVI 292,320 (+9,579 [+3.4%]) 9,426 (+309 [+3.4%])
inner_verifier Poseidon2CompressBabyBear 4,125,432 (+17,064 [+0.4%]) 8,256 (+72 [+0.9%])
inner_verifier IfNe 512,590 7,886
inner_verifier IfEq 456,820 (+129,480 [+39.6%]) 7,028 (+1,992 [+39.6%])
inner_verifier AddV 211,160 (+10,013 [+5.0%]) 6,811 (+323 [+5.0%])
inner_verifier AssertEqF 301,145 4,633
inner_verifier MulEF 76,831 (+17,915 [+30.4%]) 1,872 (+72 [+4.0%])
inner_verifier MulEFI 73,985 (-58,815 [-44.3%]) 1,444 (-1,212 [-45.6%])
inner_verifier SubVI 60,064 (+566 [+1.0%]) 1,427 (+6 [+0.4%])
inner_verifier SubEFI 64,480 (+2,080 [+3.3%]) 1,284 (+36 [+2.9%])
inner_verifier AssertEqV 82,745 (+1,365 [+1.7%]) 1,273 (+21 [+1.7%])
inner_verifier IfNeI 70,265 (+4,680 [+7.1%]) 1,081 (+72 [+7.1%])
inner_verifier MulV 38,693 (+247 [+0.6%]) 775
inner_verifier AddEFFI 39,232 (+4,256 [+12.2%]) 520 (+24 [+4.8%])
inner_verifier SubVIN 12,648 408
inner_verifier SubEI 13,388 (+5,140 [+62.3%]) 240 (+72 [+42.9%])
inner_verifier AssertEqVI 12,220 (+2,535 [+26.2%]) 188 (+39 [+26.2%])
inner_verifier NegE 10,635 (-29,165 [-73.3%]) 184 (-612 [-76.9%])
inner_verifier AddEFI 8,655 (-9,345 [-51.9%]) 164 (-196 [-54.4%])
inner_verifier DivEIN 14,475 (+6,067 [+72.2%]) 150 (+45 [+42.9%])
inner_verifier AssertEqE 10,620 (+2,040 [+23.8%]) 144 (+12 [+9.1%])
inner_verifier DivFIN 3,543 (+1,050 [+42.1%]) 72 (+21 [+41.2%])
inner_verifier HintBitsF 1,625 25
inner_verifier MulFI 600 (+150 [+33.3%]) 12 (+3 [+33.3%])
inner_verifier AssertEqEI 295 (+35 [+13.5%]) 4
inner_verifier Halt 65 1
group air_name cells constraints interactions main_cols perm_cols prep_cols quotient_deg rows
bench_program_inner CoreAir 3,360 114 19 61 44 0 2 32
bench_program_inner ProgramAir 576 4 1 1 8 9 1 64
bench_program_inner FieldArithmeticAir 1,072 28 15 31 36 0 2 16
bench_program_inner FieldExtensionArithmeticAir 77 (-99 [-56.2%]) 28 (-27 [-49.1%]) 15 (-36 [-70.6%]) 41 (-27 [-39.7%]) 36 (-72 [-66.7%]) 0 2 1
bench_program_inner KeccakVmAir 132,544 (-89,376 [-40.3%]) 2,251 (-735 [-24.6%]) 235 (-588 [-71.4%]) 3,198 (-441 [-12.1%]) 944 (-2,352 [-71.4%]) 0 2 32
bench_program_inner XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
bench_program_inner MemoryAuditAir 4,480 (+2,240 [+100.0%]) 21 6 19 16 0 2 128 (+64 [+100.0%])
bench_program_inner AccessAdapterAir<2> 2,240 14 5 11 24 0 2 64
bench_program_inner AccessAdapterAir<4> 1,184 14 5 13 24 0 2 32
bench_program_inner AccessAdapterAir<8> 656 14 5 17 24 0 2 16
bench_program_inner VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
bench_program_inner VmConnectorAir 20 4 2 2 8 1 2 2
inner_verifier CoreAir 713,031,680 112 19 65 20 0 8 8,388,608
inner_verifier ProgramAir 2,359,296 (-2,359,296 [-50.0%]) 4 1 1 8 9 1 262,144 (-262,144 [-50.0%])
inner_verifier FieldArithmeticAir 98,566,144 (-98,566,144 [-50.0%]) 23 15 31 16 0 8 2,097,152 (-2,097,152 [-50.0%])
inner_verifier FieldExtensionArithmeticAir 59,768,832 (-166,723,584 [-73.6%]) 23 (-15 [-39.5%]) 15 (-36 [-70.6%]) 41 (-27 [-39.7%]) 16 (-24 [-60.0%]) 0 8 1,048,576 (-1,048,576 [-50.0%])
inner_verifier Poseidon2VmAir 14,614,528 (-5,111,808 [-25.9%]) 373 (-46 [-11.0%]) 32 (-112 [-77.8%]) 418 (-84 [-16.7%]) 28 (-72 [-72.0%]) 0 8 32,768
inner_verifier XorLookupAir<8> 589,824 4 1 1 8 3 1 65,536
inner_verifier MemoryAuditAir 28,311,552 19 6 19 8 0 8 1,048,576
inner_verifier AccessAdapterAir<2> 96,468,992 11 5 11 12 0 4 4,194,304
inner_verifier AccessAdapterAir<4> 52,428,800 11 5 13 12 0 4 2,097,152
inner_verifier AccessAdapterAir<8> 1,900,544 11 5 17 12 0 4 65,536
inner_verifier VariableRangeCheckerAir 1,179,648 4 1 1 8 2 1 131,072
inner_verifier VmConnectorAir 20 4 2 2 8 1 2 2

Flamegraphs: link
Commit: 4903ea7
AWS Instance Type: r7g.16xlarge
Benchmark Workflow

@jonathanpwang jonathanpwang merged commit f6c0cb6 into main Sep 29, 2024
18 checks passed
@jonathanpwang jonathanpwang deleted the feat/memory-access-adapter branch September 29, 2024 04:41
luffykai added a commit that referenced this pull request Dec 13, 2024
* feat: MemoryAccessAdapter

* Compiler changes

* Better stack layout

* Change stack/heap layout

* perf: Make duplex challenger more efficient

* fix flamegraph for dsl

* Use stack memory more compactly

* Comments

* Use IsLessThanAir rather than AssertLessThanAir

* feat: field expression framework (#470)

* feat: field expression framework

* test pass

* update readme

* range check vars

* scalar mul and ec double

* address comment

* update readme

* address comments

* check the result in tests

* rename

* Ignore `bench_metrics` in .gitignore (#476)

* [refactor] AIR with Public Values (#477)

* Add trait BaseAirWithPublicValues

* Keygen doesn't need to pass the number of public values

* feat: Keccak batch reads and use of AlignedBorrow (#475)

* feat: Keccak batch reads and use of AlignedBorrow

* Fix timestamp

* feat: add a separate memory block to select for when partial block read

* chore: todo comment on switching to range check output

---------

Co-authored-by: Jonathan Wang <[email protected]>

* fix merge

* fix: change default compiler `word_size=8`

* fix: ecc test compiler word size

* chore: mod arith test word size

---------

Co-authored-by: luffykai <[email protected]>
Co-authored-by: Golovanov399 <[email protected]>
Co-authored-by: Xinding Wei <[email protected]>
Co-authored-by: Jonathan Wang <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
run-benchmark triggers benchmark workflows on the pr
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants