aboutsummaryrefslogtreecommitdiff
path: root/src/nissy.c
diff options
context:
space:
mode:
authorSebastiano Tronto <sebastiano@tronto.net>2024-12-14 11:59:22 +0100
committerSebastiano Tronto <sebastiano@tronto.net>2024-12-14 11:59:22 +0100
commit4a88a686d5e08404080ed6954b70c0db252aa220 (patch)
treec1fb469d5a2a68c8e4651ad7837d3dd6fe2ff93e /src/nissy.c
parent9ac266c76f39620d8343e46ca41cb09d1534384c (diff)
downloadnissy-core-4a88a686d5e08404080ed6954b70c0db252aa220.tar.gz
nissy-core-4a88a686d5e08404080ed6954b70c0db252aa220.zip
Allow choosing number of threads when calling solve()
Diffstat (limited to 'src/nissy.c')
-rw-r--r--src/nissy.c16
1 files changed, 15 insertions, 1 deletions
diff --git a/src/nissy.c b/src/nissy.c
index f933cab..5d009ba 100644
--- a/src/nissy.c
+++ b/src/nissy.c
@@ -489,6 +489,7 @@ nissy_solve(
489 unsigned maxmoves, 489 unsigned maxmoves,
490 unsigned maxsols, 490 unsigned maxsols,
491 int optimal, 491 int optimal,
492 int threads,
492 unsigned long long data_size, 493 unsigned long long data_size,
493 const char data[data_size], 494 const char data[data_size],
494 unsigned sols_size, 495 unsigned sols_size,
@@ -499,6 +500,7 @@ nissy_solve(
499 cube_t c; 500 cube_t c;
500 long long parse_ret; 501 long long parse_ret;
501 uint8_t h, k; 502 uint8_t h, k;
503 int t;
502 504
503 if (solver == NULL) { 505 if (solver == NULL) {
504 LOG("Error: 'solver' argument is NULL\n"); 506 LOG("Error: 'solver' argument is NULL\n");
@@ -522,10 +524,22 @@ nissy_solve(
522 return 0; 524 return 0;
523 } 525 }
524 526
527 t = threads == 0 ? THREADS : threads;
528 if (t < 0) {
529 LOG("solve: 'threads' is negative. Please provide a "
530 "number of threads between 1 and %d\n", THREADS);
531 return NISSY_ERROR_OPTIONS;
532 }
533 if (t > THREADS) {
534 LOG("solve: 'threads' is above the maximum value of %d\n",
535 THREADS);
536 return NISSY_ERROR_OPTIONS;
537 }
538
525 if (!strncmp(solver, "h48", 3)) { 539 if (!strncmp(solver, "h48", 3)) {
526 parse_ret = parse_h48_solver(solver, &h, &k); 540 parse_ret = parse_h48_solver(solver, &h, &k);
527 if (parse_ret == NISSY_OK) 541 if (parse_ret == NISSY_OK)
528 return solve_h48(c, minmoves, maxmoves, maxsols, 542 return solve_h48(c, minmoves, maxmoves, maxsols, t,
529 data_size, data, sols_size, sols, stats); 543 data_size, data, sols_size, sols, stats);
530 else 544 else
531 return parse_ret; 545 return parse_ret;

Generated with cgit - Back to sebastiano.tronto.net