mirror of
https://github.com/arnaucube/poulpy.git
synced 2026-02-10 05:06:44 +01:00
fix multithread bdd
This commit is contained in:
@@ -145,14 +145,15 @@ where
|
|||||||
let chunk_size: usize = circuit.output_size().div_ceil(threads);
|
let chunk_size: usize = circuit.output_size().div_ceil(threads);
|
||||||
|
|
||||||
thread::scope(|scope| {
|
thread::scope(|scope| {
|
||||||
for (scratch_thread, out_chunk) in scratches
|
for (thread_idx, (scratch_thread, out_chunk)) in scratches
|
||||||
.iter_mut()
|
.iter_mut()
|
||||||
.zip(out[..circuit.output_size()].chunks_mut(chunk_size))
|
.zip(out[..circuit.output_size()].chunks_mut(chunk_size))
|
||||||
|
.enumerate()
|
||||||
{
|
{
|
||||||
// Capture chunk + thread scratch by move
|
// Capture chunk + thread scratch by move
|
||||||
scope.spawn(move || {
|
scope.spawn(move || {
|
||||||
for (idx, out_i) in out_chunk.iter_mut().enumerate() {
|
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 {
|
if state_size == 0 {
|
||||||
out_i.data_mut().zero();
|
out_i.data_mut().zero();
|
||||||
|
|||||||
Reference in New Issue
Block a user