Commit c512053
committed
merge blake3-real-hash into mmcs-integration
Carries origin/main (cf3b1e9) onto the MMCS integration branch: the bump guest
allocator default (#869), the VRAM-pressure/R2-race fix (#914), the cuda table
scheduler K = num_airs default (#911), and the device-only cliff recovery at
R4 DEEP / comp-tree / R3 barycentric (#935).
This is the branch where the two sides genuinely interleave. M-4p2 extracted the
round bodies so they take the data they use — `lde_trace`, `composition_parts`,
`rap_challenges` — instead of the whole `Round1`/`Round2`, and `multi_prove_batched`
reuses those same extractions. #935 works the other way: its recoveries write the
resident device data back into those very buffers, which is why upstream widened
the round signatures to `&mut Round1`/`&mut Round2`. Neither shape can simply win.
Resolution rule, applied to all nine hunks: **keep the extraction, move the
mutability onto the extracted parameter.** Each recovery then writes to exactly
the buffer its caller owns, and the batched path keeps sharing one implementation
with the monolithic one.
- `crypto/stark/src/prover.rs` `compute_composition_parts` — `lde_trace` becomes
`&mut`; the R2 host-evaluator arm takes #935's recover-then-assert (replacing the
old hard abort) against that parameter rather than `round_1_result.lde_trace`.
- `crypto/stark/src/prover.rs` `compute_composition_parts` — the `evaluate_dev`
arm keeps the extracted `rap_challenges` and the extracted `lde_trace` in the
`host_trace_empty` retain flag.
- `crypto/stark/src/prover.rs` `round_2_compute_composition_polynomial` — keeps the
`CompositionParts` return, and #935's fold of the R2 device parts handle into the
session (`set_gpu_composition_parts`) is added after the call, where
`round_1_result` is in scope.
- `crypto/stark/src/prover.rs` `round_3_evaluate_polynomials_in_out_of_domain_element`
— extracted `lde_trace` and `composition_parts` both become `&mut`; the R3 parts
OOD arm takes #935's recovery against them.
- `crypto/stark/src/prover.rs` `compute_deep_composition_poly_evaluations` — same
two parameters become `&mut`; the host DEEP loop's recovery writes through
`composition_parts` instead of `round_2_result.lde_composition_poly_evaluations`.
- `crypto/stark/src/batched/prover.rs` — the three call sites and `deep_codeword`
follow the widened signatures; the FRI combine closure captures `retained_parts`
mutably. That closure is `FnOnce` and runs serially, so the capture adds no
concurrency requirement.
- `crypto/stark/src/prover.rs` — the two `mut` bindings the split moved: the
parts the R2 commit recovery writes now live in
`round_2_compute_composition_polynomial` (so `computed.parts` is bound `mut`
there), and `compute_composition_parts`'s own local is no longer mutated by
anything, so it loses the `mut` and the `unused_mut` cfg_attr that went with it.
Only the cuda lint pass sees either.
Both semantics are live afterwards: nothing is un-genericized, no recovery is
dropped, and the parameter each recovery writes to is the one the caller reads
next.
Gates: stark release 350/0 (RESUME-MMCS-INT.md's 349/0 plus main's new
`table_parallelism_stays_within_one_and_num_airs`); debug batched/mmcs 87/0,
exactly the recorded baseline; crypto 71+1/0 on both round arms; `make lint`
clean across all five combos; fmt clean.
`lfm::` reads 345 passed / 19 failed / 9 ignored against a recorded baseline of
349/15/9, and the merge is NOT the cause. Checked out 46798a5 — this branch's
own pre-merge tip — and ran the same suite there: 345/19/9, and the 19 failing
test names diff byte-identical against the merged tree's. The merge delta is
exactly zero; the recorded baseline is stale, drifted by the fixture/toolchain
trap already documented in the lfm fixture-drift notes. Independently, every
resolution in this merge is inside `#[cfg(feature = "cuda")]` or is a signature
mutability change, and that suite runs without cuda, so it could not have moved
those tests either way.
SEMANTIC-CONFLICT NOTE. The batched path consumes its parts on the host
immediately (`parts_builder.absorb`) and never reads the device parts handle, so
the recoveries are inert there today — `materialize_composition_parts_host`
returns true without touching anything when the evals are already populated, so
the widened signatures cost the batched path nothing and cannot trip its asserts.
The recovery is only reachable on the monolithic path. Flagged because that is a
judgement about reachability, not something a test currently pins.53 files changed
Lines changed: 2347 additions & 2575 deletions
File tree
- .github/workflows
- bench_vs/lambda/recursion
- crypto
- ethrex-crypto
- math-cuda/src
- stark/src
- batched
- tests
- executor/programs
- bench
- ecsm
- hashmap
- keccak
- syscall_commit
- rust
- allocator
- args_test
- ckzg
- commit_sum
- commit
- ecsm
- ef_io_demo
- ethereum_types
- ethrex
- hashmap
- keccak_precompile
- keccak_transcript_pattern
- keccak
- memory
- panic
- print
- random
- serde
- stdin_read
- stdout
- vector
- prover
- src
- tests
- tests
- syscalls
- src
- tooling/ethrex-block-converter
Some content is hidden
Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
12 | 12 | | |
13 | 13 | | |
14 | 14 | | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
15 | 22 | | |
16 | 23 | | |
17 | 24 | | |
| |||
28 | 35 | | |
29 | 36 | | |
30 | 37 | | |
| 38 | + | |
31 | 39 | | |
32 | 40 | | |
33 | 41 | | |
| |||
273 | 281 | | |
274 | 282 | | |
275 | 283 | | |
276 | | - | |
| 284 | + | |
| 285 | + | |
277 | 286 | | |
278 | 287 | | |
279 | 288 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
9 | 14 | | |
10 | 15 | | |
11 | 16 | | |
| |||
35 | 40 | | |
36 | 41 | | |
37 | 42 | | |
38 | | - | |
| 43 | + | |
39 | 44 | | |
40 | 45 | | |
41 | 46 | | |
| |||
51 | 56 | | |
52 | 57 | | |
53 | 58 | | |
54 | | - | |
| 59 | + | |
55 | 60 | | |
56 | 61 | | |
57 | 62 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
175 | 175 | | |
176 | 176 | | |
177 | 177 | | |
178 | | - | |
| 178 | + | |
179 | 179 | | |
180 | 180 | | |
| 181 | + | |
| 182 | + | |
| 183 | + | |
| 184 | + | |
| 185 | + | |
| 186 | + | |
| 187 | + | |
| 188 | + | |
181 | 189 | | |
182 | 190 | | |
183 | 191 | | |
| |||
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
514 | 514 | | |
515 | 515 | | |
516 | 516 | | |
| 517 | + | |
| 518 | + | |
| 519 | + | |
517 | 520 | | |
518 | 521 | | |
| 522 | + | |
519 | 523 | | |
520 | 524 | | |
521 | 525 | | |
| |||
561 | 565 | | |
562 | 566 | | |
563 | 567 | | |
| 568 | + | |
| 569 | + | |
| 570 | + | |
| 571 | + | |
| 572 | + | |
| 573 | + | |
| 574 | + | |
| 575 | + | |
564 | 576 | | |
565 | 577 | | |
566 | 578 | | |
| |||
629 | 641 | | |
630 | 642 | | |
631 | 643 | | |
632 | | - | |
| 644 | + | |
633 | 645 | | |
634 | 646 | | |
635 | 647 | | |
636 | 648 | | |
637 | 649 | | |
638 | | - | |
| 650 | + | |
639 | 651 | | |
640 | 652 | | |
641 | 653 | | |
| |||
645 | 657 | | |
646 | 658 | | |
647 | 659 | | |
648 | | - | |
| 660 | + | |
649 | 661 | | |
650 | 662 | | |
651 | 663 | | |
652 | 664 | | |
653 | 665 | | |
654 | 666 | | |
655 | | - | |
| 667 | + | |
656 | 668 | | |
657 | 669 | | |
658 | 670 | | |
| |||
0 commit comments