From 1a9d0d91e08d0dee9b48c05ef0ac72cc732a42ab Mon Sep 17 00:00:00 2001 From: Dennis Kobert Date: Mon, 6 Jan 2020 08:33:57 +0100 Subject: Backport to opencl 1.2 --- src/solvers/gpusolver.rs | 29 ++++++++++++++++++++++------- 1 file changed, 22 insertions(+), 7 deletions(-) (limited to 'src/solvers/gpusolver.rs') diff --git a/src/solvers/gpusolver.rs b/src/solvers/gpusolver.rs index 2b9eb4a..69c400e 100644 --- a/src/solvers/gpusolver.rs +++ b/src/solvers/gpusolver.rs @@ -1,16 +1,29 @@ -use crate::solver::{wall_stats, Solver, IteratorSolver}; -use crate::structs::StoneWall; use crate::permutations::PermutationGenerator; +use crate::solver::{wall_stats, IteratorSolver, Solver}; +use crate::structs::StoneWall; #[derive(Debug)] pub struct GpuSolver { - n: u32, h: u32, w: u32, + n: u32, + h: u32, + w: u32, permutations: Vec>, masks: Vec, } impl GpuSolver { fn solve_to_vec(&mut self) -> Vec { + let src = + std::fs::read_to_string("src/solvers/check.cl").expect("failed to open kernel file"); + + crate::solvers::opencl::GpuSolver::launch_sevice( + &self.masks, + self.n, + self.h, + self.w, + src.as_ref(), + ) + .unwrap(); vec![] } } @@ -25,9 +38,9 @@ fn generate_masks(permutations: &[Vec]) -> Vec { let mut v = 0; let mut x = 0u64; for i in p.iter().take(p.len() - 1).map(|i| { - v += i; - v - }) { + v += i; + v + }) { x |= 1 << i } masks.push(x) @@ -41,7 +54,9 @@ impl Solver for GpuSolver { let permutations = generate_permutations(n); let masks = generate_masks(&permutations); Self { - n, h, w, + n, + h, + w, permutations, masks, } -- cgit v1.2.3-54-g00ecf