diff options
Diffstat (limited to 'src/solvers/check.cl')
-rw-r--r-- | src/solvers/check.cl | 21 |
1 files changed, 19 insertions, 2 deletions
diff --git a/src/solvers/check.cl b/src/solvers/check.cl index d0ab4f0..94a81fc 100644 --- a/src/solvers/check.cl +++ b/src/solvers/check.cl @@ -1,4 +1,21 @@ -__kernel void check(__global int* permutations, __global int* checks, int n) { - buffer[get_global_id(0)] += scalar; +#pragma OPENCL EXTENSION cl_intel_printf : enable +__kernel void check(__global unsigned long* permutations, __global int* results, + unsigned long mask, unsigned int n, unsigned int w, unsigned long offset) { + int id = get_global_id(0); + unsigned long curr_mask = mask | permutations[id + offset]; + + unsigned long tmask, sum, stones; + stones = tmask = sum = 0; + for (int i = 1; i <= w + 1; i++) { + if ((curr_mask & (1 << i)) == 0) { + stones += 1; + tmask |= 1 << (i - sum); + sum = i; + } + } + if (tmask == (1 << (n + 1)) - 2 && stones == n) { + printf("test"); + results[id] = id; + } } |