]> git.unchartedbackwaters.co.uk Git - francis/excafe_benchmarks.git/commitdiff
Refactor for benchmarking Laplacian.
authorFrancis Russell <francis@unchartedbackwaters.co.uk>
Sun, 24 Jun 2012 16:32:30 +0000 (17:32 +0100)
committerFrancis Russell <francis@unchartedbackwaters.co.uk>
Sun, 24 Jun 2012 16:32:30 +0000 (17:32 +0100)
18 files changed:
.gitignore
benchmark.mk.in [new file with mode: 0644]
common/benchmark.cpp.tmpl [moved from mass_matrix_2d/benchmark.cpp.tmpl with 99% similarity]
common/benchmark.cpp.tmpl.old [moved from mass_matrix_2d/benchmark.cpp.tmpl.old with 98% similarity]
common/generate_ufl_rules.sh [moved from mass_matrix_2d/generate_ufl_rules.sh with 76% similarity]
configure.ac
laplacian_2d/Makefile [moved from mass_matrix_2d/Makefile.in with 58% similarity]
laplacian_2d/laplacian_f0.tmpl [new file with mode: 0644]
laplacian_2d/laplacian_f1.tmpl [new file with mode: 0644]
laplacian_2d/laplacian_f2.tmpl [new file with mode: 0644]
laplacian_2d/laplacian_f3.tmpl [new file with mode: 0644]
laplacian_2d/laplacian_f4.tmpl [new file with mode: 0644]
mass_matrix_2d/Makefile [new file with mode: 0644]
scripts/count_instructions [moved from mass_matrix_2d/count_instructions with 100% similarity]
scripts/make_table_norms [moved from mass_matrix_2d/make_table_norms with 93% similarity]
scripts/make_table_performance [moved from mass_matrix_2d/make_table_performance with 94% similarity]
scripts/run_benchmarks [moved from mass_matrix_2d/run_benchmarks with 100% similarity]
scripts/set_scaling_mode [moved from mass_matrix_2d/set_scaling_mode with 100% similarity]

index 586dec5b9e269985d6d915fa5c241b587f094854..f0fb820c308b76816023022bdf351007e741d9b3 100644 (file)
@@ -2,8 +2,8 @@
 /config.log
 /config.status
 /configure
+/benchmark.mk
 /autom4te.cache/
-/mass_matrix_2d/Makefile
 /mass_matrix_2d/ufl_rules.mk
 /mass_matrix_2d/benchmark_f?_p?_q?
 /mass_matrix_2d/benchmark_f?_p?_q?.cpp
 /mass_matrix_2d/mass_matrix_f?_p?_q?_tensor.h
 /mass_matrix_2d/mass_matrix_f?_p?_q?_quadrature.h
 /mass_matrix_2d/mass_matrix_f?_p?_q?_excafe.h
+/laplacian_2d/ufl_rules.mk
+/laplacian_2d/benchmark_f?_p?_q?
+/laplacian_2d/benchmark_f?_p?_q?.cpp
+/laplacian_2d/laplacian_f?_p?_q?.cpp
+/laplacian_2d/laplacian_f?_p?_q?.ufl
+/laplacian_2d/laplacian_f?_p?_q?_tensor.ufl
+/laplacian_2d/laplacian_f?_p?_q?_quadrature.ufl
+/laplacian_2d/laplacian_f?_p?_q?_tensor.h
+/laplacian_2d/laplacian_f?_p?_q?_quadrature.h
+/laplacian_2d/laplacian_f?_p?_q?_excafe.h
diff --git a/benchmark.mk.in b/benchmark.mk.in
new file mode 100644 (file)
index 0000000..81eb6bf
--- /dev/null
@@ -0,0 +1,23 @@
+default: tractable-benchmarks
+
+include ./ufl_rules.mk
+
+ufl_rules.mk: ../common/generate_ufl_rules.sh
+       ./$^ ${MAT_TYPE} > $@ 
+
+EXCAFE_LOCATION=${HOME}/excafe
+MASS_MATRIX_2D_GENERATOR=${EXCAFE_LOCATION}/mass_matrix_generator_2d/generator
+
+CXXFLAGS=@CXXFLAGS@
+LDFLAGS=@LDFLAGS@
+
+CXXFLAGS+= @BOOST_CPPFLAGS@ -I../ufc -O3
+LDFLAGS+= @BOOST_LDFLAGS@ @BOOST_SERIALIZATION_LIB@ @APR1_LIBS@ -lm -lpapi
+
+all-benchmarks: ${ALL_EXECUTABLES}
+
+clean:
+       rm -f *.py ${CLEAN_FILES}
+
+.PHONY: default tractable-benchmarks all-benchmarks clean
+.SECONDARY: ${INTERMEDIATES}
similarity index 99%
rename from mass_matrix_2d/benchmark.cpp.tmpl
rename to common/benchmark.cpp.tmpl
index e8e5f1635d6d0059cec7512225224666752e444a..87a5d726819fba894cf585979b3247b9c6397781 100644 (file)
@@ -27,7 +27,7 @@
 #include <papi.h>
 
 #define COMMON_NAME(nf, p, q, rep) X_COMMON_NAME(nf, p, q, rep)
