Adjust batches if total jobs is smaller then.
This commit is contained in:
parent
aa54de39b6
commit
95ca0c519b
1 changed files with 10 additions and 5 deletions
15
src/CCubes.c
15
src/CCubes.c
|
@ -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);
|
||||
|
|
Loading…
Add table
Reference in a new issue