From 5c34ae92defa6d99f35e5df5e93d14dcef11c406 Mon Sep 17 00:00:00 2001 From: Paul Irofti Date: Sun, 30 Mar 2025 15:48:13 +0300 Subject: [PATCH] Fix last batch when n_tasks in not a multiple of batch size. --- src/CCubes.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/CCubes.c b/src/CCubes.c index 248fe1a..9805d5a 100755 --- a/src/CCubes.c +++ b/src/CCubes.c @@ -233,7 +233,13 @@ SEXP CCubes(SEXP tt) { int n_tasks_batch = 512; 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; + int current_batch = n_tasks_batch; + /* single batch */ + if (n_tasks < n_tasks_batch) + current_batch = n_tasks; + /* last batch */ + if (n_tasks - task < n_tasks_batch) + current_batch = n_tasks - task; log_debug("ccubes", "Tasks %d - %d out of %d", task, task + current_batch - 1, n_tasks);