diff options
author | Erik Schnetter <schnetter@gmail.com> | 2013-03-19 15:36:36 -0400 |
---|---|---|
committer | Erik Schnetter <schnetter@gmail.com> | 2013-03-19 15:36:36 -0400 |
commit | b2e07dd1f4a8a7ee0f82fc0453548cb6fa3eb1ac (patch) | |
tree | b4c910baa3a4e0525d2bda1292e949a6d42d7d09 /Carpet/LoopControl | |
parent | 10cb957bb41e588c9f0407ab0c99fd2c43706bbe (diff) |
LoopControl: Improve OpenMP parallelisation of get_num_fine_threads
Diffstat (limited to 'Carpet/LoopControl')
-rw-r--r-- | Carpet/LoopControl/src/loopcontrol.cc | 15 |
1 files changed, 7 insertions, 8 deletions
diff --git a/Carpet/LoopControl/src/loopcontrol.cc b/Carpet/LoopControl/src/loopcontrol.cc index c8ac8f99e..398ed91de 100644 --- a/Carpet/LoopControl/src/loopcontrol.cc +++ b/Carpet/LoopControl/src/loopcontrol.cc @@ -279,15 +279,14 @@ namespace { 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 barrier - (void)0; // PGI compiler needs this -#pragma omp master - if (CCTK_IsFunctionAliased("GetNumSMTThreads")) { - num_smt_threads = GetNumSMTThreads(); - } else { - num_smt_threads = 1; +#pragma omp critical + if (num_smt_threads<0) { + if (CCTK_IsFunctionAliased("GetNumSMTThreads")) { + num_smt_threads = GetNumSMTThreads(); + } else { + num_smt_threads = 1; + } } -#pragma omp barrier } return num_smt_threads; } |