arnaucube
arnaucube/poulpyPublic Self-hosted repository
fix multithread bdd
Pro7ech jeanphilippe.bossuat@gmail.com
Wed, 12 Nov 2025 20:25:19 +0100
commit

b034ea825354670d5196c0cb27dfb9156e71049a

parent

10d1780aaab2895c27a34a1d5e9a49225bf1b88a

1 files changed, 3 insertions(+), 2 deletions(-)

jump to
M poulpy-schemes/src/tfhe/bdd_arithmetic/eval.rs → poulpy-schemes/src/tfhe/bdd_arithmetic/eval.rs

@@ -145,14 +145,15 @@

let chunk_size: usize = circuit.output_size().div_ceil(threads); thread::scope(|scope| { - for (scratch_thread, out_chunk) in scratches + for (thread_idx, (scratch_thread, out_chunk)) in scratches .iter_mut() .zip(out[..circuit.output_size()].chunks_mut(chunk_size)) + .enumerate() { // Capture chunk + thread scratch by move scope.spawn(move || { for (idx, out_i) in out_chunk.iter_mut().enumerate() { - let (nodes, state_size) = circuit.get_circuit(idx); + let (nodes, state_size) = circuit.get_circuit(thread_idx * chunk_size + idx); if state_size == 0 { out_i.data_mut().zero();