Skip to content

Commit e553052

Browse files
committed
avoid unucessary memory padding
1 parent 205c5d1 commit e553052

File tree

2 files changed

+15
-12
lines changed

2 files changed

+15
-12
lines changed

crates/lean_prover/src/prove_execution.rs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -48,7 +48,8 @@ pub fn prove_execution(
4848
dot_products,
4949
vm_multilinear_evals,
5050
public_memory_size,
51-
memory,
51+
non_zero_memory_size,
52+
memory, // padded with zeros to next power of two
5253
} = info_span!("Witness generation").in_scope(|| {
5354
let execution_result = execute_bytecode(
5455
bytecode,
@@ -62,10 +63,9 @@ pub fn prove_execution(
6263
});
6364

6465
let public_memory = &memory[..public_memory_size];
65-
let private_memory = &memory[public_memory_size..];
66-
let log_memory = log2_ceil_usize(memory.len());
66+
let private_memory = &memory[public_memory_size..non_zero_memory_size];
67+
let log_memory = log2_strict_usize(memory.len());
6768
let log_public_memory = log2_strict_usize(public_memory.len());
68-
let padded_memory = padd_with_zero_to_next_power_of_two(&memory); // TODO avoid this padding
6969

7070
let n_cycles = full_trace[0].len();
7171
let log_n_cycles = log2_strict_usize(n_cycles);
@@ -215,7 +215,7 @@ pub fn prove_execution(
215215

216216
let base_pols = [
217217
vec![
218-
padded_memory.as_slice(),
218+
memory.as_slice(),
219219
full_trace[COL_INDEX_PC].as_slice(),
220220
full_trace[COL_INDEX_FP].as_slice(),
221221
full_trace[COL_INDEX_MEM_ADDRESS_A].as_slice(),
@@ -724,7 +724,7 @@ pub fn prove_execution(
724724
});
725725
}
726726

727-
let poseidon_folded_memory = fold_multilinear(&padded_memory, &memory_folding_challenges);
727+
let poseidon_folded_memory = fold_multilinear(&memory, &memory_folding_challenges);
728728

729729
let mut poseidon_poly_eq_point = EF::zero_vec(max_n_poseidons * 8);
730730
for (i, statement) in poseidon_lookup_statements.iter().enumerate() {
@@ -977,7 +977,7 @@ pub fn prove_execution(
977977
);
978978
let base_memory_pushforward = compute_pushforward(
979979
&base_memory_indexes,
980-
padded_memory.len(),
980+
memory.len(),
981981
&base_memory_poly_eq_point,
982982
);
983983

@@ -989,8 +989,8 @@ pub fn prove_execution(
989989
];
990990

991991
let extension_dims = vec![
992-
ColDims::padded(memory.len(), EF::ZERO), // memory
993-
ColDims::padded(memory.len().div_ceil(VECTOR_LEN), EF::ZERO), // memory (folded)
992+
ColDims::padded(non_zero_memory_size, EF::ZERO), // memory
993+
ColDims::padded(non_zero_memory_size.div_ceil(VECTOR_LEN), EF::ZERO), // memory (folded)
994994
ColDims::padded(bytecode.instructions.len(), EF::ZERO), // bytecode
995995
];
996996

@@ -1009,7 +1009,7 @@ pub fn prove_execution(
10091009

10101010
let base_memory_logup_star_statements = prove_logup_star(
10111011
&mut prover_state,
1012-
&padded_memory,
1012+
&memory,
10131013
&base_memory_indexes,
10141014
base_memory_lookup_statement_1.value
10151015
+ memory_poly_eq_point_alpha * base_memory_lookup_statement_2.value

crates/lean_prover/witness_generation/src/execution_trace.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@ pub struct ExecutionTrace {
9393
pub dot_products: Vec<WitnessDotProduct>,
9494
pub vm_multilinear_evals: Vec<WitnessMultilinearEval>,
9595
pub public_memory_size: usize,
96+
pub non_zero_memory_size: usize,
9697
pub memory: Vec<F>, // of length a multiple of public_memory_size
9798
}
9899

@@ -277,11 +278,12 @@ pub fn get_execution_trace(
277278
}
278279
}
279280

280-
let memory = memory
281+
let mut memory_padded = memory
281282
.0
282283
.par_iter()
283284
.map(|&v| v.unwrap_or(F::ZERO))
284285
.collect::<Vec<F>>();
286+
memory_padded.resize(memory.0.len().next_power_of_two(), F::ZERO);
285287

286288
let n_poseidons_16 = poseidons_16.len();
287289
let n_poseidons_24 = poseidons_24.len();
@@ -321,6 +323,7 @@ pub fn get_execution_trace(
321323
dot_products,
322324
vm_multilinear_evals,
323325
public_memory_size: execution_result.public_memory_size,
324-
memory,
326+
non_zero_memory_size: memory.0.len(),
327+
memory: memory_padded,
325328
}
326329
}

0 commit comments

Comments
 (0)