summaryrefslogtreecommitdiff
path: root/src/solvers/intuitive.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/solvers/intuitive.rs')
-rwxr-xr-xsrc/solvers/intuitive.rs9
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))