From 9926a30de581e7794703028a6d8eb86120391116 Mon Sep 17 00:00:00 2001
From: Dominic Kempf <dominic.kempf@iwr.uni-heidelberg.de>
Date: Mon, 9 Oct 2017 14:19:05 +0200
Subject: [PATCH] Write out the instrumentation level

---
 dune/perftool/common/timer_chrono.hh          | 20 +++++++++----------
 dune/perftool/common/timer_tsc.hh             | 20 +++++++++----------
 python/dune/perftool/generation/cpp.py        |  2 +-
 .../dune/perftool/pdelab/driver/__init__.py   |  2 +-
 python/dune/perftool/pdelab/driver/solve.py   |  2 +-
 python/dune/perftool/pdelab/driver/timings.py |  6 +++---
 6 files changed, 26 insertions(+), 26 deletions(-)

diff --git a/dune/perftool/common/timer_chrono.hh b/dune/perftool/common/timer_chrono.hh
index 6e2098a1..91fee78e 100644
--- a/dune/perftool/common/timer_chrono.hh
+++ b/dune/perftool/common/timer_chrono.hh
@@ -79,35 +79,35 @@
 
 #ifdef ENABLE_COUNTER
 
-#define DUMP_TIMER(name,os,reset)\
+#define DUMP_TIMER(level,name,os,reset)\
   if (HP_TIMER_ELAPSED(name) > 1e-12) \
