diff options
Diffstat (limited to 'Carpet')
-rw-r--r-- | Carpet/CarpetLib/src/copy_3d.cc | 6 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/data.cc | 8 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/interpolate_3d_2tl.cc | 6 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/interpolate_3d_3tl.cc | 6 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/interpolate_3d_4tl.cc | 6 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/interpolate_3d_5tl.cc | 6 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/interpolate_eno_3d_3tl.cc | 6 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/restrict_3d_rf2.cc | 6 | ||||
-rw-r--r-- | Carpet/LoopControl/src/lc_hill.c | 4 | ||||
-rw-r--r-- | Carpet/LoopControl/src/loopcontrol.c | 71 | ||||
-rw-r--r-- | Carpet/LoopControl/src/loopcontrol.h | 21 |
11 files changed, 83 insertions, 63 deletions
diff --git a/Carpet/CarpetLib/src/copy_3d.cc b/Carpet/CarpetLib/src/copy_3d.cc index 5c9950f50..36a48df40 100644 --- a/Carpet/CarpetLib/src/copy_3d.cc +++ b/Carpet/CarpetLib/src/copy_3d.cc @@ -103,9 +103,9 @@ namespace CarpetLib { // Loop over region #pragma omp parallel for - for (ptrdiff_t k=0; k<regkext; ++k) { - for (ptrdiff_t j=0; j<regjext; ++j) { - for (ptrdiff_t i=0; i<regiext; ++i) { + for (int k=0; k<regkext; ++k) { + for (int j=0; j<regjext; ++j) { + for (int i=0; i<regiext; ++i) { dst [DSTIND3(i, j, k)] = src [SRCIND3(i, j, k)]; diff --git a/Carpet/CarpetLib/src/data.cc b/Carpet/CarpetLib/src/data.cc index bad80a00a..da1f8ab56 100644 --- a/Carpet/CarpetLib/src/data.cc +++ b/Carpet/CarpetLib/src/data.cc @@ -58,7 +58,8 @@ call_operator (void # if ! defined (CARPET_OPTIMISE) ibset allregbboxes; # endif - _Pragma ("omp parallel") { +#pragma omp parallel + { int const num_threads = omp_get_num_threads(); int const thread_num = omp_get_thread_num(); // Parallelise in z direction @@ -83,9 +84,8 @@ call_operator (void if (not myregbbox.empty()) { (* the_operator) (src, srcext, dst, dstext, srcbbox, dstbbox, myregbbox); # if ! defined (NDEBUG) && ! defined (CARPET_OPTIMISE) - _Pragma ("omp critical") { - allregbboxes += myregbbox; - } +#pragma omp critical + allregbboxes += myregbbox; # endif } } diff --git a/Carpet/CarpetLib/src/interpolate_3d_2tl.cc b/Carpet/CarpetLib/src/interpolate_3d_2tl.cc index 78170b1ee..0b984b142 100644 --- a/Carpet/CarpetLib/src/interpolate_3d_2tl.cc +++ b/Carpet/CarpetLib/src/interpolate_3d_2tl.cc @@ -121,9 +121,9 @@ namespace CarpetLib { // Loop over region #pragma omp parallel for - for (ptrdiff_t k=0; k<regkext; ++k) { - for (ptrdiff_t j=0; j<regjext; ++j) { - for (ptrdiff_t i=0; i<regiext; ++i) { + for (int k=0; k<regkext; ++k) { + for (int j=0; j<regjext; ++j) { + for (int i=0; i<regiext; ++i) { dst [DSTIND3(i, j, k)] = + s1fac * src1 [SRCIND3(i, j, k)] diff --git a/Carpet/CarpetLib/src/interpolate_3d_3tl.cc b/Carpet/CarpetLib/src/interpolate_3d_3tl.cc index 9a1d0e5d7..c0e8b44fd 100644 --- a/Carpet/CarpetLib/src/interpolate_3d_3tl.cc +++ b/Carpet/CarpetLib/src/interpolate_3d_3tl.cc @@ -125,9 +125,9 @@ namespace CarpetLib { // Loop over region #pragma omp parallel for - for (ptrdiff_t k=0; k<regkext; ++k) { - for (ptrdiff_t j=0; j<regjext; ++j) { - for (ptrdiff_t i=0; i<regiext; ++i) { + for (int k=0; k<regkext; ++k) { + for (int j=0; j<regjext; ++j) { + for (int i=0; i<regiext; ++i) { dst [DSTIND3(i, j, k)] = + s1fac * src1 [SRCIND3(i, j, k)] diff --git a/Carpet/CarpetLib/src/interpolate_3d_4tl.cc b/Carpet/CarpetLib/src/interpolate_3d_4tl.cc index 9892d0bbf..7d4c7fe26 100644 --- a/Carpet/CarpetLib/src/interpolate_3d_4tl.cc +++ b/Carpet/CarpetLib/src/interpolate_3d_4tl.cc @@ -132,9 +132,9 @@ namespace CarpetLib { // Loop over region #pragma omp parallel for - for (ptrdiff_t k=0; k<regkext; ++k) { - for (ptrdiff_t j=0; j<regjext; ++j) { - for (ptrdiff_t i=0; i<regiext; ++i) { + for (int k=0; k<regkext; ++k) { + for (int j=0; j<regjext; ++j) { + for (int i=0; i<regiext; ++i) { dst [DSTIND3(i, j, k)] = + s1fac * src1 [SRCIND3(i, j, k)] diff --git a/Carpet/CarpetLib/src/interpolate_3d_5tl.cc b/Carpet/CarpetLib/src/interpolate_3d_5tl.cc index abad807b1..f4204ea68 100644 --- a/Carpet/CarpetLib/src/interpolate_3d_5tl.cc +++ b/Carpet/CarpetLib/src/interpolate_3d_5tl.cc @@ -137,9 +137,9 @@ namespace CarpetLib { // Loop over region #pragma omp parallel for - for (ptrdiff_t k=0; k<regkext; ++k) { - for (ptrdiff_t j=0; j<regjext; ++j) { - for (ptrdiff_t i=0; i<regiext; ++i) { + for (int k=0; k<regkext; ++k) { + for (int j=0; j<regjext; ++j) { + for (int i=0; i<regiext; ++i) { dst [DSTIND3(i, j, k)] = + s1fac * src1 [SRCIND3(i, j, k)] diff --git a/Carpet/CarpetLib/src/interpolate_eno_3d_3tl.cc b/Carpet/CarpetLib/src/interpolate_eno_3d_3tl.cc index ef3a69053..e84059d10 100644 --- a/Carpet/CarpetLib/src/interpolate_eno_3d_3tl.cc +++ b/Carpet/CarpetLib/src/interpolate_eno_3d_3tl.cc @@ -155,9 +155,9 @@ namespace CarpetLib { // Loop over region #pragma omp parallel for - for (ptrdiff_t k=0; k<regkext; ++k) { - for (ptrdiff_t j=0; j<regjext; ++j) { - for (ptrdiff_t i=0; i<regiext; ++i) { + for (int k=0; k<regkext; ++k) { + for (int j=0; j<regjext; ++j) { + for (int i=0; i<regiext; ++i) { T const s1 = src1 [SRCIND3(i, j, k)]; T const s2 = src2 [SRCIND3(i, j, k)]; diff --git a/Carpet/CarpetLib/src/restrict_3d_rf2.cc b/Carpet/CarpetLib/src/restrict_3d_rf2.cc index e64c4f6e5..26031f304 100644 --- a/Carpet/CarpetLib/src/restrict_3d_rf2.cc +++ b/Carpet/CarpetLib/src/restrict_3d_rf2.cc @@ -102,9 +102,9 @@ namespace CarpetLib { // Loop over coarse region #pragma omp parallel for - for (ptrdiff_t k=0; k<regkext; ++k) { - for (ptrdiff_t j=0; j<regjext; ++j) { - for (ptrdiff_t i=0; i<regiext; ++i) { + for (int k=0; k<regkext; ++k) { + for (int j=0; j<regjext; ++j) { + for (int i=0; i<regiext; ++i) { dst [DSTIND3(i, j, k)] = src [SRCIND3(2*i, 2*j, 2*k)]; diff --git a/Carpet/LoopControl/src/lc_hill.c b/Carpet/LoopControl/src/lc_hill.c index f24b0efae..6ab44dba8 100644 --- a/Carpet/LoopControl/src/lc_hill.c +++ b/Carpet/LoopControl/src/lc_hill.c @@ -34,9 +34,9 @@ drand (void) static int -irand (int const imax) +irand (int const imaxval) { - return rand() / (RAND_MAX + 1.0) * imax; + return rand() / (RAND_MAX + 1.0) * imaxval; } diff --git a/Carpet/LoopControl/src/loopcontrol.c b/Carpet/LoopControl/src/loopcontrol.c index 6f420e0c1..c03cbf452 100644 --- a/Carpet/LoopControl/src/loopcontrol.c +++ b/Carpet/LoopControl/src/loopcontrol.c @@ -295,10 +295,8 @@ lc_stattime_init (lc_stattime_t * restrict const lt, /* Append to loop statistics list */ -/* _Pragma ("omp critical") { */ - lt->next = ls->stattime_list; - ls->stattime_list = lt; -/* } */ + lt->next = ls->stattime_list; + ls->stattime_list = lt; } lc_stattime_t * @@ -450,10 +448,8 @@ lc_statset_init (lc_statset_t * restrict const ls, ls->time_calc_sum2 = 0.0; /* Append to loop statistics list */ -/* _Pragma ("omp critical") { */ - ls->next = lm->statset_list; - lm->statset_list = ls; -/* } */ + ls->next = lm->statset_list; + lm->statset_list = ls; } lc_statset_t * @@ -510,21 +506,34 @@ lc_statset_find_create (lc_statmap_t * restrict const lm, /* Initialise loop statistics */ void -lc_statmap_init (lc_statmap_t * restrict const lm, +lc_statmap_init (int * restrict const initialised, + lc_statmap_t * restrict const lm, char const * restrict const name) { /* Check arguments */ + assert (initialised); assert (lm); - /* Set name */ - lm->name = strdup (name); - - /* Initialise list */ - lm->statset_list = NULL; +#pragma omp single + { + + /* Set name */ + lm->name = strdup (name); + + /* Initialise list */ + lm->statset_list = NULL; + + /* Append to loop statistics list */ + lm->next = lc_statmap_list; + lc_statmap_list = lm; + + } - /* Append to loop statistics list */ - lm->next = lc_statmap_list; - lc_statmap_list = lm; +#pragma omp single + { + /* Set this flag only after initialising */ + * initialised = 1; + } } @@ -563,7 +572,8 @@ lc_control_init (lc_control_t * restrict const lc, lc_statset_t * restrict ls; - _Pragma ("omp single copyprivate (ls)") { +#pragma omp single copyprivate (ls) + { /* Get number of threads */ int const num_threads = omp_get_num_threads(); @@ -579,7 +589,8 @@ lc_control_init (lc_control_t * restrict const lc, lc_stattime_t * restrict lt; - _Pragma ("omp single copyprivate (lt)") { +#pragma omp single copyprivate (lt) + { lc_state_t state; @@ -778,7 +789,8 @@ lc_control_finish (lc_control_t * restrict const lc) lc_statset_t * restrict const ls = lc->statset; int ignore_iteration; - _Pragma ("omp single copyprivate (ignore_iteration)") { +#pragma omp single copyprivate (ignore_iteration) + { DECLARE_CCTK_PARAMETERS; ignore_iteration = ignore_initial_overhead && lt->time_count == 0.0; } @@ -798,7 +810,8 @@ lc_control_finish (lc_control_t * restrict const lc) double const time_calc_sum2 = pow (time_calc_sum, 2); /* Update statistics */ - _Pragma ("omp critical") { +#pragma omp critical + { lt->time_count += 1.0; lt->time_setup_sum += time_setup_sum; @@ -816,21 +829,24 @@ lc_control_finish (lc_control_t * restrict const lc) ls->time_calc_sum2 += time_calc_sum2; } - _Pragma ("omp master") { +#pragma omp master + { lt->last_updated = time_calc_end; } - _Pragma ("omp barrier"); +#pragma omp barrier { DECLARE_CCTK_PARAMETERS; if (use_simulated_annealing) { - _Pragma ("omp single") { +#pragma omp single + { lc_auto_finish (ls, lt); } } if (use_random_restart_hill_climbing) { - _Pragma ("omp single") { +#pragma omp single + { lc_hill_finish (ls, lt); } } @@ -912,11 +928,12 @@ lc_printstats (CCTK_ARGUMENTS) CCTK_FCALL void -CCTK_FNAME (lc_statmap_init) (lc_statmap_t * restrict const lm, +CCTK_FNAME (lc_statmap_init) (int * restrict const initialised, + lc_statmap_t * restrict const lm, ONE_FORTSTRING_ARG) { ONE_FORTSTRING_CREATE (name); - lc_statmap_init (lm, name); + lc_statmap_init (initialised, lm, name); free (name); } diff --git a/Carpet/LoopControl/src/loopcontrol.h b/Carpet/LoopControl/src/loopcontrol.h index 5d640c3b6..17eb8a8cc 100644 --- a/Carpet/LoopControl/src/loopcontrol.h +++ b/Carpet/LoopControl/src/loopcontrol.h @@ -10,6 +10,10 @@ #include <cctk_Arguments.h> +#ifdef __cplusplus +extern "C" { +#endif + #if 0 @@ -247,7 +251,8 @@ lc_max (int const i, int const j) void -lc_statmap_init (lc_statmap_t * restrict ls, +lc_statmap_init (int * restrict initialised, + lc_statmap_t * restrict ls, char const * restrict name); void @@ -264,16 +269,10 @@ lc_control_finish (lc_control_t * restrict lc); #define LC_LOOP3(name, i,j,k, imin,jmin,kmin, imax,jmax,kmax, ilsh,jlsh,klsh) \ do { \ - static lc_statmap_t lc_lm; \ static int lc_initialised = 0; \ + static lc_statmap_t lc_lm; \ if (! lc_initialised) { \ - _Pragma ("omp single") { \ - lc_statmap_init (& lc_lm, #name); \ - } \ - _Pragma ("omp single") { \ - /* Set this flag only after initialising */ \ - lc_initialised = 1; \ - } \ + lc_statmap_init (& lc_initialised, & lc_lm, #name); \ } \ lc_control_t lc_lc; \ lc_control_init (& lc_lc, & lc_lm, \ @@ -315,6 +314,10 @@ lc_control_finish (lc_control_t * restrict lc); void lc_printstats (CCTK_ARGUMENTS); +#ifdef __cplusplus +} +#endif + #endif |