Skip to content

Commit 6958d0b

Browse files
committed
Merge branch 'sumcheck-fold-and-compute-together'
2 parents 2513e77 + fd88ebd commit 6958d0b

File tree

10 files changed

+1503
-731
lines changed

10 files changed

+1503
-731
lines changed

Cargo.lock

Lines changed: 527 additions & 176 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ p3-goldilocks = { git = "https://github.com/TomWambsgans/Plonky3.git", branch =
7979
p3-challenger = { git = "https://github.com/TomWambsgans/Plonky3.git", branch = "lean-multisig" }
8080
p3-util = { git = "https://github.com/TomWambsgans/Plonky3.git", branch = "lean-multisig" }
8181

82-
whir-p3 = { git = "https://github.com/TomWambsgans/whir-p3", branch = "lean-multisig" }
82+
whir-p3 = { git = "https://github.com/TomWambsgans/whir-p3" }
8383
multilinear-toolkit = { git = "https://github.com/leanEthereum/multilinear-toolkit.git" }
8484

8585
[dependencies]

crates/lookup/src/logup_star.rs

Lines changed: 18 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ where
4141
let max_index = max_index
4242
.unwrap_or(table_length)
4343
.next_multiple_of(packing_width::<EF>());
44-
let max_index_packed = max_index / packing_width::<EF>();
44+
let max_index_packed = max_index.div_ceil(packing_width::<EF>());
4545

4646
let (poly_eq_point_packed, pushforward_packed, table_packed) =
4747
info_span!("packing").in_scope(|| {
@@ -81,53 +81,24 @@ where
8181
// sanity check
8282
assert_eq!(prod, table_eval * pushforwardt_eval);
8383

84-
// "c" in the paper
85-
let random_challenge = prover_state.sample();
86-
87-
let gkr_layer_left = info_span!("building left").in_scope(|| {
88-
let mut layer = unsafe {
89-
uninitialized_vec::<EFPacking<EF>>(indexes_length * 2 / packing_width::<EF>())
90-
};
91-
let half_len_packed = layer.len() / 2;
92-
let challenge_minus_indexes = pack_extension(
93-
&indexes
94-
.par_iter()
95-
.map(|&x| random_challenge - x)
96-
.collect::<Vec<_>>(),
97-
);
98-
parallel_clone(&poly_eq_point_packed, &mut layer[..half_len_packed]);
99-
parallel_clone(&challenge_minus_indexes, &mut layer[half_len_packed..]);
100-
layer
101-
});
84+
let c = prover_state.sample();
10285

10386
let (claim_left, _, eval_c_minux_indexes) =
104-
prove_gkr_quotient(prover_state, gkr_layer_left, None);
105-
106-
let gkr_layer_right = info_span!("building right").in_scope(|| {
107-
let mut layer =
108-
unsafe { uninitialized_vec::<EFPacking<EF>>(table_length * 2 / packing_width::<EF>()) };
109-
let half_len_packed = layer.len() / 2;
110-
let challenge_minus_increment = pack_extension(
111-
&(0..table.unpacked_len())
112-
.into_par_iter()
113-
.map(|i| random_challenge - PF::<EF>::from_usize(i))
114-
.collect::<Vec<_>>(),
115-
);
116-
parallel_clone(
117-
&pushforward_packed[..max_index_packed],
118-
&mut layer[..max_index_packed],
119-
);
120-
layer[max_index_packed..half_len_packed]
121-
.par_iter_mut()
122-
.for_each(|x| *x = EFPacking::<EF>::ZERO);
123-
parallel_clone(&challenge_minus_increment, &mut layer[half_len_packed..]);
124-
layer
125-
});
126-
let (claim_right, pushforward_final_eval, _) =
127-
prove_gkr_quotient(prover_state, gkr_layer_right, Some(max_index_packed));
87+
prove_gkr_quotient(prover_state, &poly_eq_point_packed, (c, indexes), None);
88+
89+
let increments = (0..table.unpacked_len())
90+
.into_par_iter()
91+
.map(PF::<EF>::from_usize)
92+
.collect::<Vec<_>>();
93+
let (claim_right, pushforward_final_eval, _) = prove_gkr_quotient(
94+
prover_state,
95+
&pushforward_packed,
96+
(c, &increments),
97+
Some(max_index_packed),
98+
);
12899

129100
let final_point_left = claim_left.point[1..].to_vec();
130-
let indexes_final_eval = random_challenge - eval_c_minux_indexes;
101+
let indexes_final_eval = c - eval_c_minux_indexes;
131102
prover_state.add_extension_scalar(indexes_final_eval);
132103
let on_indexes = Evaluation::new(final_point_left, indexes_final_eval);
133104

@@ -277,8 +248,9 @@ mod tests {
277248

278249
let mut indexes = vec![];
279250
let mut values = vec![];
251+
let max_index = table_length * 3 / 4;
280252
for _ in 0..indexes_len {
281-
let index = rng.random_range(0..table_length);
253+
let index = rng.random_range(0..max_index);
282254
indexes.push(F::from_usize(index));
283255
values.push(table[index]);
284256
}
@@ -311,7 +283,7 @@ mod tests {
311283
claim.value,
312284
&poly_eq_point,
313285
&pushforward,
314-
None,
286+
Some(max_index),
315287
);
316288
println!("Proving logup_star took {} ms", time.elapsed().as_millis());
317289

0 commit comments

Comments
 (0)