Adjust batches if total jobs is smaller then.

This commit is contained in:
Paul Irofti 2025-03-27 20:04:40 +02:00
parent aa54de39b6
commit 95ca0c519b

View file

@ -195,16 +195,21 @@ SEXP CCubes(SEXP tt) {
Rprintf("---k: %d\n", k);
}
int n_tasks = 512;
int n_tasks = nchoosek(ninputs, k);
int n_tasks_batch = 512;
struct ccubes_context *ctx = NULL;
for (int task = 0; task < nchoosek(ninputs, k); task+=n_tasks) {
for (int task = 0; task < n_tasks; task+=n_tasks_batch) {
/* adjust if batch size is larger than total job size */
int current_batch = n_tasks < n_tasks_batch ? n_tasks : n_tasks_batch;
log_debug("ccubes", "Tasks %d - %d out of %d",
task, task + n_tasks, nchoosek(ninputs, k));
task, task + current_batch, current_batch);
bool *coverage;
unsigned int *fixed_bits;
unsigned int *value_bits;
unsigned int *pichart_values;
ctx = ccubes_do_tasks(n_tasks,
ctx = ccubes_do_tasks(current_batch,
task,
k,
ninputs,
@ -231,7 +236,7 @@ SEXP CCubes(SEXP tt) {
log_error("ccubes", "ccubes_do_tasks failed");
}
for (int i = 0; i < n_tasks; i++) {
for (int i = 0; i < current_batch; i++) {
log_debug("ccubes", "Task %d", i);
log_debug_raw("ccubes", "coverage[%d]:", i);