Skip to content
Merged
Show file tree
Hide file tree
Changes from 121 commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
64c3632
perf(onehot): keep big blocks on the tiled column sweep; row-pass acc…
markosg04 Jul 23, 2026
c410b5c
perf(onehot): fused multi-polynomial commit sweep
markosg04 Jul 24, 2026
91591ee
perf(onehot): keep merge-sweep accumulator tile and column chunk L1-r…
markosg04 Jul 24, 2026
333b309
fix(onehot): self-reduce merge-sweep accumulators at the cap; no bloc…
markosg04 Jul 24, 2026
bc87e22
perf(onehot): bench-tuned merge-sweep defaults (tile 64 blocks, chunk…
markosg04 Jul 24, 2026
bddd74d
feat(onehot): expose clear_block_cache on OneHotPoly
markosg04 Jul 25, 2026
450c618
perf(prover): build the setup NTT envelope slot lazily and let caller…
markosg04 Jul 26, 2026
102ee81
perf(prover): extent-sized NTT slots + streamed root-relation transfo…
markosg04 Jul 26, 2026
59c2d2b
perf(prover): drop built NTT slots after the root fold level — fold w…
markosg04 Jul 26, 2026
6da10a2
perf(prover): releasable setup matrix with seed re-derivation — 2^26 …
markosg04 Jul 26, 2026
cada0f5
perf(prover): build commit-sweep block tiles lazily from index column…
markosg04 Jul 26, 2026
cdca67a
perf(prover): stream fold blocks from index columns — per-block build…
markosg04 Jul 26, 2026
2e5e6d6
refactor: shrink the perf-branch diff before upstreaming
markosg04 Jul 27, 2026
877ef5f
perf(algebra): fuse fixed-size wide ring shifts
quangvdao Jul 28, 2026
cef7943
perf(algebra): expose wide ring coefficients
quangvdao Jul 28, 2026
6ccebe2
perf(prover): consume decompose witness rows without copies
quangvdao Jul 28, 2026
f73b435
perf(prover): release root opening storage after fold
markosg04 Jul 30, 2026
d3d35e6
fix(profile): propagate commit accumulator bounds
markosg04 Jul 31, 2026
9d771aa
perf(prover): cache only required commit transform
markosg04 Jul 30, 2026
e5314aa
perf(prover): stream CRT-chunked quotient roles
markosg04 Jul 30, 2026
0f9c8ea
perf(prover): parallelize relation setup columns
markosg04 Jul 30, 2026
c96a880
perf(prover): coalesce aligned relation events
markosg04 Jul 30, 2026
815701a
perf(prover): parallelize exact-prefix folds
markosg04 Jul 31, 2026
8c25605
fix(prover): preserve group-local relation dimensions
markosg04 Jul 31, 2026
ee6d9db
perf(planner): trade payload slack for narrower roots
quangvdao Jul 27, 2026
5b59a07
fix(planner): preserve scalar rank policy through recursion
markosg04 Aug 1, 2026
04c2f1e
Merge Akita protocol optimizations
markosg04 Aug 1, 2026
71796cc
Merge remote-tracking branch 'origin/main' into perf/akita-protocol-opts
markosg04 Aug 1, 2026
51f98b1
Merge branch 'perf/akita-protocol-opts' into perf/akita-prover-opt
markosg04 Aug 1, 2026
832ade1
fix(planner): emit rustfmt-stable catalog imports
markosg04 Aug 1, 2026
9b6a1f8
Merge branch 'perf/akita-protocol-opts' into perf/akita-prover-opt
markosg04 Aug 1, 2026
44cfa3f
fix(planner): remove stale lint expectation
markosg04 Aug 3, 2026
755765e
fix(types): size released setup without rebuilding
markosg04 Aug 3, 2026
7ff283b
test(prover): drop local tuning probes
markosg04 Aug 3, 2026
5a8170d
fix(pcs): update releasable setup call sites
markosg04 Aug 3, 2026
2277146
test(pcs): align mixed-D cache test with lazy setup
markosg04 Aug 3, 2026
2b6c6a6
test(prover): split oversized backend test modules
markosg04 Aug 3, 2026
2acecb9
feat(planner): decouple inner commitment basis
quangvdao Aug 6, 2026
4108d60
fix(planner): bound independent-basis search
quangvdao Aug 6, 2026
72e934c
refactor(prover): split CPU backend by role
quangvdao Aug 6, 2026
e2672db
perf(planner): evict bounded memo entries
quangvdao Aug 6, 2026
8e4fd88
fix(planner): skip discarded sweep work
quangvdao Aug 6, 2026
c0bbe27
test(config): expect independent dense basis
quangvdao Aug 6, 2026
f398712
fix(planner): decouple precommit inner basis
quangvdao Aug 6, 2026
bb4034f
refactor(planner): tighten candidate context
quangvdao Aug 6, 2026
03e997f
feat(planner): preserve partial regen rows
quangvdao Aug 6, 2026
aefa64a
chore(schedules): restore D64 onehot rows
quangvdao Aug 6, 2026
083aa06
refactor(prover): isolate CPU prepared setup
quangvdao Aug 6, 2026
04edba2
ci(planner): avoid redundant table regeneration
quangvdao Aug 6, 2026
306dfdd
fix(planner): preserve unsupported regen rows
quangvdao Aug 6, 2026
addb668
feat(planner)!: complete independent basis search
quangvdao Aug 7, 2026
d2539e9
refactor(planner): integrate flat challenge cutover
quangvdao Aug 7, 2026
456dbf4
fix(ci): refresh precommit registries
quangvdao Aug 7, 2026
79473a1
fix(sis): harden table publication
quangvdao Aug 7, 2026
0732d5d
fix(schedules): refresh SIS table identity
quangvdao Aug 7, 2026
22bcabc
chore(sis): remove obsolete audit CSV
quangvdao Aug 7, 2026
bc488d6
revert(planner): drop payload-slack schedule selection
markosg04 Aug 7, 2026
2003390
fix(ci): repair doc links and glue trait bound
markosg04 Aug 7, 2026
f0473f1
merge(main): reconcile prover optimizations with flattened setup
markosg04 Aug 7, 2026
8f99513
fix(tests): drop tensor-kernel test and port oracle to flat views
markosg04 Aug 7, 2026
09e0909
fix(compute): restore onehot_chunk_size on RootPolyMeta
markosg04 Aug 7, 2026
a9f3c29
fix(compute): restore one-hot chunk-size metadata on root polys
markosg04 Aug 7, 2026
2d17e55
fix(prover): close optimization review gaps
quangvdao Aug 7, 2026
2ebbd51
Merge remote-tracking branch 'origin/main' into quang/pr-345-prover-o…
quangvdao Aug 7, 2026
99b91e4
fix(onehot): make block cache caller-owned
quangvdao Aug 8, 2026
59d8a57
chore(sync): merge main into PR 355
quangvdao Aug 8, 2026
a217807
fix(cache): make tensor and NTT retention explicit
quangvdao Aug 8, 2026
6471f38
Merge branch 'main' into quang/pr-345-prover-optimizations
quangvdao Aug 8, 2026
165ad16
refactor(profile): split workload module
quangvdao Aug 8, 2026
82b129a
Merge branch 'main' into quang/pr-345-prover-optimizations
sumchecker Aug 8, 2026
bb42140
docs(spec): define PR 375 end state
quangvdao Aug 8, 2026
0d2fb19
fix(cache): align NTT prewarm and release
quangvdao Aug 8, 2026
bcd2383
refactor(onehot): unify sparse block representation
quangvdao Aug 8, 2026
d90b039
refactor(commit): finish source-typed kernel cutover
quangvdao Aug 9, 2026
0798713
perf(onehot): unify commit sweep scheduling
quangvdao Aug 9, 2026
c9fcd30
merge(main): integrate planner cutovers
quangvdao Aug 9, 2026
791a9f5
merge(main): update cmov dependency
quangvdao Aug 9, 2026
6a1250b
fix(commit): restore group source parallelism
quangvdao Aug 9, 2026
731dff4
refactor(onehot): remove mutable derived caches
quangvdao Aug 9, 2026
7f72b30
ci(profile): improve reports and narrow builds
quangvdao Aug 9, 2026
de130d5
perf(planner): reduce recursive sizing overhead
quangvdao Aug 9, 2026
afcc44c
merge(main): update verifier kernels
quangvdao Aug 9, 2026
4c37e14
refactor(ring-switch): unify quotient planning
quangvdao Aug 9, 2026
e232344
ci(profile): unify fold report layout
quangvdao Aug 9, 2026
b6d934f
chore(pr375): complete validation slice
quangvdao Aug 9, 2026
3f99bf9
fix(prover): close independent review gaps
quangvdao Aug 9, 2026
0f9a710
fix(profile): correct multi-group report values
quangvdao Aug 9, 2026
b51d732
feat(profile): compare verifier thread modes
quangvdao Aug 9, 2026
2e4f995
perf(planner): retain hot suffix cache entries
quangvdao Aug 9, 2026
f08d32d
refactor(profile): clarify fold report cells
quangvdao Aug 9, 2026
69ef6bb
merge main (b0f2cadc5) into quang/pr-345-prover-optimizations
quangvdao Aug 9, 2026
7d507ae
perf(planner): bound recursive split frontier
quangvdao Aug 9, 2026
e68d0c6
fix(sis): restore generated table identity
quangvdao Aug 9, 2026
46a6dcd
fix(profile): remove persisted bench setup
quangvdao Aug 9, 2026
86a4a60
fix(prover): preserve i16 opening digits
quangvdao Aug 9, 2026
d6ccd94
docs(pr375): reopen CPU policy spec
quangvdao Aug 9, 2026
a32b3ab
refactor(planner): resolve review findings
quangvdao Aug 9, 2026
2a2c033
feat(compute): configure CPU resource limits
quangvdao Aug 9, 2026
d9c0c13
fix(planner): preserve terminal basis winners
quangvdao Aug 9, 2026
e7746b5
fix(compute): release all CPU NTT caches
quangvdao Aug 9, 2026
e9a25b8
fix(compute): retain compression NTT cache
quangvdao Aug 9, 2026
9c35ec5
feat(profile): report CPU resource limits
quangvdao Aug 9, 2026
628a950
perf(ntt): use exact tail for quotients
quangvdao Aug 10, 2026
f882b24
test(ntt): guard small-field cache plans
quangvdao Aug 10, 2026
7303892
ci(profile): clarify dense benchmark suite
quangvdao Aug 10, 2026
fc948f9
merge(profile): stack benchmark report updates
quangvdao Aug 10, 2026
c3c0195
merge: stack prover optimizations into planner
quangvdao Aug 10, 2026
c45a544
fix(ntt): fail closed on unsafe streaming
quangvdao Aug 10, 2026
53c9c24
Merge branch 'quang/pr-345-prover-optimizations' into codex/inner-bas…
quangvdao Aug 10, 2026
466a97c
test(pcs): dispatch adaptive opening dimensions
quangvdao Aug 10, 2026
6e620cd
fix(pcs): generalize adaptive opening helper
quangvdao Aug 10, 2026
c5fbbf0
fix(profile): close benchmark report review gaps
quangvdao Aug 10, 2026
5dbc813
Merge remote-tracking branch 'origin/feat/profile-bench-report-layout…
quangvdao Aug 10, 2026
8feefc3
refactor(planner): centralize admission and pruning
quangvdao Aug 10, 2026
055ebca
fix(prover): resolve routed cache review findings
quangvdao Aug 10, 2026
b0ce7cf
Merge remote-tracking branch 'origin/quang/pr-345-prover-optimization…
quangvdao Aug 10, 2026
5b80b8d
fix(ci): align recursive profile linkage
quangvdao Aug 10, 2026
acfa13c
Merge remote-tracking branch 'origin/quang/pr-345-prover-optimization…
quangvdao Aug 10, 2026
08f2f0c
fix(ci): align recursive profile linkage
quangvdao Aug 10, 2026
c13a885
merge updated profile report base into prover optimizations
quangvdao Aug 10, 2026
6d9611a
merge updated prover optimization base into inner basis planner
quangvdao Aug 10, 2026
bd9e308
fix(ci): restore balanced nextest shards
quangvdao Aug 10, 2026
d120fdb
test(pcs): pin adaptive W8R2 schedule shape
quangvdao Aug 10, 2026
ef88d0a
Merge commit 'bd9e30827' into quang/pr-345-prover-optimizations
quangvdao Aug 10, 2026
6f30be0
Merge commit 'ef88d0a3f' into codex/inner-basis-padded-prefix
quangvdao Aug 10, 2026
39c95cd
merge(main): connect squashed benchmark base
quangvdao Aug 10, 2026
779b322
fix(profile): address benchmark review follow-ups
quangvdao Aug 10, 2026
4507a47
merge PR 375 (779b322b1) into PR 355
quangvdao Aug 10, 2026
318366c
merge(main): connect squashed PR 375
quangvdao Aug 10, 2026
8bf66b3
fix(ci): isolate recursion build cache
quangvdao Aug 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ jobs:
# --lib --bins --tests matches the default test target set but skips
# compiling examples (clippy's --all-targets already compile-checks them).
cargo nextest run --lib --bins --tests --profile ci --cargo-profile ci-test --no-default-features --features parallel,disk-persistence,schedules-default \
--partition "slice:${SHARD_INDEX}/${SHARD_TOTAL}"
--partition "count:${SHARD_INDEX}/${SHARD_TOTAL}"
status=$?
end_epoch=$(date +%s)
if [ -f target/nextest/ci/junit.xml ]; then
Expand Down Expand Up @@ -187,8 +187,13 @@ jobs:
shared-key: ci-test-all-schedules-drift
add-job-id-key: false
cache-on-failure: true
- name: Committed catalog coverage guard
run: |
cargo test --release -p akita-config --features all-schedules generated_catalogs_cover_emitted_keys
- name: Generate schedule tables
run: scripts/generate-schedule-tables.sh
- name: Committed schedule tables match the generator
run: git diff --exit-code -- crates/akita-schedules/src/generated
- name: Drift guard (all-schedules)
run: |
cargo test --release -p akita-config --features all-schedules generated_schedule_tables_match_key_planner
Expand Down
85 changes: 46 additions & 39 deletions .github/workflows/profile-bench.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,9 +28,9 @@ env:
# and distributed profiles use the corresponding adaptive catalogs.
AKITA_BENCH_MODE: onehot_fp128
AKITA_BENCH_RUNS: "3"
# One warm-up run per case is discarded before the measured runs to
# prime caches and lazily-initialized statics; cache misses on the
# first run otherwise distort the median across only 3 samples.
# One warmup process per case is discarded before the measured processes.
# This lets the runner reach a steady state and warms operating system file
# caches. Each measured process constructs fresh setup and local state.
AKITA_BENCH_WARMUPS: "1"
# The profile example emits the per-fold wire grind_nonce in its proof-size
# breakdown; scripts/profile_bench_report.py surfaces it per level.
Expand All @@ -53,33 +53,40 @@ jobs:
# deterministically, fixing case order in the comment. `cases` is a
# newline-separated list of MODE:NUM_VARS:NUM_POLYS[:SETUP_MODE] specs.
#
# The small-field (fp32/fp64) D128 one-hot cells run at nv=28, not nv=32.
# Their ext-degree-4 challenge schedule keeps a much larger un-folded witness
# than the fp128 cells (the fp32 nv=32 setup vector is ~2.6 GiB vs ~270 MiB
# for fp128), so at nv>=30 the prover's eq-evaluation table exceeds the
# 1 GiB `MAX_MATERIALIZED_EQ_TABLE_BYTES` ceiling and the run aborts. nv=28
# is the largest validated size that both fits that budget and still folds
# through multiple recursive levels. The fp128 cells fold aggressively enough
# to stay at nv=32.
# Keep each base field in its own feature graph. This avoids compiling
# all three fields and their schedule catalogs into every base-profile
# runner. The small-field one-hot cells use the largest rows shipped by
# this stack; the adaptive-dimension follow-up raises them to nv=30.
group:
- name: 1-fp128-dense
cases: |
dense_fp128:24:1
- name: 3-flat-onehot-suite
- name: 1-fp32-base
profile_feature: profile-ci-fp32
cases: |
dense_fp32_d128:26:1
onehot_fp32_d128:28:1
- name: 2-fp64-base
profile_feature: profile-ci-fp64
cases: |
dense_fp64_d128:26:1
onehot_fp64_d128:28:1
- name: 3-fp128-base
profile_feature: profile-ci-fp128-base
cases: |
dense_fp128:26:1
onehot_fp128:32:1
- name: 4-multi-group-direct
profile_feature: profile-ci-multi-group-direct
cases: |
onehot_fp128_multi_group:32:4:direct
- name: 5-multi-group-recursive
profile_feature: profile-ci-multi-group-recursive
cases: |
onehot_fp128_multi_group_recursive:32:4:recursive
- name: 6-multi-group-recursive-w8r2
profile_feature: profile-ci-multi-group-recursive-w8r2
cases: |
onehot_fp128_multi_group_recursive_multi_chunk_w8r2:32:4:recursive
- name: 7-distributed
profile_feature: profile-ci-distributed
cases: |
onehot_fp128_multi_chunk_w2r2:32:1
onehot_fp128_multi_chunk_w4r2:32:1
Expand All @@ -92,8 +99,12 @@ jobs:
- name: Initialize benchmark paths
run: |
group_dir="$RUNNER_TEMP/bench/${{ matrix.group.name }}"
profile_threads="$(nproc)"
if [ "$profile_threads" -lt 2 ]; then
echo "Profile CI requires at least two CPUs for the multi threaded verifier timing" >&2
exit 1
fi
echo "AKITA_BENCH_GROUP_DIR=$group_dir" >> "$GITHUB_ENV"
echo "LOCALAPPDATA=$group_dir/setup-cache" >> "$GITHUB_ENV"
# pr/ holds the PR-side summary, base/ the merge-base side; both go
# into one per-group handoff artifact for the report job.
echo "AKITA_BENCH_ARTIFACT_DIR=$group_dir/pr" >> "$GITHUB_ENV"
Expand All @@ -102,6 +113,8 @@ jobs:
echo "AKITA_BENCH_SOURCE_BRANCH=${{ github.head_ref || github.ref_name }}" >> "$GITHUB_ENV"
echo "AKITA_BENCH_BASE_REF=" >> "$GITHUB_ENV"
echo "AKITA_BENCH_MERGE_BASE_SHA=" >> "$GITHUB_ENV"
echo "AKITA_PROFILE_PROVE_THREADS=$profile_threads" >> "$GITHUB_ENV"
echo "AKITA_PROFILE_VERIFY_THREADS=$profile_threads" >> "$GITHUB_ENV"

- name: Determine PR benchmark merge base
if: github.event_name == 'pull_request'
Expand Down Expand Up @@ -167,35 +180,29 @@ jobs:
lscpu || head -n 40 /proc/cpuinfo
echo "::endgroup::"

# PR deltas must compare binaries measured on this runner: ubuntu-latest
# is a heterogeneous fleet, and baselines measured on different silicon
# produced phantom double-digit deltas.
- name: Verify profile-ci feature coverage
# PR deltas compare binaries measured on the same custom runner so
# hardware differences cannot create false changes.
- name: Verify profile benchmark feature coverage
run: ./scripts/check_profile_ci_features.sh

- name: Generate schedule tables
run: scripts/generate-schedule-tables.sh

- name: Build merge-base profile binary
if: github.event_name == 'pull_request' && env.AKITA_BENCH_BASELINE_MODES_OK == '1'
env:
AKITA_BENCH_GROUP_CASES: ${{ matrix.group.cases }}
AKITA_BENCH_PROFILE_FEATURE: ${{ matrix.group.profile_feature }}
run: |
git worktree add "$RUNNER_TEMP/bench-base" "$AKITA_BENCH_MERGE_BASE_SHA"
mkdir -p "$RUNNER_TEMP/bench-bins"
features="parallel,profile-ci"
if grep -q ':recursive' <<< "$AKITA_BENCH_GROUP_CASES"; then
features="$features,disk-persistence"
fi
features="parallel,$AKITA_BENCH_PROFILE_FEATURE"
(
cd "$RUNNER_TEMP/bench-base" &&
if [ -x ./scripts/generate-schedule-tables.sh ]; then
./scripts/generate-schedule-tables.sh
fi
if python3 scripts/cargo_feature_exists.py akita-pcs profile-ci; then
if python3 scripts/cargo_feature_exists.py akita-pcs "$AKITA_BENCH_PROFILE_FEATURE"; then
CARGO_TARGET_DIR="$RUNNER_TEMP/bench-base-target" \
cargo build --release --quiet --example profile \
--no-default-features --features "$features"
elif python3 scripts/cargo_feature_exists.py akita-pcs profile-ci; then
CARGO_TARGET_DIR="$RUNNER_TEMP/bench-base-target" \
cargo build --release --quiet --example profile \
--no-default-features --features "parallel,profile-ci"
else
CARGO_TARGET_DIR="$RUNNER_TEMP/bench-base-target" \
cargo build --release --quiet --example profile
Expand Down Expand Up @@ -224,17 +231,17 @@ jobs:

- name: Build profile binary
env:
AKITA_BENCH_GROUP_CASES: ${{ matrix.group.cases }}
AKITA_BENCH_PROFILE_FEATURE: ${{ matrix.group.profile_feature }}
run: |
features="parallel,profile-ci"
if grep -q ':recursive' <<< "$AKITA_BENCH_GROUP_CASES"; then
features="$features,disk-persistence"
fi
features="parallel,$AKITA_BENCH_PROFILE_FEATURE"
cargo build --release --quiet --example profile \
--no-default-features --features "$features"

- name: Verify profile-ci linkage isolation
run: ./scripts/check_profile_ci_linkage.sh target/release/examples/profile
- name: Verify profile linkage isolation
run: >-
./scripts/check_profile_ci_linkage.sh
target/release/examples/profile
${{ matrix.group.profile_feature }}

# On PRs the head and merge-base binaries run interleaved (PR, base,
# PR, base, ...) so machine-state drift on shared runners lands on both
Expand Down
1 change: 1 addition & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 7 additions & 1 deletion book/src/foundations/spec-index.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,13 @@ quantum LGSA policy at a 128-bit target.
Recent archived records include
[`group-local-opening-points`](../../../specs/archive/2026-Q3/group-local-opening-points.md),
whose durable claim ownership and protocol dataflow now live in the architecture,
verification, commitment API, and extension-opening chapters.
verification, commitment API, and extension-opening chapters. The
[`PR 375 prover optimization record`](../../../specs/archive/2026-Q3/pr375-prover-streaming-and-onehot-unification.md)
now lives in the same archive. Its durable source ownership, CPU resource, and
NTT lifecycle rules live in the optimization and commitment API chapters. The
[`profile-bench-coverage-matrix`](../../../specs/archive/2026-Q3/profile-bench-coverage-matrix.md),
whose current benchmark contract now lives in the profiling chapter, is also
archived.

## Sources to fold in

Expand Down
2 changes: 1 addition & 1 deletion book/src/how/configuration.md
Original file line number Diff line number Diff line change
Expand Up @@ -53,4 +53,4 @@ owns shipped table data. The verifier-reachable proof-size formula.
- `crates/akita-types/src/proof_size.rs` and `crates/akita-types/src/layout/proof_size.rs` (`level_proof_bytes`, planned witness sizing).
- Paper §3.11 `sec:akita-planner` (objective/constraints, the dynamic program, generated schedules).
- `crates/akita-config/src/generated_families.rs`, `crates/akita-schedules/src/generated/`, `crates/akita-planner/src/resolve.rs` (`resolve_schedule`).
- `book/src/usage/profiling.md`, `specs/profile-bench-coverage-matrix.md`, `.github/workflows/profile-bench.yml`.
- `book/src/usage/profiling.md` and `.github/workflows/profile-bench.yml`.
Loading
Loading