mirror of
https://github.com/RRZE-HPC/OSACA.git
synced 2025-12-16 00:50:06 +01:00
applied flake8 and black rules
This commit is contained in:
@@ -33,7 +33,13 @@ class TestCLI(unittest.TestCase):
|
||||
with self.assertRaises(ValueError):
|
||||
osaca.check_arguments(args, parser)
|
||||
args = parser.parse_args(
|
||||
["--arch", "csx", "--import", "WRONG_BENCH", self._find_file("gs", "csx", "gcc")]
|
||||
[
|
||||
"--arch",
|
||||
"csx",
|
||||
"--import",
|
||||
"WRONG_BENCH",
|
||||
self._find_file("gs", "csx", "gcc"),
|
||||
]
|
||||
)
|
||||
with self.assertRaises(ValueError):
|
||||
osaca.check_arguments(args, parser)
|
||||
@@ -65,7 +71,13 @@ class TestCLI(unittest.TestCase):
|
||||
def test_check_db(self):
|
||||
parser = osaca.create_parser(parser=ErrorRaisingArgumentParser())
|
||||
args = parser.parse_args(
|
||||
["--arch", "tx2", "--db-check", "--verbose", self._find_test_file("triad_x86_iaca.s")]
|
||||
[
|
||||
"--arch",
|
||||
"tx2",
|
||||
"--db-check",
|
||||
"--verbose",
|
||||
self._find_test_file("triad_x86_iaca.s"),
|
||||
]
|
||||
)
|
||||
output = StringIO()
|
||||
osaca.run(args, output_file=output)
|
||||
@@ -134,7 +146,13 @@ class TestCLI(unittest.TestCase):
|
||||
for c in comps[a]:
|
||||
with self.subTest(kernel=k, arch=a, comp=c):
|
||||
args = parser.parse_args(
|
||||
["--arch", a, self._find_file(k, a, c), "--export-graph", "/dev/null"]
|
||||
[
|
||||
"--arch",
|
||||
a,
|
||||
self._find_file(k, a, c),
|
||||
"--export-graph",
|
||||
"/dev/null",
|
||||
]
|
||||
)
|
||||
output = StringIO()
|
||||
osaca.run(args, output_file=output)
|
||||
@@ -204,17 +222,13 @@ class TestCLI(unittest.TestCase):
|
||||
)
|
||||
output = StringIO()
|
||||
osaca.run(args, output_file=output)
|
||||
self.assertTrue(
|
||||
output.getvalue().count("WARNING: LCD analysis timed out") == 1
|
||||
)
|
||||
self.assertTrue(output.getvalue().count("WARNING: LCD analysis timed out") == 1)
|
||||
args = parser.parse_args(
|
||||
["--ignore-unknown", "--lcd-timeout", "-1", self._find_test_file(kernel)]
|
||||
)
|
||||
output = StringIO()
|
||||
osaca.run(args, output_file=output)
|
||||
self.assertTrue(
|
||||
output.getvalue().count("WARNING: LCD analysis timed out") == 0
|
||||
)
|
||||
self.assertTrue(output.getvalue().count("WARNING: LCD analysis timed out") == 0)
|
||||
|
||||
def test_lines_arg(self):
|
||||
# Run tests with --lines option
|
||||
@@ -227,12 +241,24 @@ class TestCLI(unittest.TestCase):
|
||||
args = []
|
||||
args.append(
|
||||
parser.parse_args(
|
||||
["--lines", "146-154", "--arch", "csx", self._find_test_file(kernel_x86)]
|
||||
[
|
||||
"--lines",
|
||||
"146-154",
|
||||
"--arch",
|
||||
"csx",
|
||||
self._find_test_file(kernel_x86),
|
||||
]
|
||||
)
|
||||
)
|
||||
args.append(
|
||||
parser.parse_args(
|
||||
["--lines", "146:154", "--arch", "csx", self._find_test_file(kernel_x86)]
|
||||
[
|
||||
"--lines",
|
||||
"146:154",
|
||||
"--arch",
|
||||
"csx",
|
||||
self._find_test_file(kernel_x86),
|
||||
]
|
||||
)
|
||||
)
|
||||
args.append(
|
||||
|
||||
@@ -17,7 +17,13 @@ class TestDBInterface(unittest.TestCase):
|
||||
sample_entry = {
|
||||
"name": "DoItRightAndDoItFast",
|
||||
"operands": [
|
||||
{"class": "memory", "offset": "imd", "base": "gpr", "index": "gpr", "scale": 8},
|
||||
{
|
||||
"class": "memory",
|
||||
"offset": "imd",
|
||||
"base": "gpr",
|
||||
"index": "gpr",
|
||||
"scale": 8,
|
||||
},
|
||||
{"class": "register", "name": "xmm"},
|
||||
],
|
||||
"throughput": 1.25,
|
||||
@@ -35,7 +41,12 @@ class TestDBInterface(unittest.TestCase):
|
||||
del self.entry_tx2["operands"][1]["name"]
|
||||
self.entry_tx2["operands"][1]["prefix"] = "x"
|
||||
# self.entry_zen1['port_pressure'] = [1, 1, 1, 1, 0, 1, 0, 0, 0, 0.5, 1, 0.5, 1]
|
||||
self.entry_zen1["port_pressure"] = [[4, "0123"], [1, "4"], [1, "89"], [2, ["8D", "9D"]]]
|
||||
self.entry_zen1["port_pressure"] = [
|
||||
[4, "0123"],
|
||||
[1, "4"],
|
||||
[1, "89"],
|
||||
[2, ["8D", "9D"]],
|
||||
]
|
||||
|
||||
###########
|
||||
# Tests
|
||||
|
||||
@@ -1,15 +1,15 @@
|
||||
# OSACA-BEGIN
|
||||
.L4:
|
||||
vmovsd %xmm0, 8(%rax)
|
||||
addq $8, %rax
|
||||
vmovsd %xmm0, 8(%rax,%rcx,8)
|
||||
vaddsd (%rax), %xmm0, %xmm0 # depends on line 3, 8(%rax) == (%rax+8)
|
||||
subq $-8, %rax
|
||||
vaddsd -8(%rax), %xmm0, %xmm0 # depends on line 3, 8(%rax) == -8(%rax+16)
|
||||
dec %rcx
|
||||
vaddsd 8(%rax,%rcx,8), %xmm0, %xmm0 # depends on line 5, 8(%rax,%rdx,8) == 8(%rax+8,%rdx-1,8)
|
||||
movq %rcx, %rdx
|
||||
vaddsd 8(%rax,%rdx,8), %xmm0, %xmm0 # depends on line 5, 8(%rax,%rdx,8) == 8(%rax+8,%rdx-1,8)
|
||||
vmovsd %xmm0, 8(%rax) # line 3 <----------------------------------+
|
||||
addq $8, %rax # |
|
||||
vmovsd %xmm0, 8(%rax,%rcx,8) # line 5 <-----------------------------------------------+
|
||||
vaddsd (%rax), %xmm0, %xmm0 # depends on line 3, 8(%rax) == (%rax+8) ---+ |
|
||||
subq $-8, %rax # | |
|
||||
vaddsd -8(%rax), %xmm0, %xmm0 # depends on line 3, 8(%rax) == -8(%rax+16) ---+ |
|
||||
dec %rcx # |
|
||||
vaddsd 8(%rax,%rcx,8), %xmm0, %xmm0 # depends on line 5, 8(%rax,%rdx,8) == 8(%rax+8,%rdx-1,8) --+
|
||||
movq %rcx, %rdx # |
|
||||
vaddsd 8(%rax,%rdx,8), %xmm0, %xmm0 # depends on line 5, 8(%rax,%rdx,8) == 8(%rax+8,%rdx-1,8) --+
|
||||
vmulsd %xmm1, %xmm0, %xmm0
|
||||
addq $8, %rax
|
||||
cmpq %rsi, %rax
|
||||
|
||||
@@ -34,7 +34,8 @@ class TestFrontend(unittest.TestCase):
|
||||
)
|
||||
self.machine_model_tx2 = MachineModel(arch="tx2")
|
||||
self.semantics_csx = ArchSemantics(
|
||||
self.machine_model_csx, path_to_yaml=os.path.join(self.MODULE_DATA_DIR, "isa/x86.yml")
|
||||
self.machine_model_csx,
|
||||
path_to_yaml=os.path.join(self.MODULE_DATA_DIR, "isa/x86.yml"),
|
||||
)
|
||||
self.semantics_tx2 = ArchSemantics(
|
||||
self.machine_model_tx2,
|
||||
@@ -71,7 +72,11 @@ class TestFrontend(unittest.TestCase):
|
||||
|
||||
def test_frontend_AArch64(self):
|
||||
dg = KernelDG(
|
||||
self.kernel_AArch64, self.parser_AArch64, self.machine_model_tx2, self.semantics_tx2)
|
||||
self.kernel_AArch64,
|
||||
self.parser_AArch64,
|
||||
self.machine_model_tx2,
|
||||
self.semantics_tx2,
|
||||
)
|
||||
fe = Frontend(path_to_yaml=os.path.join(self.MODULE_DATA_DIR, "tx2.yml"))
|
||||
fe.full_analysis(self.kernel_AArch64, dg, verbose=True)
|
||||
# TODO compare output with checked string
|
||||
|
||||
@@ -109,7 +109,8 @@ class TestMarkerUtils(unittest.TestCase):
|
||||
kernel_start = len(
|
||||
list(
|
||||
filter(
|
||||
None, (prologue + mov_start_var + bytes_var_1).split("\n")
|
||||
None,
|
||||
(prologue + mov_start_var + bytes_var_1).split("\n"),
|
||||
)
|
||||
)
|
||||
)
|
||||
@@ -142,7 +143,12 @@ class TestMarkerUtils(unittest.TestCase):
|
||||
epilogue = ".LE9:\t\t#12.2\n" "call dummy\n"
|
||||
kernel_length = len(list(filter(None, kernel.split("\n"))))
|
||||
|
||||
bytes_variations = [bytes_1_line, bytes_2_lines_1, bytes_2_lines_2, bytes_3_lines]
|
||||
bytes_variations = [
|
||||
bytes_1_line,
|
||||
bytes_2_lines_1,
|
||||
bytes_2_lines_2,
|
||||
bytes_3_lines,
|
||||
]
|
||||
mov_start_variations = [mov_start_1, mov_start_2]
|
||||
mov_end_variations = [mov_end_1, mov_end_2]
|
||||
# actual tests
|
||||
@@ -171,7 +177,8 @@ class TestMarkerUtils(unittest.TestCase):
|
||||
kernel_start = len(
|
||||
list(
|
||||
filter(
|
||||
None, (prologue + mov_start_var + bytes_var_1).split("\n")
|
||||
None,
|
||||
(prologue + mov_start_var + bytes_var_1).split("\n"),
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
@@ -24,7 +24,9 @@ class TestParserAArch64(unittest.TestCase):
|
||||
|
||||
def test_comment_parser(self):
|
||||
self.assertEqual(self._get_comment(self.parser, "// some comments"), "some comments")
|
||||
self.assertEqual(self._get_comment(self.parser, "\t\t//AA BB CC \t end \t"), "AA BB CC end")
|
||||
self.assertEqual(
|
||||
self._get_comment(self.parser, "\t\t//AA BB CC \t end \t"), "AA BB CC end"
|
||||
)
|
||||
self.assertEqual(
|
||||
self._get_comment(self.parser, "\t//// comment //// comment"),
|
||||
"// comment //// comment",
|
||||
@@ -36,7 +38,8 @@ class TestParserAArch64(unittest.TestCase):
|
||||
self.assertEqual(self._get_label(self.parser, ".2.3_2_pack.3:").name, ".2.3_2_pack.3")
|
||||
self.assertEqual(self._get_label(self.parser, ".L1:\t\t\t//label1").name, ".L1")
|
||||
self.assertEqual(
|
||||
" ".join(self._get_label(self.parser, ".L1:\t\t\t//label1").comment), "label1"
|
||||
" ".join(self._get_label(self.parser, ".L1:\t\t\t//label1").comment),
|
||||
"label1",
|
||||
)
|
||||
with self.assertRaises(ParseException):
|
||||
self._get_label(self.parser, "\t.cfi_startproc")
|
||||
@@ -316,7 +319,8 @@ class TestParserAArch64(unittest.TestCase):
|
||||
value1 = self.parser.normalize_imd(imd_decimal_1)
|
||||
self.assertEqual(value1, self.parser.normalize_imd(imd_hex_1))
|
||||
self.assertEqual(
|
||||
self.parser.normalize_imd(imd_decimal_2), self.parser.normalize_imd(imd_hex_2)
|
||||
self.parser.normalize_imd(imd_decimal_2),
|
||||
self.parser.normalize_imd(imd_hex_2),
|
||||
)
|
||||
self.assertEqual(self.parser.normalize_imd(imd_float_11), value1)
|
||||
self.assertEqual(self.parser.normalize_imd(imd_float_12), value1)
|
||||
|
||||
@@ -26,7 +26,8 @@ class TestParserX86ATT(unittest.TestCase):
|
||||
self.assertEqual(self._get_comment(self.parser, "# some comments"), "some comments")
|
||||
self.assertEqual(self._get_comment(self.parser, "\t\t#AA BB CC \t end \t"), "AA BB CC end")
|
||||
self.assertEqual(
|
||||
self._get_comment(self.parser, "\t## comment ## comment"), "# comment ## comment"
|
||||
self._get_comment(self.parser, "\t## comment ## comment"),
|
||||
"# comment ## comment",
|
||||
)
|
||||
|
||||
def test_label_parser(self):
|
||||
@@ -35,7 +36,8 @@ class TestParserX86ATT(unittest.TestCase):
|
||||
self.assertEqual(self._get_label(self.parser, ".2.3_2_pack.3:").name, ".2.3_2_pack.3")
|
||||
self.assertEqual(self._get_label(self.parser, ".L1:\t\t\t#label1").name, ".L1")
|
||||
self.assertEqual(
|
||||
" ".join(self._get_label(self.parser, ".L1:\t\t\t#label1").comment), "label1"
|
||||
" ".join(self._get_label(self.parser, ".L1:\t\t\t#label1").comment),
|
||||
"label1",
|
||||
)
|
||||
with self.assertRaises(ParseException):
|
||||
self._get_label(self.parser, "\t.cfi_startproc")
|
||||
@@ -47,7 +49,8 @@ class TestParserX86ATT(unittest.TestCase):
|
||||
self.assertEqual(len(self._get_directive(self.parser, "\t.align\t16,0x90").parameters), 2)
|
||||
self.assertEqual(len(self._get_directive(self.parser, ".text").parameters), 0)
|
||||
self.assertEqual(
|
||||
len(self._get_directive(self.parser, '.file\t1 "path/to/file.c"').parameters), 2
|
||||
len(self._get_directive(self.parser, '.file\t1 "path/to/file.c"').parameters),
|
||||
2,
|
||||
)
|
||||
self.assertEqual(
|
||||
self._get_directive(self.parser, '.file\t1 "path/to/file.c"').parameters[1],
|
||||
@@ -62,7 +65,12 @@ class TestParserX86ATT(unittest.TestCase):
|
||||
self.parser,
|
||||
"\t.section __TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support",
|
||||
).parameters,
|
||||
["__TEXT", "__eh_frame", "coalesced", "no_toc+strip_static_syms+live_support"],
|
||||
[
|
||||
"__TEXT",
|
||||
"__eh_frame",
|
||||
"coalesced",
|
||||
"no_toc+strip_static_syms+live_support",
|
||||
],
|
||||
)
|
||||
self.assertEqual(
|
||||
self._get_directive(
|
||||
@@ -74,7 +82,9 @@ class TestParserX86ATT(unittest.TestCase):
|
||||
self._get_directive(self.parser, "\t.align\t16,0x90").parameters[1], "0x90"
|
||||
)
|
||||
self.assertEqual(
|
||||
self._get_directive(self.parser, " .byte 100,103,144 #IACA START")["name"],
|
||||
self._get_directive(self.parser, " .byte 100,103,144 #IACA START")[
|
||||
"name"
|
||||
],
|
||||
"byte",
|
||||
)
|
||||
self.assertEqual(
|
||||
@@ -242,10 +252,12 @@ class TestParserX86ATT(unittest.TestCase):
|
||||
imd_decimal_2 = {"value": "8"}
|
||||
imd_hex_2 = {"value": "8"}
|
||||
self.assertEqual(
|
||||
self.parser.normalize_imd(imd_decimal_1), self.parser.normalize_imd(imd_hex_1)
|
||||
self.parser.normalize_imd(imd_decimal_1),
|
||||
self.parser.normalize_imd(imd_hex_1),
|
||||
)
|
||||
self.assertEqual(
|
||||
self.parser.normalize_imd(imd_decimal_2), self.parser.normalize_imd(imd_hex_2)
|
||||
self.parser.normalize_imd(imd_decimal_2),
|
||||
self.parser.normalize_imd(imd_hex_2),
|
||||
)
|
||||
|
||||
def test_reg_dependency(self):
|
||||
|
||||
@@ -11,8 +11,14 @@ from copy import deepcopy
|
||||
import networkx as nx
|
||||
from osaca.osaca import get_unmatched_instruction_ratio
|
||||
from osaca.parser import AttrDict, ParserAArch64, ParserX86ATT
|
||||
from osaca.semantics import (INSTR_FLAGS, ArchSemantics, ISASemantics,
|
||||
KernelDG, MachineModel, reduce_to_section)
|
||||
from osaca.semantics import (
|
||||
INSTR_FLAGS,
|
||||
ArchSemantics,
|
||||
ISASemantics,
|
||||
KernelDG,
|
||||
MachineModel,
|
||||
reduce_to_section,
|
||||
)
|
||||
|
||||
|
||||
class TestSemanticTools(unittest.TestCase):
|
||||
@@ -66,7 +72,8 @@ class TestSemanticTools(unittest.TestCase):
|
||||
)
|
||||
cls.semantics_x86 = ISASemantics("x86")
|
||||
cls.semantics_csx = ArchSemantics(
|
||||
cls.machine_model_csx, path_to_yaml=os.path.join(cls.MODULE_DATA_DIR, "isa/x86.yml")
|
||||
cls.machine_model_csx,
|
||||
path_to_yaml=os.path.join(cls.MODULE_DATA_DIR, "isa/x86.yml"),
|
||||
)
|
||||
cls.semantics_aarch64 = ISASemantics("aarch64")
|
||||
cls.semantics_tx2 = ArchSemantics(
|
||||
@@ -173,7 +180,12 @@ class TestSemanticTools(unittest.TestCase):
|
||||
)
|
||||
self.assertEqual(
|
||||
test_mm_x86.get_store_throughput(
|
||||
{"base": {"prefix": "NOT_IN_DB"}, "offset": None, "index": "NOT_NONE", "scale": 1}
|
||||
{
|
||||
"base": {"prefix": "NOT_IN_DB"},
|
||||
"offset": None,
|
||||
"index": "NOT_NONE",
|
||||
"scale": 1,
|
||||
}
|
||||
),
|
||||
[[1, "23"], [1, "4"]],
|
||||
)
|
||||
@@ -185,7 +197,12 @@ class TestSemanticTools(unittest.TestCase):
|
||||
)
|
||||
self.assertEqual(
|
||||
test_mm_arm.get_store_throughput(
|
||||
{"base": {"prefix": "NOT_IN_DB"}, "offset": None, "index": None, "scale": 1}
|
||||
{
|
||||
"base": {"prefix": "NOT_IN_DB"},
|
||||
"offset": None,
|
||||
"index": None,
|
||||
"scale": 1,
|
||||
}
|
||||
),
|
||||
[[1, "34"], [1, "5"]],
|
||||
)
|
||||
@@ -310,7 +327,10 @@ class TestSemanticTools(unittest.TestCase):
|
||||
|
||||
def test_memdependency_x86(self):
|
||||
dg = KernelDG(
|
||||
self.kernel_x86_memdep, self.parser_x86, self.machine_model_csx, self.semantics_csx
|
||||
self.kernel_x86_memdep,
|
||||
self.parser_x86,
|
||||
self.machine_model_csx,
|
||||
self.semantics_csx,
|
||||
)
|
||||
self.assertTrue(nx.algorithms.dag.is_directed_acyclic_graph(dg.dg))
|
||||
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=3)), {6, 8})
|
||||
@@ -322,7 +342,10 @@ class TestSemanticTools(unittest.TestCase):
|
||||
|
||||
def test_kernelDG_AArch64(self):
|
||||
dg = KernelDG(
|
||||
self.kernel_AArch64, self.parser_AArch64, self.machine_model_tx2, self.semantics_tx2
|
||||
self.kernel_AArch64,
|
||||
self.parser_AArch64,
|
||||
self.machine_model_tx2,
|
||||
self.semantics_tx2,
|
||||
)
|
||||
self.assertTrue(nx.algorithms.dag.is_directed_acyclic_graph(dg.dg))
|
||||
self.assertEqual(set(dg.get_dependent_instruction_forms(line_number=3)), {7, 8})
|
||||
@@ -400,7 +423,7 @@ class TestSemanticTools(unittest.TestCase):
|
||||
# based on line 6
|
||||
self.assertEqual(lc_deps[6]["latency"], 28.0)
|
||||
self.assertEqual(
|
||||
[(iform.line_number, lat) for iform, lat in lc_deps[6]['dependencies']],
|
||||
[(iform.line_number, lat) for iform, lat in lc_deps[6]["dependencies"]],
|
||||
[(6, 4.0), (10, 6.0), (11, 6.0), (12, 6.0), (13, 6.0), (14, 0)],
|
||||
)
|
||||
|
||||
@@ -423,7 +446,8 @@ class TestSemanticTools(unittest.TestCase):
|
||||
# w/o flag dependencies: ID 5 w/ len=1
|
||||
# TODO discuss
|
||||
self.assertEqual(
|
||||
lc_deps[lcd_id2]["root"], dg.dg.nodes(data=True)[lcd_id2]["instruction_form"]
|
||||
lc_deps[lcd_id2]["root"],
|
||||
dg.dg.nodes(data=True)[lcd_id2]["instruction_form"],
|
||||
)
|
||||
self.assertEqual(len(lc_deps[lcd_id2]["dependencies"]), 1)
|
||||
self.assertEqual(
|
||||
@@ -438,7 +462,7 @@ class TestSemanticTools(unittest.TestCase):
|
||||
self.parser_x86,
|
||||
self.machine_model_csx,
|
||||
self.semantics_x86,
|
||||
timeout=10
|
||||
timeout=10,
|
||||
)
|
||||
end_time = time.perf_counter()
|
||||
time_10 = end_time - start_time
|
||||
@@ -448,7 +472,7 @@ class TestSemanticTools(unittest.TestCase):
|
||||
self.parser_x86,
|
||||
self.machine_model_csx,
|
||||
self.semantics_x86,
|
||||
timeout=2
|
||||
timeout=2,
|
||||
)
|
||||
end_time = time.perf_counter()
|
||||
time_2 = end_time - start_time
|
||||
|
||||
Reference in New Issue
Block a user