-#define X_COMMON_NAME(nf, p, q, rep) mass_matrix_f ## nf ## _p ## p ## _q ## q ## _ ## rep
+`#'define X_COMMON_NAME(nf, p, q, rep) MAT_TYPE ## _f ## nf ## _p ## p ## _q ## q ## _ ## rep
 
 `#'define COMMON_NAME_TENSOR     COMMON_NAME(NF_VALUE, P_VALUE, Q_VALUE, tensor)
 `#'define COMMON_NAME_QUADRATURE COMMON_NAME(NF_VALUE, P_VALUE, Q_VALUE, quadrature)
similarity index 98%
rename from mass_matrix_2d/benchmark.cpp.tmpl.old
rename to common/benchmark.cpp.tmpl.old
index edc3ef87ed16f0b5e6d45f36367870c9d0a4a287..150c5f8e3dc500d5dffe39718eba75fa809db092 100644 (file)
@@ -21,7 +21,7 @@
 #include <papi.h>
 
 #define COMMON_NAME(nf, p, q, rep) X_COMMON_NAME(nf, p, q, rep)
-#define X_COMMON_NAME(nf, p, q, rep) mass_matrix_f ## nf ## _p ## p ## _q ## q ## _ ## rep
+`#'define X_COMMON_NAME(nf, p, q, rep) MAT_TYPE ## _f ## nf ## _p ## p ## _q ## q ## _ ## rep
 
 `#'define COMMON_NAME_TENSOR     COMMON_NAME(NF_VALUE, P_VALUE, Q_VALUE, tensor)
 `#'define COMMON_NAME_QUADRATURE COMMON_NAME(NF_VALUE, P_VALUE, Q_VALUE, quadrature)
similarity index 76%
rename from mass_matrix_2d/generate_ufl_rules.sh
rename to common/generate_ufl_rules.sh
index aa32fa1b397c56451a64bd76332a254ea2389931..b89cdb92bb826c4f9bc828b3938750e56e7bb325 100755 (executable)
@@ -4,21 +4,22 @@ PROGRAMS=""
 CLEAN_FILES=""
 INTERMEDIATES=""
 ECHO="/bin/echo"
+MAT_TYPE=${1:?}
 
 for NF in 1 2 3 4; do
   for P in 1 2 3; do
     for Q in 1 2 3 4; do
       OPTIONS="f${NF}_p${P}_q${Q}"
 
-      BENCHMARK_TEMPLATE="benchmark.cpp.tmpl"
+      BENCHMARK_TEMPLATE="../common/benchmark.cpp.tmpl"
       BENCHMARK_EXECUTABLE="benchmark_${OPTIONS}"
       BENCHMARK_SOURCE="benchmark_${OPTIONS}.cpp"
 
       PROGRAMS="${BENCHMARK_EXECUTABLE} ${PROGRAMS}"
       
       # Generate UFL headers
-      TEMPLATE_FILE="mass_matrix_f${NF}.tmpl"
-      UFL_FILE="mass_matrix_${OPTIONS}.ufl"
+      TEMPLATE_FILE="${MAT_TYPE}_f${NF}.tmpl"
+      UFL_FILE="${MAT_TYPE}_${OPTIONS}.ufl"
       INTERMEDIATES="${INTERMEDIATES} ${UFL_FILE}"
 
       TEMPLATE_GENERATED="${UFL_FILE} ${BENCHMARK_SOURCE}"
@@ -29,7 +30,7 @@ for NF in 1 2 3 4; do
       FFC_BUILT_SOURCES=""
       for REPRESENTATION in tensor quadrature; do
         REP_SPECIFIC_OPTIONS="${OPTIONS}_${REPRESENTATION}"
