aboutsummaryrefslogtreecommitdiff
path: root/src/solvers/h48/solve.h
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2026-03-01 18:09:44 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2026-03-01 18:09:44 +0100
commit2c291aed4bb80f07e8557284d3399cf1e2a4ccb9 (patch)
tree2c009a3ad206842b07b1cd758b8192e2154231e9 /src/solvers/h48/solve.h
parentdff3a040637f2985b5b5e369148a993183964096 (diff)
downloadnissy-core-2c291aed4bb80f07e8557284d3399cf1e2a4ccb9.tar.gz
nissy-core-2c291aed4bb80f07e8557284d3399cf1e2a4ccb9.zip
Improve Windows build support.
- Use multithreading (works with a sufficiently recent version of the Microsoft developer tools / C SDK). - Detect CPU architecture and use AVX2 or NEON when appropriate. - Automatically detect python installation path.
Diffstat (limited to 'src/solvers/h48/solve.h')
-rw-r--r--src/solvers/h48/solve.h12
1 files changed, 6 insertions, 6 deletions
diff --git a/src/solvers/h48/solve.h b/src/solvers/h48/solve.h
index 15ac6ea..4fd0aea 100644
--- a/src/solvers/h48/solve.h
+++ b/src/solvers/h48/solve.h
@@ -78,7 +78,7 @@ STATIC_INLINE void h48_prune_restore_inverse(const h48_prune_t [static 1],
78STATIC int64_t solve_h48_maketasks( 78STATIC int64_t solve_h48_maketasks(
79 dfsarg_solve_h48_t [static 1], dfsarg_solve_h48_maketasks_t [static 1], 79 dfsarg_solve_h48_t [static 1], dfsarg_solve_h48_maketasks_t [static 1],
80 solve_h48_task_t [static H48_STARTING_CUBES], int [static 1]); 80 solve_h48_task_t [static H48_STARTING_CUBES], int [static 1]);
81STATIC void *solve_h48_runthread(void *); 81STATIC wrapthread_return_t solve_h48_runthread(void *);
82STATIC int64_t solve_h48_dfs(dfsarg_solve_h48_t [static 1]); 82STATIC int64_t solve_h48_dfs(dfsarg_solve_h48_t [static 1]);
83STATIC void solve_h48_log_solutions(solution_list_t [static 1], size_t); 83STATIC void solve_h48_log_solutions(solution_list_t [static 1], size_t);
84STATIC int solve_h48_compare_tasks(const void *, const void *); 84STATIC int solve_h48_compare_tasks(const void *, const void *);
@@ -383,7 +383,7 @@ solve_h48_dfs(dfsarg_solve_h48_t arg[static 1])
383 return ret; 383 return ret;
384} 384}
385 385
386STATIC void * 386STATIC wrapthread_return_t
387solve_h48_runthread(void *arg) 387solve_h48_runthread(void *arg)
388{ 388{
389 int i, j; 389 int i, j;
@@ -445,7 +445,7 @@ solve_h48_runthread(void *arg)
445 445
446solve_h48_runthread_end: 446solve_h48_runthread_end:
447 dfsarg->thread_done = true; 447 dfsarg->thread_done = true;
448 return NULL; 448 return wrapthread_return_val;
449} 449}
450 450
451STATIC int64_t 451STATIC int64_t
@@ -638,7 +638,7 @@ solve_h48(
638 638
639 } 639 }
640 640
641 wrapthread_mutex_init(&solutions_mutex, NULL); 641 wrapthread_mutex_init(&solutions_mutex);
642 642
643 mtarg = (dfsarg_solve_h48_maketasks_t) { 643 mtarg = (dfsarg_solve_h48_maketasks_t) {
644 .cube = oc.cube, 644 .cube = oc.cube,
@@ -689,7 +689,7 @@ solve_h48(
689 arg[i].target_depth = d; 689 arg[i].target_depth = d;
690 arg[i].thread_done = false; 690 arg[i].thread_done = false;
691 wrapthread_create( 691 wrapthread_create(
692 &thread[i], NULL, solve_h48_runthread, &arg[i]); 692 &thread[i], solve_h48_runthread, &arg[i]);
693 } 693 }
694 694
695 /* Log solutions and handle pause / stop / resume */ 695 /* Log solutions and handle pause / stop / resume */
@@ -718,7 +718,7 @@ solve_h48(
718 } 718 }
719 719
720 for (i = 0; i < threads; i++) 720 for (i = 0; i < threads; i++)
721 wrapthread_join(thread[i], NULL); 721 wrapthread_join(thread[i]);
722 722
723 solve_h48_log_solutions(&sollist, lastused); 723 solve_h48_log_solutions(&sollist, lastused);
724 lastused = sollist.used; 724 lastused = sollist.used;

Generated with cgit - Back to sebastiano.tronto.net