Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
ac49ac6
refactor GPU compact tower witness flow
hero78119 Apr 25, 2026
84a2631
Fix compact tower memory accounting
hero78119 Apr 26, 2026
12453f6
Optimize compact logup ones allocation
hero78119 Apr 26, 2026
7d60f01
update dep
hero78119 Apr 26, 2026
925de92
Merge branch 'master' into feat/prover_mle_zero_padding
hero78119 Apr 26, 2026
e9fbe9c
fix main mem estimation
hero78119 Apr 26, 2026
46e87bb
Merge branch 'master' of github.com:scroll-tech/ceno into feat/prover…
hero78119 Apr 26, 2026
b888fbb
Merge branch 'feat/prover_mle_zero_padding' of github.com:scroll-tech…
hero78119 Apr 26, 2026
5ecce04
fix mem estimator
hero78119 Apr 26, 2026
be14006
snapshot compact tower estimator state
hero78119 Apr 26, 2026
df88dec
rollback Cargo.toml, Cargo.lock change
hero78119 Apr 27, 2026
b57b692
fix memory estimation
hero78119 Apr 27, 2026
c50b793
verifier log
hero78119 Apr 27, 2026
89b8698
Pass tower input by value for GPU proving
hero78119 Apr 27, 2026
f210e1f
split tower layer by view
hero78119 Apr 27, 2026
99b7a94
Use dense tower build for compact GPU input
hero78119 Apr 27, 2026
f0d81b6
Pass logup shape to tower prove estimator
hero78119 Apr 27, 2026
917810c
Deduplicate borrowed tower input booking
hero78119 Apr 27, 2026
4fc8dae
fix logging
hero78119 Apr 27, 2026
ef9fa30
Check scheduler memory estimate in mem tracking
hero78119 Apr 27, 2026
011a898
Refine replay tower proof memory estimate
hero78119 Apr 27, 2026
f3ca1cf
clippy fix
hero78119 Apr 27, 2026
147f567
add missing syncronization, avoid race condition
hero78119 Apr 28, 2026
94fc7bf
Account ShardRam tower prove allocator overhead
hero78119 Apr 28, 2026
c9401d1
misc: clippy fix
hero78119 Apr 28, 2026
d14e66a
Fix GPU proof memory estimation
hero78119 Apr 28, 2026
ceced51
Fix GPU proof estimate row basis
hero78119 Apr 28, 2026
d1ab71a
Tune ShardRam tower proof estimate
hero78119 Apr 28, 2026
7c6e97c
Batch main constraints into single sumcheck
hero78119 Apr 29, 2026
505e258
Restore replay backing before batched main
hero78119 Apr 29, 2026
b2fba0f
Replay witness backing incrementally during PCS opening
hero78119 Apr 29, 2026
25d7f42
wip more log
hero78119 Apr 29, 2026
2128bf9
Improve GPU proof failure diagnostics
hero78119 Apr 29, 2026
d5513de
Compact ShardRAM main witness extraction
hero78119 Apr 29, 2026
2df2590
Log batched main MLE histograms
hero78119 Apr 29, 2026
b67c6b7
Fix batched main GPU verification
hero78119 Apr 30, 2026
a4d066f
Use legacy layout for batched main GPU sumcheck
hero78119 Apr 30, 2026
29ae6df
update gkr dependency
hero78119 Apr 30, 2026
7d1a9de
Merge branch 'master' of github.com:scroll-tech/ceno into feat/prover…
hero78119 Apr 30, 2026
7ebc0cf
Merge branch 'feat/prover_mle_zero_padding' into feat/batch_main_sumc…
hero78119 Apr 30, 2026
fb96061
perf(gpu): trim batched main sumcheck work
hero78119 May 1, 2026
be5a6f5
perf(gpu): use direct layout for batched main
hero78119 May 1, 2026
27ed865
Experiment staggered batched main sumcheck prover
hero78119 May 3, 2026
268025b
Use dedicated batched main sumcheck prover
hero78119 May 4, 2026
87f85be
chore: checkpoint frontload integration
hero78119 May 9, 2026
dd229c0
chore: upgrade gkr-backend to alpha.28
hero78119 May 9, 2026
23d5a6a
feat(recursion): verify batched main sumcheck
hero78119 May 9, 2026
fa3bdb7
misc: cleanup
hero78119 May 9, 2026
f3aaefb
misc: cleanup
hero78119 May 9, 2026
d5ae1b3
fix ci
hero78119 May 9, 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
8 changes: 6 additions & 2 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -145,12 +145,16 @@ jobs:
- name: Run bn254_curve_syscall (release)
env:
RUSTFLAGS: "-C opt-level=3"
run: cargo run --release --package ceno_zkvm --bin e2e -- --platform=ceno examples/target/riscv32im-ceno-zkvm-elf/release/examples/bn254_curve_syscalls
run: |
ulimit -s 65536
cargo run --release --package ceno_zkvm --bin e2e -- --platform=ceno examples/target/riscv32im-ceno-zkvm-elf/release/examples/bn254_curve_syscalls

