aboutsummaryrefslogtreecommitdiff
path: root/src/solvers/h48/gendata_h48.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/gendata_h48.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/gendata_h48.h')
-rw-r--r--src/solvers/h48/gendata_h48.h14
1 files changed, 7 insertions, 7 deletions
diff --git a/src/solvers/h48/gendata_h48.h b/src/solvers/h48/gendata_h48.h
index ef8a854..b37bcfb 100644
--- a/src/solvers/h48/gendata_h48.h
+++ b/src/solvers/h48/gendata_h48.h
@@ -3,7 +3,7 @@ STATIC long long gendata_h48_dispatch(
3STATIC uint64_t gendata_h48short(gendata_h48short_arg_t [static 1]); 3STATIC uint64_t gendata_h48short(gendata_h48short_arg_t [static 1]);
4STATIC int64_t gendata_h48(gendata_h48_arg_t [static 1]); 4STATIC int64_t gendata_h48(gendata_h48_arg_t [static 1]);
5STATIC void gendata_h48_maintable(gendata_h48_arg_t [static 1]); 5STATIC void gendata_h48_maintable(gendata_h48_arg_t [static 1]);
6STATIC void *gendata_h48_runthread(void *); 6STATIC wrapthread_return_t gendata_h48_runthread(void *);
7 7
8STATIC_INLINE void gendata_h48_mark(gendata_h48_mark_t [static 1]); 8STATIC_INLINE void gendata_h48_mark(gendata_h48_mark_t [static 1]);
9STATIC_INLINE bool gendata_h48_dfs_stop( 9STATIC_INLINE bool gendata_h48_dfs_stop(
@@ -230,9 +230,9 @@ gendata_h48_maintable(gendata_h48_arg_t arg[static 1])
230 230
231 inext = 0; 231 inext = 0;
232 count = 0; 232 count = 0;
233 wrapthread_mutex_init(&shortcubes_mutex, NULL); 233 wrapthread_mutex_init(&shortcubes_mutex);
234 for (i = 0; i < CHUNKS; i++) 234 for (i = 0; i < CHUNKS; i++)
235 wrapthread_mutex_init(&table_mutex[i], NULL); 235 wrapthread_mutex_init(&table_mutex[i]);
236 for (i = 0; i < THREADS; i++) { 236 for (i = 0; i < THREADS; i++) {
237 dfsarg[i] = (h48_dfs_arg_t){ 237 dfsarg[i] = (h48_dfs_arg_t){
238 .h = arg->h, 238 .h = arg->h,
@@ -251,7 +251,7 @@ gendata_h48_maintable(gendata_h48_arg_t arg[static 1])
251 dfsarg[i].table_mutex[ii] = &table_mutex[ii]; 251 dfsarg[i].table_mutex[ii] = &table_mutex[ii];
252 252
253 wrapthread_create( 253 wrapthread_create(
254 &thread[i], NULL, gendata_h48_runthread, &dfsarg[i]); 254 &thread[i], gendata_h48_runthread, &dfsarg[i]);
255 } 255 }
256 256
257 if (NISSY_CANSLEEP) { 257 if (NISSY_CANSLEEP) {
@@ -281,7 +281,7 @@ gendata_h48_maintable(gendata_h48_arg_t arg[static 1])
281 } 281 }
282 282
283 for (i = 0; i < THREADS; i++) 283 for (i = 0; i < THREADS; i++)
284 wrapthread_join(thread[i], NULL); 284 wrapthread_join(thread[i]);
285 285
286 h48map_destroy(&shortcubes); 286 h48map_destroy(&shortcubes);
287 287
@@ -291,7 +291,7 @@ gendata_h48_maintable(gendata_h48_arg_t arg[static 1])
291 writetableinfo(&arg->info, bufsize, (unsigned char *)arg->h48buf); 291 writetableinfo(&arg->info, bufsize, (unsigned char *)arg->h48buf);
292} 292}
293 293
294STATIC void * 294STATIC wrapthread_return_t
295gendata_h48_runthread(void *arg) 295gendata_h48_runthread(void *arg)
296{ 296{
297 uint64_t coord, coordext, coordmin; 297 uint64_t coord, coordext, coordmin;
@@ -328,7 +328,7 @@ gendata_h48_runthread(void *arg)
328 } 328 }
329 } 329 }
330 330
331 return NULL; 331 return wrapthread_return_val;
332} 332}
333 333
334STATIC void 334STATIC void

Generated with cgit - Back to sebastiano.tronto.net