diff options
author | Dennis Kobert <dennis@kobert.dev> | 2020-01-04 08:13:54 +0100 |
---|---|---|
committer | Dennis Kobert <dennis@kobert.dev> | 2020-01-04 08:13:54 +0100 |
commit | 920a6729577d14ba9190abcb3a2c4087652228a4 (patch) | |
tree | 8790c755a933f46bbe414cfd1eb1b1be0fea12ad /src/solvers/mod.rs | |
parent | 862695a7374bc60368d09a7e695ae0b8aa3b97c2 (diff) |
Add profiling extend gpu support
Diffstat (limited to 'src/solvers/mod.rs')
-rwxr-xr-x | src/solvers/mod.rs | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/src/solvers/mod.rs b/src/solvers/mod.rs index 9dc210b..0615eab 100755 --- a/src/solvers/mod.rs +++ b/src/solvers/mod.rs @@ -1,4 +1,27 @@ //pub mod incremental_block; pub mod intuitive; #[cfg(feature = "gpu")] -pub mod ocl; +pub mod opencl; + +lazy_static! { + pub static ref PERMUTATIONS: (Vec<Vec<u32>>, Vec<u64>) = { + let n = crate::N; + let mut heap = (1..=n).collect::<Vec<u32>>(); + let heap = permutohedron::Heap::new(&mut heap); + let n_f = permutohedron::factorial(n as usize); + let mut permutations = Vec::with_capacity(n_f); + + let mut masks: Vec<u64> = vec![0; n_f]; + println!("Generating permutations"); + for (j, data) in heap.enumerate() { + let mut sum = 0; + permutations.push(data.clone()); + for stone in data.iter().take(n as usize - 1) { + sum += stone; + masks[j] |= 1 << sum; + } + } + (permutations, masks) + }; +} + |