From 9f8ea6b95856882d782bcc126114584d33df4197 Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Thu, 7 Feb 2013 10:05:27 -0500 Subject: LoopControl: Improve OpenMP parallelisation --- Carpet/LoopControl/src/loopcontrol.cc | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'Carpet/LoopControl/src') diff --git a/Carpet/LoopControl/src/loopcontrol.cc b/Carpet/LoopControl/src/loopcontrol.cc index bf5f510a1..298dc868e 100644 --- a/Carpet/LoopControl/src/loopcontrol.cc +++ b/Carpet/LoopControl/src/loopcontrol.cc @@ -387,12 +387,12 @@ void lc_stats_init(lc_stats_t** const stats_ptr, char const* const file, int const line) { - if (*stats_ptr) return; + if (CCTK_BUILTIN_EXPECT(*stats_ptr != 0, true)) return; - lc_stats_t* stats; -#pragma omp single copyprivate(stats) +#pragma omp barrier +#pragma omp master { - stats = new lc_stats_t; + lc_stats_t* const stats = new lc_stats_t; stats->name = name; stats->file = file; @@ -407,11 +407,9 @@ void lc_stats_init(lc_stats_t** const stats_ptr, stats->max = 0.0; all_stats.push_back(stats); - } -#pragma omp single - { *stats_ptr = stats; } +#pragma omp barrier } -- cgit v1.2.3