From c2b45dd78ff3b1703460e2ee75f0386b9ef60f2e Mon Sep 17 00:00:00 2001
From: Martin Reinecke <martin@mpa-garching.mpg.de>
Date: Mon, 4 Nov 2019 20:01:22 +0100
Subject: [PATCH] cosmetics

---
 gridder_cxx.h | 17 ++++++++++++-----
 1 file changed, 12 insertions(+), 5 deletions(-)

diff --git a/gridder_cxx.h b/gridder_cxx.h
index fda6c19..5feb416 100644
--- a/gridder_cxx.h
+++ b/gridder_cxx.h
@@ -1570,6 +1570,15 @@ size_t getIdxSize(const Baselines &baselines,
   return res;
   }
 
+void calc_share(size_t nshares, size_t myshare, size_t nwork, size_t &lo,
+  size_t &hi)
+  {
+  size_t nbase = nwork/nshares;
+  size_t additional = nwork%nshares;
+  lo = myshare*nbase + ((myshare<additional) ? myshare : additional);
+  hi = lo+nbase+(myshare<additional);
+  }
+
 void fillIdx(const Baselines &baselines,
   const GridderConfig &gconf, const const_mav<bool,2> &flags, int chbegin,
   int chend, double wmin, double wmax, mav<idx_t,1> &res)
@@ -1589,14 +1598,12 @@ void fillIdx(const Baselines &baselines,
   vector<idx_t> acc(nbu*nbv+1, 0);
   vector<idx_t> tmp(nrow*(chend-chbegin),~idx_t(0));
 
-#pragma omp parallel
+#pragma omp parallel num_threads(gconf.Nthreads())
 {
   idx_t nthr = my_num_threads();
   idx_t id = my_thread_num();
-  idx_t nbase = nrow/nthr;
-  idx_t additional = nrow%nthr;
-  idx_t lo = id*nbase + ((id<additional) ? id : additional);
-  idx_t hi = lo+nbase+(id<additional);
+  size_t lo, hi;
+  calc_share(nthr, id, nrow, lo, hi);
   vector<idx_t> lacc(nbu*nbv+1, 0);
 
   for (idx_t irow=lo, idx=lo*(chend-chbegin); irow<hi; ++irow)
-- 
GitLab