-        REP_SPECIFIC_UFL_FILE="mass_matrix_${REP_SPECIFIC_OPTIONS}.ufl"
+        REP_SPECIFIC_UFL_FILE="${MAT_TYPE}_${REP_SPECIFIC_OPTIONS}.ufl"
         TEMPLATE_GENERATED="${TEMPLATE_GENERATED} ${REP_SPECIFIC_UFL_FILE}"
         INTERMEDIATES="${INTERMEDIATES} ${REP_SPECIFIC_UFL_FILE}"
 
@@ -37,7 +38,7 @@ for NF in 1 2 3 4; do
         ${ECHO} "${REP_SPECIFIC_UFL_FILE}: ${UFL_FILE}"
         ${ECHO} -e "\tcp \$^ \$@"
 
-        FFC_HEADER="mass_matrix_${REP_SPECIFIC_OPTIONS}.h"
+        FFC_HEADER="${MAT_TYPE}_${REP_SPECIFIC_OPTIONS}.h"
         FFC_BUILT_SOURCES="${FFC_HEADER} ${FFC_BUILT_SOURCES}"
 
         ${ECHO} "${FFC_HEADER}: ${REP_SPECIFIC_UFL_FILE}"
@@ -45,14 +46,14 @@ for NF in 1 2 3 4; do
       done
 
       # Generate Excafe headers
-      EXCAFE_HEADER="mass_matrix_${OPTIONS}_excafe.h"
+      EXCAFE_HEADER="${MAT_TYPE}_${OPTIONS}_excafe.h"
       EXCAFE_BUILT_SOURCES="${EXCAFE_HEADER}"
       ${ECHO} "${EXCAFE_HEADER}:"
-      ${ECHO} -e "\t\${MASS_MATRIX_2D_GENERATOR} mass_matrix ${NF} ${P} ${Q} ${EXCAFE_HEADER}"
+      ${ECHO} -e "\t\${MASS_MATRIX_2D_GENERATOR} ${MAT_TYPE} ${NF} ${P} ${Q} ${EXCAFE_HEADER}"
 
       # Generate dependencies for benchmark executable
       ${ECHO} "${BENCHMARK_SOURCE}: ${BENCHMARK_TEMPLATE}"
-      ${ECHO} -e "\tm4 -DNF_VALUE=${NF} -DP_VALUE=${P} -DQ_VALUE=${Q} \$^ > \$@"
+      ${ECHO} -e "\tm4 -DMAT_TYPE=${MAT_TYPE} -DNF_VALUE=${NF} -DP_VALUE=${P} -DQ_VALUE=${Q} \$^ > \$@"
       ${ECHO} "${BENCHMARK_EXECUTABLE}: ${BENCHMARK_SOURCE} ${FFC_BUILT_SOURCES} ${EXCAFE_BUILT_SOURCES}"
       ${ECHO} -e '\t${CXX} ${CXXFLAGS} ${LDFLAGS} $< -o $@'
 
@@ -65,5 +66,5 @@ for NF in 1 2 3 4; do
 done
 
 ${ECHO} "ALL_EXECUTABLES = ${PROGRAMS}"
-${ECHO} "CLEAN_FILES=${CLEAN_FILES}"
-${ECHO} "INTERMEDIATES=${INTERMEDIATES}"
+${ECHO} "CLEAN_FILES = ${CLEAN_FILES}"
+${ECHO} "INTERMEDIATES = ${INTERMEDIATES}"
index c36d89afd2d23e87ae0b27a731bd09820d5925c0..4ec42131fac8aa89bd6166718afd05ade4f43a24 100644 (file)
@@ -46,5 +46,5 @@ AC_HEADER_STDBOOL
 AC_TYPE_SIZE_T
 AC_TYPE_UINT32_T
 
-AC_CONFIG_FILES([mass_matrix_2d/Makefile])
+AC_CONFIG_FILES([benchmark.mk])
 AC_OUTPUT