- name: Run bn254_fptower_syscalls (release)
env:
RUSTFLAGS: "-C opt-level=3"
run: cargo run --release --package ceno_zkvm --bin e2e -- --platform=ceno examples/target/riscv32im-ceno-zkvm-elf/release/examples/bn254_fptower_syscalls
run: |
ulimit -s 65536
cargo run --release --package ceno_zkvm --bin e2e -- --platform=ceno examples/target/riscv32im-ceno-zkvm-elf/release/examples/bn254_fptower_syscalls

- name: Run k256 ecrecover (release)
env:
Expand Down
22 changes: 11 additions & 11 deletions Cargo.lock

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

20 changes: 10 additions & 10 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -27,16 +27,16 @@ version = "0.1.0"
ceno_crypto_primitives = { git = "https://github.com/scroll-tech/ceno-patch.git", package = "ceno_crypto_primitives", branch = "main" }
ceno_syscall = { git = "https://github.com/scroll-tech/ceno-patch.git", package = "ceno_syscall", branch = "main" }

ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", tag = "v1.0.0-alpha.25" }
mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", tag = "v1.0.0-alpha.25" }
multilinear_extensions = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "multilinear_extensions", tag = "v1.0.0-alpha.25" }
p3 = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "p3", tag = "v1.0.0-alpha.25" }
poseidon = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "poseidon", tag = "v1.0.0-alpha.25" }
sp1-curves = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sp1-curves", tag = "v1.0.0-alpha.25" }
sumcheck = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sumcheck", tag = "v1.0.0-alpha.25" }
transcript = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "transcript", tag = "v1.0.0-alpha.25" }
whir = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "whir", tag = "v1.0.0-alpha.25" }
witness = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "witness", tag = "v1.0.0-alpha.25" }
ff_ext = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "ff_ext", tag = "v1.0.0-alpha.28" }
mpcs = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "mpcs", tag = "v1.0.0-alpha.28" }
multilinear_extensions = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "multilinear_extensions", tag = "v1.0.0-alpha.28" }
p3 = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "p3", tag = "v1.0.0-alpha.28" }
poseidon = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "poseidon", tag = "v1.0.0-alpha.28" }
sp1-curves = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sp1-curves", tag = "v1.0.0-alpha.28" }
sumcheck = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "sumcheck", tag = "v1.0.0-alpha.28" }
transcript = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "transcript", tag = "v1.0.0-alpha.28" }
whir = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "whir", tag = "v1.0.0-alpha.28" }
witness = { git = "https://github.com/scroll-tech/gkr-backend.git", package = "witness", tag = "v1.0.0-alpha.28" }

