aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@gmail.com>2013-08-15 09:20:12 -0600
committerErik Schnetter <schnetter@gmail.com>2013-08-15 09:20:12 -0600
commitee44d002712e9ba9e703e1bb22a626e8c58c1603 (patch)
tree1f282a74bb2f0c419b44eedf21dc3cf5d79cbafb
parentfdadb2cfc19a42ada49fc91c12e56646848ca8b9 (diff)
LoopControl: Initialize num_smt_threads explicitly during loop startup
-rw-r--r--Carpet/LoopControl/src/loopcontrol.cc21
1 files changed, 10 insertions, 11 deletions
diff --git a/Carpet/LoopControl/src/loopcontrol.cc b/Carpet/LoopControl/src/loopcontrol.cc
index 26b86a50f..1785ec3b4 100644
--- a/Carpet/LoopControl/src/loopcontrol.cc
+++ b/Carpet/LoopControl/src/loopcontrol.cc
@@ -472,22 +472,13 @@ namespace {
+ static int num_smt_threads = 0;
+
int get_num_fine_threads()
{
DECLARE_CCTK_PARAMETERS;
if (not use_smt_threads) return 1;
if (omp_get_num_threads() == 1) return 1;
- static int num_smt_threads = -1;
- if (CCTK_BUILTIN_EXPECT(num_smt_threads<0, false)) {
-#pragma omp critical
- if (num_smt_threads<0) {
- if (CCTK_IsFunctionAliased("GetNumSMTThreads")) {
- num_smt_threads = GetNumSMTThreads();
- } else {
- num_smt_threads = 1;
- }
- }
- }
return num_smt_threads;
}
@@ -596,6 +587,14 @@ void lc_descr_init(lc_descr_t **const descr_ptr,
lc_descr_t *const descr = new lc_descr_t(name, file, line);
all_descrs.push_back(descr);
*descr_ptr = descr;
+
+ if (CCTK_BUILTIN_EXPECT(num_smt_threads==0, false)) {
+ if (CCTK_IsFunctionAliased("GetNumSMTThreads")) {
+ num_smt_threads = GetNumSMTThreads();
+ } else {
+ num_smt_threads = 1;
+ }
+ }
}
#pragma omp barrier
}