Skip to content

Commit 717cdde

Browse files
authored
Update test_metric_validation.py to handle MI325X (#2866)
1 parent 9340727 commit 717cdde

File tree

1 file changed

+18
-10
lines changed

1 file changed

+18
-10
lines changed

projects/rocprofiler-compute/tests/test_metric_validation.py

Lines changed: 18 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@
4242
"metric_id": "4.1.8",
4343
"csv_file": "4.1_Roofline_Performance_Rates.csv",
4444
"column": "Value",
45-
"expected_value": 1044.48,
45+
"expected_values": [1044.48],
4646
},
4747
],
4848
"MI200": [
@@ -51,7 +51,7 @@
5151
"metric_id": "4.1.8",
5252
"csv_file": "4.1_Roofline_Performance_Rates.csv",
5353
"column": "Value",
54-
"expected_value": 1389.17,
54+
"expected_values": [1389.17],
5555
},
5656
],
5757
"MI300": [
@@ -60,7 +60,11 @@
6060
"metric_id": "4.1.9",
6161
"csv_file": "4.1_Roofline_Performance_Rates.csv",
6262
"column": "Value",
63-
"expected_value": 3910.62,
63+
# MI 300 series contains MI325X GPU which
64+
# uses improved HBM3E instead of HBM3 used in
65+
# MI300X GPU. Hence, multiple expected values
66+
# to cover both cases.
67+
"expected_values": [3910.62, 4287.31],
6468
},
6569
],
6670
"MI350": [
@@ -69,7 +73,7 @@
6973
"metric_id": "4.1.10",
7074
"csv_file": "4.1_Roofline_Performance_Rates.csv",
7175
"column": "Value",
72-
"expected_value": 5690.42,
76+
"expected_values": [5690.42],
7377
},
7478
],
7579
# Ignore warmup dispatch
@@ -131,13 +135,17 @@ def test_validate_metrics(
131135
actual = pd.read_csv(f"{analysis_workload_dir}/{metric['csv_file']}")[
132136
metric["column"]
133137
].values[0]
134-
expected = metric["expected_value"]
135-
# 5% tolerance in checking
136-
assert abs(actual - expected) / expected <= 0.05, (
138+
expected_values = metric["expected_values"]
139+
# 5% tolerance in checking - assert if actual matches any expected value
140+
matches = [
141+
abs(actual - expected) / expected <= 0.05
142+
for expected in expected_values
143+
]
144+
diffs = [(abs(actual - exp) / exp * 100) for exp in expected_values]
145+
assert any(matches), (
137146
f"{metric['name']} ({metric['metric_id']}): "
138-
f"actual={actual}, expected={expected}, "
139-
f"diff={(abs(actual - expected) / expected * 100):.2f}% "
140-
f"(tolerance: 5%)"
147+
f"actual={actual}, expected_values={expected_values}, "
148+
f"diffs={diffs} (tolerance: 5%)"
141149
)
142150
finally:
143151
test_utils.clean_output_dir(config["cleanup"], analysis_workload_dir)

0 commit comments

Comments
 (0)