From ee44d002712e9ba9e703e1bb22a626e8c58c1603 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 15 Aug 2013 09:20:12 -0600 Subject: LoopControl: Initialize num_smt_threads explicitly during loop startup --- Carpet/LoopControl/src/loopcontrol.cc | 21 ++++++++++----------- 1 file 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 } -- cgit v1.2.3