From b2e07dd1f4a8a7ee0f82fc0453548cb6fa3eb1ac Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Tue, 19 Mar 2013 15:36:36 -0400 Subject: LoopControl: Improve OpenMP parallelisation of get_num_fine_threads --- Carpet/LoopControl/src/loopcontrol.cc | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) (limited to 'Carpet/LoopControl') 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; } -- cgit v1.2.3