anyhow = { version = "1.0", default-features = false }
bincode = "1"
Expand Down
49 changes: 43 additions & 6 deletions ceno_recursion/src/zkvm_verifier/binding.rs
Original file line number Diff line number Diff line change
Expand Up @@ -74,6 +74,7 @@ pub struct ZKVMProofInputVariable<C: Config> {
pub shard_id: Usize<C::N>,
pub pi: Array<C, Felt<C::F>>,
pub chip_proofs: Array<C, Array<C, ZKVMChipProofInputVariable<C>>>,
pub main_constraint_proof: SumcheckLayerProofVariable<C>,
pub max_num_var: Var<C::N>,
pub max_width: Var<C::N>,
pub witin_commit: BasefoldCommitmentVariable<C>,
Expand All @@ -96,6 +97,7 @@ pub(crate) struct ZKVMProofInput {
pub shard_id: usize,
pub pi: Vec<F>,
pub chip_proofs: BTreeMap<usize, ZKVMChipProofs>,
pub main_constraint_proof: SumcheckLayerProofInput,
pub witin_commit: BasefoldCommitment,
pub opening_proof: BasefoldProof,
}
Expand Down Expand Up @@ -143,18 +145,48 @@ impl ZKVMProofInput {
let (num_witin, num_fixed) = *chip_witin_num_vars
.get(&chip_idx)
.expect("num_witin data should exist");
let composed_cs = vk
.circuit_vks
.values()
.nth(chip_idx)
.expect("chip vk should exist")
.get_cs();
(
chip_idx,
proofs
.into_iter()
.map(|proof| {
ZKVMChipProofInput::from((chip_idx, proof, num_witin, num_fixed))
let sum_num_instances = proof.num_instances.iter().sum::<usize>();
let mut num_vars =
ceil_log2(next_pow2_instance_padding(sum_num_instances))
+ composed_cs.rotation_vars().unwrap_or(0);
if composed_cs.has_ecc_ops() {
num_vars += 1;
}
ZKVMChipProofInput::from((
chip_idx, proof, num_vars, num_witin, num_fixed,
))
})
.collect::<Vec<ZKVMChipProofInput>>()
.into(),
)
})
.collect::<BTreeMap<usize, ZKVMChipProofs>>(),
main_constraint_proof: SumcheckLayerProofInput {
proof: IOPProverMessageVec::from(
zkvm_proof
.main_constraint_proof
.proof
.proof
.proofs
.iter()
.map(|p| IOPProverMessage {
evaluations: p.evaluations.clone(),
})
.collect::<Vec<IOPProverMessage>>(),
),
evals: zkvm_proof.main_constraint_proof.proof.evals,
},
witin_commit: zkvm_proof.witin_commit.into(),
opening_proof: zkvm_proof.opening_proof.into(),
}
Expand All @@ -170,6 +202,9 @@ impl Hintable<InnerConfig> for ZKVMProofInput {
builder.cycle_tracker_start("read chip proofs");
let chip_proofs = Vec::<ZKVMChipProofs>::read(builder);
builder.cycle_tracker_end("read chip proofs");
builder.cycle_tracker_start("read main constraint proof");
let main_constraint_proof = SumcheckLayerProofInput::read(builder);
builder.cycle_tracker_end("read main constraint proof");
let max_num_var = usize::read(builder);
let max_width = usize::read(builder);
let witin_commit = BasefoldCommitment::read(builder);
Expand All @@ -184,6 +219,7 @@ impl Hintable<InnerConfig> for ZKVMProofInput {
shard_id,
pi,
chip_proofs,
main_constraint_proof,
max_num_var,
max_width,
witin_commit,
Expand Down Expand Up @@ -257,6 +293,7 @@ impl Hintable<InnerConfig> for ZKVMProofInput {
for proofs in self.chip_proofs.values() {
stream.extend(proofs.write());
}
stream.extend(self.main_constraint_proof.write());
stream.extend(<usize as Hintable<InnerConfig>>::write(&max_num_var));
stream.extend(<usize as Hintable<InnerConfig>>::write(&max_width));
stream.extend(self.witin_commit.write());
Expand Down Expand Up @@ -427,8 +464,8 @@ impl Hintable<InnerConfig> for ZKVMChipProofs {
}
}

impl From<(usize, ZKVMChipProof<E>, usize, usize)> for ZKVMChipProofInput {
fn from(d: (usize, ZKVMChipProof<E>, usize, usize)) -> Self {
impl From<(usize, ZKVMChipProof<E>, usize, usize, usize)> for ZKVMChipProofInput {
fn from(d: (usize, ZKVMChipProof<E>, usize, usize, usize)) -> Self {
let idx = d.0;
let p = d.1;

Expand All @@ -443,14 +480,14 @@ impl From<(usize, ZKVMChipProof<E>, usize, usize)> for ZKVMChipProofInput {
.collect::<Vec<usize>>();
vars[0]
} else {
0
d.2
};

Self {
idx,
num_vars,
num_witin: d.2,
num_fixed: d.3,
num_witin: d.3,
num_fixed: d.4,
r_out_evals_len: p.r_out_evals.len(),
w_out_evals_len: p.w_out_evals.len(),
lk_out_evals_len: p.lk_out_evals.len(),
Expand Down
Loading
Loading