diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2026-03-01 18:09:44 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2026-03-01 18:09:44 +0100 |
| commit | 2c291aed4bb80f07e8557284d3399cf1e2a4ccb9 (patch) | |
| tree | 2c009a3ad206842b07b1cd758b8192e2154231e9 /src/solvers/h48/gendata_h48.h | |
| parent | dff3a040637f2985b5b5e369148a993183964096 (diff) | |
| download | nissy-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.h | 14 |
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( | |||
| 3 | STATIC uint64_t gendata_h48short(gendata_h48short_arg_t [static 1]); | 3 | STATIC uint64_t gendata_h48short(gendata_h48short_arg_t [static 1]); |
| 4 | STATIC int64_t gendata_h48(gendata_h48_arg_t [static 1]); | 4 | STATIC int64_t gendata_h48(gendata_h48_arg_t [static 1]); |
| 5 | STATIC void gendata_h48_maintable(gendata_h48_arg_t [static 1]); | 5 | STATIC void gendata_h48_maintable(gendata_h48_arg_t [static 1]); |
| 6 | STATIC void *gendata_h48_runthread(void *); | 6 | STATIC wrapthread_return_t gendata_h48_runthread(void *); |
| 7 | 7 | ||
| 8 | STATIC_INLINE void gendata_h48_mark(gendata_h48_mark_t [static 1]); | 8 | STATIC_INLINE void gendata_h48_mark(gendata_h48_mark_t [static 1]); |
| 9 | STATIC_INLINE bool gendata_h48_dfs_stop( | 9 | STATIC_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 | ||
| 294 | STATIC void * | 294 | STATIC wrapthread_return_t |
| 295 | gendata_h48_runthread(void *arg) | 295 | gendata_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 | ||
| 334 | STATIC void | 334 | STATIC void |