similarity index 58%
rename from mass_matrix_2d/Makefile.in
rename to laplacian_2d/Makefile
index 8e1473a0d7e19e41b772711c4b49a67ec04f546f..0cb63a1ebf3291d270ec264c5bddd9eebd4180c3 100644 (file)
@@ -1,18 +1,5 @@
-default: tractable-benchmarks
-
-include ./ufl_rules.mk
-
-ufl_rules.mk: generate_ufl_rules.sh
-       ./$^ > $@ 
-
-EXCAFE_LOCATION=${HOME}/excafe
-MASS_MATRIX_2D_GENERATOR=${EXCAFE_LOCATION}/mass_matrix_generator_2d/generator
-
-CXXFLAGS=@CXXFLAGS@
-LDFLAGS=@LDFLAGS@
-
-CXXFLAGS+= @BOOST_CPPFLAGS@ -I../ufc -O3
-LDFLAGS+= @BOOST_LDFLAGS@ @BOOST_SERIALIZATION_LIB@ @APR1_LIBS@ -lm -lpapi
+MAT_TYPE="laplacian"
+include ../benchmark.mk
 
 tractable-benchmarks: benchmark_f1_p1_q1 benchmark_f1_p2_q3 \
 benchmark_f2_p1_q1 benchmark_f2_p2_q3 benchmark_f3_p1_q1 \
@@ -27,11 +14,3 @@ benchmark_f2_p2_q1 benchmark_f2_p3_q3 benchmark_f3_p2_q1 \
 benchmark_f4_p1_q4 benchmark_f1_p2_q2 benchmark_f1_p3_q4 \
 benchmark_f2_p2_q2 benchmark_f2_p3_q4 benchmark_f3_p2_q2 \
 benchmark_f4_p2_q1
-
-all-benchmarks: ${ALL_EXECUTABLES}
-
-clean:
-       rm -f *.py ${CLEAN_FILES}
-
-.PHONY: default tractable-benchmarks all-benchmarks clean
-.SECONDARY: ${INTERMEDIATES}
diff --git a/laplacian_2d/laplacian_f0.tmpl b/laplacian_2d/laplacian_f0.tmpl
new file mode 100644 (file)
index 0000000..6365e0a
--- /dev/null
@@ -0,0 +1,6 @@
+element   = FiniteElement("Lagrange", "triangle", Q_VALUE)
+
+v = TestFunction(element)
+u = TrialFunction(element)
+
+a = dot(grad(v), grad(u))*dx
diff --git a/laplacian_2d/laplacian_f1.tmpl b/laplacian_2d/laplacian_f1.tmpl
new file mode 100644 (file)
index 0000000..2430eae
--- /dev/null
@@ -0,0 +1,9 @@
+element   = FiniteElement("Lagrange", "triangle", Q_VALUE)
+element_f = FiniteElement("Lagrange", "triangle", P_VALUE)
+
+v = TestFunction(element)
+u = TrialFunction(element)
+
+f = Coefficient(element_f)
+
+a = f*dot(grad(v), grad(u))*dx
diff --git a/laplacian_2d/laplacian_f2.tmpl b/laplacian_2d/laplacian_f2.tmpl
new file mode 100644 (file)
index 0000000..3daaa36
--- /dev/null
@@ -0,0 +1,10 @@
+element   = FiniteElement("Lagrange", "triangle", Q_VALUE)
+element_f = FiniteElement("Lagrange", "triangle", P_VALUE)
+
+v = TestFunction(element)
+u = TrialFunction(element)
+
+f = Coefficient(element_f)
+g = Coefficient(element_f)
+
+a = f*g*dot(grad(v), grad(u))*dx
diff --git a/laplacian_2d/laplacian_f3.tmpl b/laplacian_2d/laplacian_f3.tmpl
new file mode 100644 (file)
index 0000000..f376aaa
--- /dev/null
@@ -0,0 +1,11 @@
+element   = FiniteElement("Lagrange", "triangle", Q_VALUE)
+element_f = FiniteElement("Lagrange", "triangle", P_VALUE)
+
+v = TestFunction(element)
+u = TrialFunction(element)
+
+f = Coefficient(element_f)
+g = Coefficient(element_f)
+h = Coefficient(element_f)
+
+a = f*g*h*dot(grad(v), grad(u))*dx
diff --git a/laplacian_2d/laplacian_f4.tmpl b/laplacian_2d/laplacian_f4.tmpl
new file mode 100644 (file)
index 0000000..f5994eb
--- /dev/null
@@ -0,0 +1,12 @@
+element   = FiniteElement("Lagrange", "triangle", Q_VALUE)
+element_f = FiniteElement("Lagrange", "triangle", P_VALUE)
+
+v = TestFunction(element)
+u = TrialFunction(element)
+
+f = Coefficient(element_f)
+g = Coefficient(element_f)
+h = Coefficient(element_f)
+i = Coefficient(element_f)
+
+a = f*g*h*i*dot(grad(v), grad(u))*dx
diff --git a/mass_matrix_2d/Makefile b/mass_matrix_2d/Makefile
new file mode 100644 (file)
index 0000000..98901c7
--- /dev/null
@@ -0,0 +1,16 @@
+MAT_TYPE="mass_matrix"
+include ../benchmark.mk
+
+tractable-benchmarks: benchmark_f1_p1_q1 benchmark_f1_p2_q3 \
+benchmark_f2_p1_q1 benchmark_f2_p2_q3 benchmark_f3_p1_q1 \
+benchmark_f3_p2_q3 benchmark_f1_p1_q2 benchmark_f1_p2_q4 \
+benchmark_f2_p1_q2 benchmark_f2_p2_q4 benchmark_f3_p1_q2 \
+benchmark_f4_p1_q1 benchmark_f1_p1_q3 benchmark_f1_p3_q1 \
+benchmark_f2_p1_q3 benchmark_f2_p3_q1 benchmark_f3_p1_q3 \
+benchmark_f4_p1_q2 benchmark_f1_p1_q4 benchmark_f1_p3_q2 \
+benchmark_f2_p1_q4 benchmark_f2_p3_q2 benchmark_f3_p1_q4 \
+benchmark_f4_p1_q3 benchmark_f1_p2_q1 benchmark_f1_p3_q3 \
+benchmark_f2_p2_q1 benchmark_f2_p3_q3 benchmark_f3_p2_q1 \
+benchmark_f4_p1_q4 benchmark_f1_p2_q2 benchmark_f1_p3_q4 \
+benchmark_f2_p2_q2 benchmark_f2_p3_q4 benchmark_f3_p2_q2 \
+benchmark_f4_p2_q1
similarity index 93%
rename from mass_matrix_2d/make_table_norms
rename to scripts/make_table_norms
index 7ce33255c645e1043468a1f08db50570e0adecd9..f51e975a6269aa39e8e2e759e4fddbbc869bc632 100755 (executable)
@@ -2,6 +2,7 @@
 set -e
 
 BENCHMARK_NAME="benchmark"
