diff options
author | Dennis Kobert <dennis@kobert.dev> | 2020-01-11 21:29:11 +0100 |
---|---|---|
committer | Dennis Kobert <dennis@kobert.dev> | 2020-01-11 21:29:11 +0100 |
commit | c963136144598e242f325b64fcf194c978321904 (patch) | |
tree | 2eaccd4a8e22f49d522d98af072217042d50c9b8 /src/solvers/intuitive.rs | |
parent | c36035c0667fdd224da914b50c30a9366e1a5c38 (diff) |
Do some early cpu pruning
Diffstat (limited to 'src/solvers/intuitive.rs')
-rwxr-xr-x | src/solvers/intuitive.rs | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/src/solvers/intuitive.rs b/src/solvers/intuitive.rs index bb23a39..bf80433 100755 --- a/src/solvers/intuitive.rs +++ b/src/solvers/intuitive.rs @@ -80,11 +80,20 @@ impl NormalSolver { } fn permute(&self, up: usize, index: usize, curr_mask: u64, numbers: &[u32]) { + if curr_mask.count_ones() < index as u32 * (self.n - 1) { + return; + } let mut new_num = Vec::from(numbers); let start = numbers[index as usize] / self.chunk; if index as usize == numbers.len() - 1 { //#[cfg(feature = "gpu")] //{ + let mut info = sys_info::mem_info().unwrap(); + while info.avail < info.total / 8 { + std::thread::sleep_ms(50); + info = sys_info::mem_info().unwrap(); + println!("mem wait {:?}", info); + } let i = self.n - 2 - numbers[index] / self.chunk; self.senders[i as usize] .send(super::opencl::Job::new(new_num, curr_mask)) |