mirror of
https://github.com/RRZE-HPC/OSACA.git
synced 2026-01-06 19:20:07 +01:00
enhanced LCD analysis by making it parallel and added timeout flag
This commit is contained in:
@@ -163,6 +163,7 @@ class Frontend(object):
|
||||
ignore_unknown=False,
|
||||
arch_warning=False,
|
||||
length_warning=False,
|
||||
lcd_warning=False,
|
||||
verbose=False,
|
||||
):
|
||||
"""
|
||||
@@ -176,17 +177,19 @@ class Frontend(object):
|
||||
:param ignore_unknown: flag for ignore warning if performance data is missing, defaults to
|
||||
`False`
|
||||
:type ignore_unknown: boolean, optional
|
||||
:param print_arch_warning: flag for additional user warning to specify micro-arch
|
||||
:type print_arch_warning: boolean, optional
|
||||
:param print_length_warning: flag for additional user warning to specify kernel length with
|
||||
:param arch_warning: flag for additional user warning to specify micro-arch
|
||||
:type arch_warning: boolean, optional
|
||||
:param length_warning: flag for additional user warning to specify kernel length with
|
||||
--lines
|
||||
:type print_length_warning: boolean, optional
|
||||
:type length_warning: boolean, optional
|
||||
:param lcd_warning: flag for additional user warning due to LCD analysis timed out
|
||||
:type lcd_warning: boolean, optional
|
||||
:param verbose: flag for verbosity level, defaults to False
|
||||
:type verbose: boolean, optional
|
||||
"""
|
||||
return (
|
||||
self._header_report()
|
||||
+ self._user_warnings(arch_warning, length_warning)
|
||||
+ self._user_warnings_header(arch_warning, length_warning)
|
||||
+ self._symbol_map()
|
||||
+ self.combined_view(
|
||||
kernel,
|
||||
@@ -194,6 +197,7 @@ class Frontend(object):
|
||||
kernel_dg.get_loopcarried_dependencies(),
|
||||
ignore_unknown,
|
||||
)
|
||||
+ self._user_warnings_footer(lcd_warning)
|
||||
+ self.loopcarried_dependencies(kernel_dg.get_loopcarried_dependencies())
|
||||
)
|
||||
|
||||
@@ -236,8 +240,9 @@ class Frontend(object):
|
||||
if dep_dict:
|
||||
longest_lcd = max(dep_dict, key=lambda ln: dep_dict[ln]['latency'])
|
||||
lcd_sum = dep_dict[longest_lcd]['latency']
|
||||
lcd_lines = {instr["line_number"]: lat
|
||||
for instr, lat in dep_dict[longest_lcd]["dependencies"]}
|
||||
lcd_lines = {
|
||||
instr["line_number"]: lat for instr, lat in dep_dict[longest_lcd]["dependencies"]
|
||||
}
|
||||
|
||||
s += headline_str.format(headline) + "\n"
|
||||
s += (
|
||||
@@ -311,18 +316,24 @@ class Frontend(object):
|
||||
).format(amount, "-" * len(str(amount)))
|
||||
return s
|
||||
|
||||
def _user_warnings(self, arch_warning, length_warning):
|
||||
def _user_warnings_header(self, arch_warning, length_warning):
|
||||
"""Returns warning texts for giving the user more insight in what he is doing."""
|
||||
dashed_line = (
|
||||
"-------------------------------------------------------------------------"
|
||||
"------------------------\n"
|
||||
)
|
||||
arch_text = (
|
||||
"WARNING: No micro-architecture was specified and a default uarch was used.\n"
|
||||
" Specify the uarch with --arch. See --help for more information.\n"
|
||||
"-------------------------- WARNING: No micro-architecture was specified "
|
||||
"-------------------------\n"
|
||||
" A default uarch for this particular ISA was used. Specify "
|
||||
"the uarch with --arch.\n See --help for more information.\n" + dashed_line
|
||||
)
|
||||
length_text = (
|
||||
"WARNING: You are analyzing a large amount of instruction forms. Analysis "
|
||||
"across loops/block boundaries often do not make much sense.\n"
|
||||
" Specify the kernel length with --length. See --help for more "
|
||||
"information.\n"
|
||||
" If this is intentional, you can safely ignore this message.\n"
|
||||
"----------------- WARNING: You are analyzing a large amount of instruction forms "
|
||||
"----------------\n Analysis across loops/block boundaries often do not make"
|
||||
" much sense.\n Specify the kernel length with --length. See --help for more "
|
||||
"information.\n If this is intentional, you can safely ignore this message.\n"
|
||||
+ dashed_line
|
||||
)
|
||||
|
||||
warnings = ""
|
||||
@@ -331,6 +342,24 @@ class Frontend(object):
|
||||
warnings += "\n"
|
||||
return warnings
|
||||
|
||||
def _user_warnings_footer(self, lcd_warning):
|
||||
"""Returns warning texts for giving the user more insight in what he is doing."""
|
||||
dashed_line = (
|
||||
"-------------------------------------------------------------------------"
|
||||
"------------------------\n"
|
||||
)
|
||||
lcd_text = (
|
||||
"-------------------------------- WARNING: LCD analysis timed out "
|
||||
"-------------------------------\n While searching for all dependency chains"
|
||||
" the analysis timed out.\n Decrease the number of instructions or set the "
|
||||
"timeout threshold with --lcd-timeout.\n See --help for more "
|
||||
"information.\n" + dashed_line
|
||||
)
|
||||
warnings = "\n"
|
||||
warnings += lcd_text if lcd_warning else ""
|
||||
warnings += "\n"
|
||||
return warnings
|
||||
|
||||
def _get_separator_list(self, separator, separator_2=" "):
|
||||
"""Creates column view for seperators in the TP/combined view."""
|
||||
separator_list = []
|
||||
|
||||
Reference in New Issue
Block a user