From 1aa90ee32e18ffe7f0a39a1c6206f8fc8c230dc6 Mon Sep 17 00:00:00 2001 From: Sean Bowe Date: Sat, 17 Sep 2016 11:34:11 -0600 Subject: [PATCH] Factor out crossbeam slightly. --- src/protocol/multicore.rs | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/src/protocol/multicore.rs b/src/protocol/multicore.rs index 2e5f891..96efe85 100644 --- a/src/protocol/multicore.rs +++ b/src/protocol/multicore.rs @@ -1,15 +1,27 @@ use bn::*; use crossbeam; -pub fn mul_all_by(v: &mut [G], c: Fr) { +pub fn parallel(v: &mut [G], f: F, threads: usize) +{ + let f = &f; + crossbeam::scope(|scope| { - let window_size = v.len() / ::THREADS; - for i in v.chunks_mut(window_size) { + let window_size = v.len() / threads; + let mut j = 0; + for v in v.chunks_mut(window_size) { scope.spawn(move || { - for i in i { - *i = *i * c; - } + f(j, v); }); + + j += window_size; } }); } + +pub fn mul_all_by(v: &mut [G], c: Fr) { + parallel(v, |_, v| { + for i in v { + *i = *i * c; + } + }, ::THREADS); +}