+NAME="$(basename $(pwd) | sed s/_//g | sed s/2/two/g)"
 trap "rm -f ${TIME_FILE}" EXIT HUP INT QUIT TERM
 
 NORM_PREFIX="L2-norm between quadrature and"
@@ -10,7 +11,7 @@ NP=3
 NQ=4
 NF=4
 
-echo '\newcommand{\massmatrixtwodresultsnorms}{'
+echo "\\newcommand{\\${NAME}resultsnorms}{"
 echo -n '\begin{tabularx}{1.1\textwidth}{c|'
 for F in $(seq 1 ${NF}); do
   echo -n 'XX|'
similarity index 94%
rename from mass_matrix_2d/make_table_performance
rename to scripts/make_table_performance
index 5fcfb30adadfbd274aaaf755624434cd42589d5a..0ff8659e73ad64c98a393336bad11069524a6fe6 100755 (executable)
@@ -2,6 +2,7 @@
 set -e
 
 BENCHMARK_NAME="benchmark"
+NAME="$(basename $(pwd) | sed s/_//g | sed s/2/two/g)"
 TIME_FILE="$(mktemp)"
 trap "rm -f ${TIME_FILE}" EXIT HUP INT QUIT TERM
 
@@ -21,7 +22,7 @@ else
   COMPILER="unknown"
 fi
 
-echo "\newcommand{\massmatrixtwodresults${COMPILER}flops}{"
+echo "\newcommand{\\${NAME}results${COMPILER}flops}{"
 echo -n '\begin{tabularx}{1.1\textwidth}{c|' | tee -a ${TIME_FILE}
 for F in $(seq 1 ${NF}); do
   echo -n 'XXXX|' | tee -a ${TIME_FILE}
@@ -84,6 +85,6 @@ done
 echo '\end{tabularx}' | tee -a ${TIME_FILE}
 echo "}"
 
-echo "\newcommand{\massmatrixtwodresults${COMPILER}times}{"
+echo "\newcommand{\\${NAME}results${COMPILER}times}{"
 cat ${TIME_FILE}
 echo "}"