aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2011-07-05 09:15:12 -0400
committerErik Schnetter <schnetter@cct.lsu.edu>2011-07-05 09:15:12 -0400
commita2ea446df347d08a4c45ed1baed70b40aab1197f (patch)
treed2738359e76666f32e65f005558e91f796419339
parent31abe3cdd9e78da3be4fb35732668b121fd610c6 (diff)
LoopControl: Make selftest conditional on a parameter
Make selftest conditional on a new parameter do_selftest. Use atomic OpenMP statements in selftest.
-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);
}