aboutsummaryrefslogtreecommitdiff
path: root/Carpet/LoopControl
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2011-07-05 09:15:12 -0400
committerBarry Wardell <barry.wardell@gmail.com>2011-12-14 19:54:45 +0000
commit5ce764af71f43b21ad94db223058d4ca5896c9fe (patch)
tree0771445967935482f2bf56293accdd6449cc6a27 /Carpet/LoopControl
parentff9f188dad033ae37ed447245be8fd38a654aff9 (diff)
LoopControl: Make selftest conditional on a parameter
Make selftest conditional on a new parameter do_selftest. Use atomic OpenMP statements in selftest.
Diffstat (limited to 'Carpet/LoopControl')
-rw-r--r--Carpet/LoopControl/interface.ccl2
-rw-r--r--Carpet/LoopControl/param.ccl7
-rw-r--r--Carpet/LoopControl/schedule.ccl23
-rw-r--r--Carpet/LoopControl/src/lc_selftest.c3
4 files changed, 24 insertions, 11 deletions
diff --git a/Carpet/LoopControl/interface.ccl b/Carpet/LoopControl/interface.ccl
index e3c1e81c9..c0362e5fa 100644
--- a/Carpet/LoopControl/interface.ccl
+++ b/Carpet/LoopControl/interface.ccl
@@ -8,7 +8,7 @@ USES INCLUDE HEADER: vectors.h
-CCTK_REAL selftest TYPE=gf
+CCTK_REAL selftest TYPE=gf TAGS='prolongation="none"'
{
var1 var2
} "Self-test variables"
diff --git a/Carpet/LoopControl/param.ccl b/Carpet/LoopControl/param.ccl
index a21339583..005202538 100644
--- a/Carpet/LoopControl/param.ccl
+++ b/Carpet/LoopControl/param.ccl
@@ -33,10 +33,15 @@ BOOLEAN debug "Output debug information" STEERABLE=always
{
} "no"
-BOOLEAN check_type_sizes "check that Fortran and C types match at Startup"
+BOOLEAN check_type_sizes "Check that Fortran and C types match"
{
} "yes"
+BOOLEAN do_selftest "Perform some self-tests"
+{
+} "no"
+
+
#################
# Thread topology
diff --git a/Carpet/LoopControl/schedule.ccl b/Carpet/LoopControl/schedule.ccl
index c8eb1233c..c1b74863a 100644
--- a/Carpet/LoopControl/schedule.ccl
+++ b/Carpet/LoopControl/schedule.ccl
@@ -8,16 +8,21 @@ if (check_type_sizes) {
} "Check that sizes of control structures are identical in C and Fortran"
}
-SCHEDULE lc_selftest AT basegrid
-{
- LANG: C
+if (do_selftest) {
STORAGE: selftest
-} "Perform some self-checks"
-SCHEDULE lc_selftest AT postregrid
-{
- LANG: C
- STORAGE: selftest
-} "Perform some self-checks"
+
+ SCHEDULE lc_selftest AT basegrid
+ {
+ LANG: C
+ OPTIONS: global loop-local
+ } "Perform some self-checks"
+
+ SCHEDULE lc_selftest AT postregrid
+ {
+ LANG: C
+ OPTIONS: global loop-local
+ } "Perform some self-checks"
+}
if (printstats) {
SCHEDULE lc_printstats_analysis AT analysis
diff --git a/Carpet/LoopControl/src/lc_selftest.c b/Carpet/LoopControl/src/lc_selftest.c
index 0db494f40..d80421af6 100644
--- a/Carpet/LoopControl/src/lc_selftest.c
+++ b/Carpet/LoopControl/src/lc_selftest.c
@@ -45,6 +45,7 @@ void lc_selftest (CCTK_ARGUMENTS)
vector_size)
{
int const ind3d = CCTK_GFINDEX3D(cctkGH, i,j,k);
+#pragma omp atomic
++ var1[ind3d];
} LC_ENDLOOP3VEC(lc_selftest1);
}
@@ -66,6 +67,7 @@ void lc_selftest (CCTK_ARGUMENTS)
vector_size)
{
int const ind3d = CCTK_GFINDEX3D(cctkGH, i,j,k);
+#pragma omp atomic
++ var2[ind3d];
} LC_ENDLOOP3VEC(lc_selftest2a);
@@ -95,6 +97,7 @@ void lc_selftest (CCTK_ARGUMENTS)
vector_size)
{
int const ind3d = CCTK_GFINDEX3D(cctkGH, i,j,k);
+#pragma omp atomic
++ var2[ind3d];
} LC_ENDLOOP3VEC(lc_selftest2b);
}