Skip to content
Snippets Groups Projects
Commit 1f867f4f authored by Dominic Kempf's avatar Dominic Kempf
Browse files

Add a timer for the setup phase of each localoperator kernel

parent f07df19f
No related branches found
No related tags found
No related merge requests found
...@@ -614,10 +614,6 @@ class LoopyKernelMethod(ClassMember): ...@@ -614,10 +614,6 @@ class LoopyKernelMethod(ClassMember):
content.append('{') content.append('{')
if kernel is not None: if kernel is not None:
# Add kernel preamble
for i, p in kernel.preambles:
content.append(' ' + p)
# Start timer # Start timer
if add_timings and get_option('instrumentation_level') >= 3: if add_timings and get_option('instrumentation_level') >= 3:
from dune.perftool.pdelab.signatures import assembler_routine_name from dune.perftool.pdelab.signatures import assembler_routine_name
...@@ -627,6 +623,15 @@ class LoopyKernelMethod(ClassMember): ...@@ -627,6 +623,15 @@ class LoopyKernelMethod(ClassMember):
content.append(' ' + 'HP_TIMER_START({});'.format(timer_name)) content.append(' ' + 'HP_TIMER_START({});'.format(timer_name))
dump_accumulate_timer(timer_name) dump_accumulate_timer(timer_name)
if add_timings and get_option("instrumentation_level") >= 4:
setuptimer = '{}_kernel_setup'.format(assembler_routine_name())
post_include('HP_DECLARE_TIMER({});'.format(setuptimer), filetag='operatorfile')
content.append(' HP_TIMER_START({});'.format(setuptimer))
# Add kernel preamble
for i, p in kernel.preambles:
content.append(' ' + p)
# Add kernel body # Add kernel body
content.extend(l for l in generate_body(kernel).split('\n')[1:-1]) content.extend(l for l in generate_body(kernel).split('\n')[1:-1])
......
...@@ -59,6 +59,12 @@ def _realize_sum_factorization_kernel(sf): ...@@ -59,6 +59,12 @@ def _realize_sum_factorization_kernel(sf):
# Measure times and count operations in c++ code # Measure times and count operations in c++ code
if get_option("instrumentation_level") >= 4: if get_option("instrumentation_level") >= 4:
if sf.stage == 1:
setuptimer = '{}_kernel_setup'.format(assembler_routine_name())
insn_dep = insn_dep.union(frozenset({instruction(code='HP_TIMER_STOP({});'.format(setuptimer),
within_inames=frozenset(sf.within_inames),
depends_on=insn_dep)}))
timer_name = assembler_routine_name() + '_kernel' + '_stage{}'.format(sf.stage) timer_name = assembler_routine_name() + '_kernel' + '_stage{}'.format(sf.stage)
post_include('HP_DECLARE_TIMER({});'.format(timer_name), filetag='operatorfile') post_include('HP_DECLARE_TIMER({});'.format(timer_name), filetag='operatorfile')
dump_accumulate_timer(timer_name) dump_accumulate_timer(timer_name)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment