summaryrefslogtreecommitdiff
path: root/src/solvers/check.cl
diff options
context:
space:
mode:
Diffstat (limited to 'src/solvers/check.cl')
-rw-r--r--src/solvers/check.cl21
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;
+ }
}