-    os << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
+    os << #level << " " << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
   HP_TIMER_OPCOUNTERS(name).reportOperations(os,ident,#name,reset);
 
-#define DUMP_AND_ACCUMULATE_TIMER(name,os,reset,time,ops)  \
+#define DUMP_AND_ACCUMULATE_TIMER(level,name,os,reset,time,ops)  \
   if (HP_TIMER_ELAPSED(name) > 1e-12) \
-    os << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
+    os << #level << " " << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
   time += HP_TIMER_ELAPSED(name); \
   ops += HP_TIMER_OPCOUNTERS(name); \
   HP_TIMER_OPCOUNTERS(name).reportOperations(os,ident,#name,reset);
 
 #elif defined ENABLE_HP_TIMERS
 
-#define DUMP_TIMER(name,os,reset)                       \
+#define DUMP_TIMER(level,name,os,reset)                       \
   if (HP_TIMER_ELAPSED(name) > 1e-12) \
-    os << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
+    os << #level << " " << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
   if (reset) HP_TIMER_RESET(name);
 
-#define DUMP_AND_ACCUMULATE_TIMER(name,os,reset,time,ops)  \
+#define DUMP_AND_ACCUMULATE_TIMER(level,name,os,reset,time,ops)  \
   if (HP_TIMER_ELAPSED(name) > 1e-12) \
-    os << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
+    os << #level << " " << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \
   time += HP_TIMER_ELAPSED(name); \
   if (reset) HP_TIMER_RESET(name);
 
 #else
 
-#define DUMP_TIMER(name,os,reset)
-#define DUMP_AND_ACCUMULATE_TIMER(name,os,reset,time,ops)
+#define DUMP_TIMER(level,name,os,reset)
+#define DUMP_AND_ACCUMULATE_TIMER(level,name,os,reset,time,ops)
 
 #endif
 
diff --git a/dune/perftool/common/timer_tsc.hh b/dune/perftool/common/timer_tsc.hh
index a893fdae..3089ec3f 100644
--- a/dune/perftool/common/timer_tsc.hh
+++ b/dune/perftool/common/timer_tsc.hh
@@ -77,35 +77,35 @@
 
 #ifdef ENABLE_COUNTER
 
-#define DUMP_TIMER(name,os,reset)\
+#define DUMP_TIMER(level,name,os,reset)\
   if (HP_TIMER_DURATION(name) > 1e-12) \
-    os << ident << " " << #name << " time " << Dune::PDELab::TSC::seconds(HP_TIMER_DURATION(name)) << std::endl; \
+    os << #level << " " << ident << " " << #name << " time " << Dune::PDELab::TSC::seconds(HP_TIMER_DURATION(name)) << std::endl; \
   HP_TIMER_OPCOUNTERS(name).reportOperations(os,ident,#name,reset);
 
-#define DUMP_AND_ACCUMULATE_TIMER(name,os,reset,time,ops)  \
+#define DUMP_AND_ACCUMULATE_TIMER(level,name,os,reset,time,ops)  \
   if (HP_TIMER_DURATION(name) > 1e-12) \
-    os << ident << " " << #name << " time " << Dune::PDELab::TSC::seconds(HP_TIMER_DURATION(name)) << std::endl; \
+    os << #level << " " << ident << " " << #name << " time " << Dune::PDELab::TSC::seconds(HP_TIMER_DURATION(name)) << std::endl; \
   time += HP_TIMER_DURATION(name); \
   ops += HP_TIMER_OPCOUNTERS(name); \
   HP_TIMER_OPCOUNTERS(name).reportOperations(os,ident,#name,reset);
 
 #elif defined ENABLE_HP_TIMERS
 
-#define DUMP_TIMER(name,os,reset)                       \
+#define DUMP_TIMER(level, name,os,reset)                       \
   if (HP_TIMER_DURATION(name) > 1e-12) \
-    os << ident << " " << #name << " time " << Dune::PDELab::TSC::seconds(HP_TIMER_DURATION(name)) << std::endl; \
+    os << #level << " " << ident << " " << #name << " time " << Dune::PDELab::TSC::seconds(HP_TIMER_DURATION(name)) << std::endl; \
   if (reset) HP_TIMER_RESET(name);
 
-#define DUMP_AND_ACCUMULATE_TIMER(name,os,reset,time,ops)  \
+#define DUMP_AND_ACCUMULATE_TIMER(level, name,os,reset,time,ops)  \
   if (HP_TIMER_DURATION(name) > 1e-12) \
-    os << ident << " " << #name << " time " << Dune::PDELab::TSC::seconds(HP_TIMER_DURATION(name)) << std::endl; \
+    os << #level << " " << ident << " " << #name << " time " << Dune::PDELab::TSC::seconds(HP_TIMER_DURATION(name)) << std::endl; \
   time += HP_TIMER_DURATION(name); \
   if (reset) HP_TIMER_RESET(name);
 
 #else
 
-#define DUMP_TIMER(name,os,reset)
-#define DUMP_AND_ACCUMULATE_TIMER(name,os,reset,time,ops)
+#define DUMP_TIMER(level,name,os,reset)
+#define DUMP_AND_ACCUMULATE_TIMER(level,name,os,reset,time,ops)
 
 #endif
 
diff --git a/python/dune/perftool/generation/cpp.py b/python/dune/perftool/generation/cpp.py
index 0db90171..8ee17a24 100644
--- a/python/dune/perftool/generation/cpp.py
+++ b/python/dune/perftool/generation/cpp.py
@@ -48,5 +48,5 @@ def dump_accumulate_timer(name):
     # reset = name_time_dumper_reset()
     reset = 'false'
 
-    code = "DUMP_TIMER({},{},{});".format(name, os, reset)
+    code = "DUMP_TIMER({},{},{},{});".format(get_option("instrumentation_level"), name, os, reset)
     return code
diff --git a/python/dune/perftool/pdelab/driver/__init__.py b/python/dune/perftool/pdelab/driver/__init__.py
index 2c38881f..46ced0b3 100644
--- a/python/dune/perftool/pdelab/driver/__init__.py
+++ b/python/dune/perftool/pdelab/driver/__init__.py
@@ -295,7 +295,7 @@ def generate_driver(formdatas, data):
         post_include("HP_DECLARE_TIMER(driver);\n", filetag="driver")
         contents.insert(0, Line(text="HP_TIMER_START(driver);\n"))
         contents.insert(len(contents) - 1, Line(text="HP_TIMER_STOP(driver);\n"))
-        contents.insert(len(contents) - 1, Line(text="DUMP_TIMER(driver, {}, true);\n".format(timestream)))
+        contents.insert(len(contents) - 1, Line(text="DUMP_TIMER({}, driver, {}, true);\n".format(get_option("instrumentation_level"), timestream)))
     contents.insert(0, Line(text="\n"))
     driver_body = Block(contents)
     driver = FunctionBody(driver_signature, driver_body)
diff --git a/python/dune/perftool/pdelab/driver/solve.py b/python/dune/perftool/pdelab/driver/solve.py
index 389a10c4..8042492c 100644
--- a/python/dune/perftool/pdelab/driver/solve.py
+++ b/python/dune/perftool/pdelab/driver/solve.py
@@ -67,7 +67,7 @@ def dune_solve():
         solve = ["HP_TIMER_START(solve);",
                  "{}".format(solve),
                  "HP_TIMER_STOP(solve);",
-                 "DUMP_TIMER(solve, {}, true);".format(timestream),
+                 "DUMP_TIMER({}, solve, {}, true);".format(get_option("instrumentation_level"), timestream),
                  ]
         if get_option('instrumentation_level') >= 3:
             solve.extend(print_times)
diff --git a/python/dune/perftool/pdelab/driver/timings.py b/python/dune/perftool/pdelab/driver/timings.py
index d420e61e..2b00b92c 100644
--- a/python/dune/perftool/pdelab/driver/timings.py
+++ b/python/dune/perftool/pdelab/driver/timings.py
@@ -98,7 +98,7 @@ def evaluate_residual_timer():
         evaluation = ["HP_TIMER_START(residual_evaluation);",
                       "{}.residual({}, r);".format(n_go, v),
                       "HP_TIMER_STOP(residual_evaluation);",
-                      "DUMP_TIMER(residual_evaluation, {}, true);".format(timestream)]
+                      "DUMP_TIMER({}, residual_evaluation, {}, true);".format(get_option("instrumentation_level"), timestream)]
         evaluation.extend(print_times)
     else:
         evaluation = ["{}.residual({}, r);".format(n_go, v)]
@@ -137,7 +137,7 @@ def apply_jacobian_timer():
         evaluation = ["HP_TIMER_START(apply_jacobian);",
                       "{}.jacobian_apply({}, j);".format(n_go, v),
                       "HP_TIMER_STOP(apply_jacobian);",
-                      "DUMP_TIMER(apply_jacobian, {}, true);".format(timestream)]
+                      "DUMP_TIMER({}, apply_jacobian, {}, true);".format(get_option("instrumentation_level"), timestream)]
         evaluation.extend(print_times)
     else:
         evaluation = ["{}.jacobian_apply({}, j);".format(n_go, v)]
@@ -174,7 +174,7 @@ def assemble_matrix_timer():
         assembly = ["HP_TIMER_START(matrix_assembly);",
                     "{}.jacobian({},m);".format(n_go, v),
                     "HP_TIMER_STOP(matrix_assembly);",
-                    "DUMP_TIMER(matrix_assembly, {}, true);".format(timestream)]
+                    "DUMP_TIMER({}, matrix_assembly, {}, true);".format(get_option("instrumentation_level"), timestream)]
         assembly.extend(print_times)
     else:
         assembly = ["{}.jacobian({},m);".format(n_go, v)]
-- 
GitLab