diff --git a/applications/convection_diffusion/conv_diff_dg.mini b/applications/convection_diffusion/conv_diff_dg.mini index 7476dd5e0913c620236371bfeb378d9e92ef2a9b..904f1e6eb909f23e144fa1181fbc9dcac8af6e5c 100644 --- a/applications/convection_diffusion/conv_diff_dg.mini +++ b/applications/convection_diffusion/conv_diff_dg.mini @@ -1,5 +1,5 @@ __name = app_conv_diff_{__exec_suffix} -__exec_suffix = deg{formcompiler.ufl_variants.degree}_{opcount_suffix} +__exec_suffix = deg{formcompiler.ufl_variants.degree}_{opcount_suffix}_level{formcompiler.instrumentation_level} opcount_suffix = opcount, nonopcount | expand opcount @@ -26,6 +26,9 @@ extension = 1.0 | repeat {dim} cells = {firstdircells} {otherdircells} partitioning = {ranks} {ones} +# Set up the timing identifier +identifier = convdiff_deg{formcompiler.ufl_variants.degree} + [wrapper.vtkcompare] name = {__name} extension = vtu @@ -35,7 +38,7 @@ fastdg = 1 sumfact = 1 vectorize_quad = 1 vectorize_grads = 1 -instrumentation_level = 2 +instrumentation_level = 2, 3, 4 | expand opcounter = 1, 0 | expand opcount time_opcounter = 0, 1 | expand opcount exact_solution_expression = g diff --git a/applications/poisson_dg/poisson_dg.mini b/applications/poisson_dg/poisson_dg.mini index a8aac4c2a2cef789f5380010c3cfd1fa6111500a..14426746f57cb42ab2c32be6089b42618ffc2802 100644 --- a/applications/poisson_dg/poisson_dg.mini +++ b/applications/poisson_dg/poisson_dg.mini @@ -1,5 +1,5 @@ -__name = app_poisson_dg_{dim}d_{__exec_suffix} -__exec_suffix = deg{formcompiler.ufl_variants.degree}_{opcount_suffix} +__name = app_poisson_dg_{__exec_suffix} +__exec_suffix = deg{formcompiler.ufl_variants.degree}_{opcount_suffix}_level{formcompiler.instrumentation_level} opcount_suffix = opcount, nonopcount | expand opcount @@ -21,6 +21,9 @@ dimminusone = {dim} - 1 | eval ones = 1 | repeat {dimminusone} otherdircells = {cellsperdir} | repeat {dimminusone} +# Set up the timing identifier +identifier = poisson_dg_deg{formcompiler.ufl_variants.degree} + # Setup the grid! extension = 1.0 | repeat {dim} cells = {firstdircells} {otherdircells} @@ -35,7 +38,7 @@ fastdg = 1 sumfact = 1 vectorize_quad = 1 vectorize_grads = 1 -instrumentation_level = 2 +instrumentation_level = 2, 3, 4 | expand opcounter = 1, 0 | expand opcount time_opcounter = 0, 1 | expand opcount diff --git a/dune/perftool/common/timer.hh b/dune/perftool/common/timer.hh index c6d3198f30ada8fa9f079c722791e5b86f0d4c46..d7d208adf20b716511d184b6b499cc7230edc76a 100644 --- a/dune/perftool/common/timer.hh +++ b/dune/perftool/common/timer.hh @@ -77,26 +77,26 @@ #define DUMP_TIMER(name,os,reset)\ if (HP_TIMER_ELAPSED(name) > 1e-12) \ - os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \ - HP_TIMER_OPCOUNTERS(name).reportOperations(os,exec,#name,reset); + os << 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) \ if (HP_TIMER_ELAPSED(name) > 1e-12) \ - os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \ + os << 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,exec,#name,reset); + HP_TIMER_OPCOUNTERS(name).reportOperations(os,ident,#name,reset); #elif defined ENABLE_HP_TIMERS #define DUMP_TIMER(name,os,reset) \ if (HP_TIMER_ELAPSED(name) > 1e-12) \ - os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \ + os << 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) \ if (HP_TIMER_ELAPSED(name) > 1e-12) \ - os << exec << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \ + os << ident << " " << #name << " time " << HP_TIMER_ELAPSED(name) << std::endl; \ time += HP_TIMER_ELAPSED(name); \ if (reset) HP_TIMER_RESET(name); diff --git a/python/dune/perftool/pdelab/driver.py b/python/dune/perftool/pdelab/driver.py index 26de3b67de909ee8156d33aefafcaff3727c718d..34eb37d2a28fb922cd3c230116ec065f516bfa3d 100644 --- a/python/dune/perftool/pdelab/driver.py +++ b/python/dune/perftool/pdelab/driver.py @@ -1166,9 +1166,9 @@ def define_timing_stream(name): @preamble def dump_dof_numbers(stream): - exe = name_exec() + ident = name_timing_identifier() return "{} << {} << \" dofs dofs \" << {}.size() << std::endl;".format(stream, - exe, + ident, name_gfs(_driver_data['form'].coefficients()[0].ufl_element())) @@ -1222,7 +1222,7 @@ def dune_solve(): for formdata in formdatas: lop_name = name_localoperator(formdata) timestream = name_timing_stream() - print_times.append("{}.dump_timers({}, argv[0], true);".format(lop_name, timestream)) + print_times.append("{}.dump_timers({}, {}, true);".format(lop_name, timestream, name_timing_identifier())) solve = ["HP_TIMER_START(solve);", "{}".format(solve), @@ -1425,13 +1425,14 @@ def setup_timer(): @preamble -def define_exec(name): - return "char* {} = argv[0];".format(name) +def define_timing_identifier(name): + ini = name_initree() + return "auto {} = {}.get<std::string>(\"identifier\", argv[0]);".format(name, ini) -def name_exec(): - name = "exec" - define_exec(name) +def name_timing_identifier(): + name = "ident" + define_timing_identifier(name) return name @@ -1455,7 +1456,7 @@ def evaluate_residual_timer(): for formdata in formdatas: lop_name = name_localoperator(formdata) if get_option('instrumentation_level') >= 3: - print_times.append("{}.dump_timers({}, argv[0], true);".format(lop_name, timestream)) + print_times.append("{}.dump_timers({}, {}, true);".format(lop_name, timestream, name_timing_identifier())) if get_option('instrumentation_level') >= 2: evaluation = ["HP_TIMER_START(residual_evaluation);", @@ -1495,7 +1496,7 @@ def apply_jacobian_timer(): for formdata in formdatas: lop_name = name_localoperator(formdata) if get_option('instrumentation_level') >= 3: - print_times.append("{}.dump_timers({}, argv[0], true);".format(lop_name, timestream)) + print_times.append("{}.dump_timers({}, {}, true);".format(lop_name, timestream, name_timing_identifier())) if get_option('instrumentation_level') >= 2: evaluation = ["HP_TIMER_START(apply_jacobian);", @@ -1532,7 +1533,7 @@ def assemble_matrix_timer(): for formdata in formdatas: lop_name = name_localoperator(formdata) if get_option('instrumentation_level') >= 3: - print_times.append("{}.dump_timers({}, argv[0], true);".format(lop_name, timestream)) + print_times.append("{}.dump_timers({}, {}, true);".format(lop_name, timestream, name_timing_identifier())) if get_option('instrumentation_level') >= 2: assembly = ["HP_TIMER_START(matrix_assembly);",