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);
|
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;
|
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",
|
log_debug("ccubes", "Tasks %d - %d out of %d",
|
||||||
task, task + n_tasks, nchoosek(ninputs, k));
|
task, task + current_batch, current_batch);
|
||||||
|
|
||||||
bool *coverage;
|
bool *coverage;
|
||||||
unsigned int *fixed_bits;
|
unsigned int *fixed_bits;
|
||||||
unsigned int *value_bits;
|
unsigned int *value_bits;
|
||||||
unsigned int *pichart_values;
|
unsigned int *pichart_values;
|
||||||
ctx = ccubes_do_tasks(n_tasks,
|
ctx = ccubes_do_tasks(current_batch,
|
||||||
task,
|
task,
|
||||||
k,
|
k,
|
||||||
ninputs,
|
ninputs,
|
||||||
|
@ -231,7 +236,7 @@ SEXP CCubes(SEXP tt) {
|
||||||
log_error("ccubes", "ccubes_do_tasks failed");
|
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("ccubes", "Task %d", i);
|
||||||
|
|
||||||
log_debug_raw("ccubes", "coverage[%d]:", i);
|
log_debug_raw("ccubes", "coverage[%d]:", i);
|
||||||
|
|
Loading…
Add table
Reference in a new issue