diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-08-15 09:20:12 -0600 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-08-15 09:20:12 -0600 |
commit | ee44d002712e9ba9e703e1bb22a626e8c58c1603 (patch) | |
tree | 1f282a74bb2f0c419b44eedf21dc3cf5d79cbafb | |
parent | fdadb2cfc19a42ada49fc91c12e56646848ca8b9 (diff) |
LoopControl: Initialize num_smt_threads explicitly during loop startup
-rw-r--r-- | Carpet/LoopControl/src/loopcontrol.cc | 21 |
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 } |