Skip to content

Commit 9943c01

Browse files
author
Aurélien Nicolas
committed
Merge branch 'develop' into bus-auto
2 parents 03690de + 5cf9a37 commit 9943c01

File tree

4 files changed

+585
-838
lines changed

4 files changed

+585
-838
lines changed

.gitignore

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
**/*.rs.bk
33
.vscode
44
**/*.html
5-
.DS_Store
5+
.DS_Store

halo2_proofs/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,11 +67,11 @@ log = "0.4.17"
6767

6868
# timer
6969
ark-std = { version = "0.3.0" }
70-
env_logger = "0.8.0"
7170

7271
[dev-dependencies]
7372
assert_matches = "1.5"
7473
criterion = "0.3"
74+
env_logger = "0.8.0"
7575
gumdrop = "0.8"
7676
proptest = "1"
7777
rand_core = { version = "0.6", default-features = false, features = ["getrandom"] }

halo2_proofs/src/circuit/floor_planner/single_pass.rs

Lines changed: 23 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ use std::ops::Range;
66
use std::sync::{Arc, Mutex};
77
use std::time::Instant;
88

9+
use rayon::prelude::{IndexedParallelIterator, IntoParallelIterator, ParallelIterator};
10+
911
use ff::Field;
1012

1113
use ark_std::{end_timer, start_timer};
@@ -258,39 +260,28 @@ impl<'a, F: Field, CS: Assignment<F> + 'a> Layouter<F> for SingleChipLayouter<'a
258260
let ref_sub_cs = sub_cs.iter_mut().collect();
259261
let sub_layouters = self.fork(ref_sub_cs)?;
260262
let regions_2nd_pass = Instant::now();
261-
let ret = crossbeam::scope(|scope| {
262-
let mut handles = vec![];
263-
for (i, (mut assignment, mut sub_layouter)) in assignments
264-
.into_iter()
265-
.zip(sub_layouters.into_iter())
266-
.enumerate()
267-
{
263+
let ret = assignments
264+
.into_par_iter()
265+
.zip(sub_layouters.into_par_iter())
266+
.enumerate()
267+
.map(|(i, (mut assignment, mut sub_layouter))| {
268268
let region_name = format!("{}_{}", region_name, i);
269-
handles.push(scope.spawn(move |_| {
270-
let sub_region_2nd_pass = Instant::now();
271-
sub_layouter.cs.enter_region(|| region_name.clone());
272-
let mut region =
273-
SingleChipLayouterRegion::new(&mut sub_layouter, (region_index + i).into());
274-
let region_ref: &mut dyn RegionLayouter<F> = &mut region;
275-
let result = assignment(region_ref.into());
276-
let constant = region.constants.clone();
277-
sub_layouter.cs.exit_region();
278-
log::debug!(
279-
"region {} 2nd pass synthesis took {:?}",
280-
region_name,
281-
sub_region_2nd_pass.elapsed()
282-
);
283-
284-
(result, constant)
285-
}));
286-
}
287-
288-
handles
289-
.into_iter()
290-
.map(|handle| handle.join().expect("handle.join should never fail"))
291-
.collect::<Vec<_>>()
292-
})
293-
.expect("scope should not fail");
269+
let sub_region_2nd_pass = Instant::now();
270+
sub_layouter.cs.enter_region(|| region_name.clone());
271+
let mut region =
272+
SingleChipLayouterRegion::new(&mut sub_layouter, (region_index + i).into());
273+
let region_ref: &mut dyn RegionLayouter<F> = &mut region;
274+
let result = assignment(region_ref.into());
275+
let constant = region.constants.clone();
276+
sub_layouter.cs.exit_region();
277+
log::debug!(
278+
"region {} 2nd pass synthesis took {:?}",
279+
region_name,
280+
sub_region_2nd_pass.elapsed()
281+
);
282+
(result, constant)
283+
})
284+
.collect::<Vec<_>>();
294285
let cs_merge_time = Instant::now();
295286
let num_sub_cs = sub_cs.len();
296287
self.cs.merge(sub_cs)?;

0 commit comments

Comments
 (0)