diff options
| author | Sebastiano Tronto <sebastiano@tronto.net> | 2024-12-14 11:59:22 +0100 |
|---|---|---|
| committer | Sebastiano Tronto <sebastiano@tronto.net> | 2024-12-14 11:59:22 +0100 |
| commit | 4a88a686d5e08404080ed6954b70c0db252aa220 (patch) | |
| tree | c1fb469d5a2a68c8e4651ad7837d3dd6fe2ff93e /src/nissy.c | |
| parent | 9ac266c76f39620d8343e46ca41cb09d1534384c (diff) | |
| download | nissy-core-4a88a686d5e08404080ed6954b70c0db252aa220.tar.gz nissy-core-4a88a686d5e08404080ed6954b70c0db252aa220.zip | |
Allow choosing number of threads when calling solve()
Diffstat (limited to '')
| -rw-r--r-- | src/nissy.c | 16 |
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; |
