Skip to content

Commit

Permalink
update: mapping inclusive/exlusive metrics and time metric
Browse files Browse the repository at this point in the history
  • Loading branch information
Dragana Grbic committed May 24, 2024
1 parent e00f8a4 commit 422ebbd
Show file tree
Hide file tree
Showing 2 changed files with 98 additions and 94 deletions.
12 changes: 8 additions & 4 deletions hatchet/readers/hpctoolkit_reader_latest.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,11 +136,15 @@ def _read_metric_descriptions(self) -> None:
read_string(meta_db, pScopeName - pMetrics_old).lower().strip()
]

if name in ["cputime", "realtime", "cycles"] and scope_name == "i":
self._time_metric = f"{name} ({scope_name})"

if scope_name in ["i", "e"]:
self._metric_descriptions[propMetricId] = f"{name} ({scope_name})"
if name in ["cputime", "realtime", "cycles"]:
name = "time"

metric_full_name = f"{name} (inc)" if scope_name == "i" else name
if metric_full_name == "time (inc)":
self._time_metric = metric_full_name

self._metric_descriptions[propMetricId] = metric_full_name

def _parse_source_file(self, meta_db: bytes, pFile: int) -> Dict[str, str]:
if pFile not in self._source_files:
Expand Down
180 changes: 90 additions & 90 deletions hatchet/tests/hpctoolkit_latest.py
Original file line number Diff line number Diff line change
Expand Up @@ -18,38 +18,38 @@ def test_import_entire_db(data_dir: str) -> None:

assert len(graphframe.dataframe) == 10824
assert "name" in graphframe.dataframe.columns
assert "realtime (i)" in graphframe.dataframe.columns
assert "realtime (e)" in graphframe.dataframe.columns
assert "gpuop (i)" in graphframe.dataframe.columns
assert "gker (i)" in graphframe.dataframe.columns
assert "gxcopy (i)" in graphframe.dataframe.columns
assert "gxcopy:count (i)" in graphframe.dataframe.columns
assert "time (inc)" in graphframe.dataframe.columns
assert "time" in graphframe.dataframe.columns
assert "gpuop (inc)" in graphframe.dataframe.columns
assert "gker (inc)" in graphframe.dataframe.columns
assert "gxcopy (inc)" in graphframe.dataframe.columns
assert "gxcopy:count (inc)" in graphframe.dataframe.columns

measurements = graphframe.dataframe.loc[Node(None, hnid=1195)]
assert measurements["name"] == "entry"
assert round(measurements["realtime (i)"], 2) == 1608.49
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 1608.49
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

measurements = graphframe.dataframe.loc[Node(None, hnid=1197)]
assert measurements["name"] == "gamess_"
assert round(measurements["realtime (i)"], 2) == 1608.49
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 1608.49
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

measurements = graphframe.dataframe.loc[Node(None, hnid=1004)]
assert measurements["name"] == "[libsci_cray.so.5.0]:0"
assert round(measurements["realtime (i)"], 2) == 0.08
assert round(measurements["realtime (e)"], 2) == 0.08
assert round(measurements["time (inc)"], 2) == 0.08
assert round(measurements["time"], 2) == 0.08

measurements = graphframe.dataframe.loc[Node(None, hnid=1003)]
assert measurements["name"] == "[libsci_cray.so.5.0]:0"
assert round(measurements["realtime (i)"], 2) == 0.08
assert round(measurements["realtime (e)"], 2) == 0.08
assert round(measurements["time (inc)"], 2) == 0.08
assert round(measurements["time"], 2) == 0.08


def test_filter_by_max_depth(data_dir: str) -> None:
Expand All @@ -65,44 +65,44 @@ def test_filter_by_max_depth(data_dir: str) -> None:

assert len(graphframe.dataframe) == 133
assert "name" in graphframe.dataframe.columns
assert "realtime (i)" in graphframe.dataframe.columns
assert "realtime (e)" in graphframe.dataframe.columns
assert "gpuop (i)" in graphframe.dataframe.columns
assert "gker (i)" in graphframe.dataframe.columns
assert "gxcopy (i)" in graphframe.dataframe.columns
assert "gxcopy:count (i)" in graphframe.dataframe.columns
assert "time (inc)" in graphframe.dataframe.columns
assert "time" in graphframe.dataframe.columns
assert "gpuop (inc)" in graphframe.dataframe.columns
assert "gker (inc)" in graphframe.dataframe.columns
assert "gxcopy (inc)" in graphframe.dataframe.columns
assert "gxcopy:count (inc)" in graphframe.dataframe.columns

measurements = graphframe.dataframe.loc[Node(None, hnid=1195)]
assert measurements["name"] == "entry"
assert round(measurements["realtime (i)"], 2) == 1608.49
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 1608.49
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

measurements = graphframe.dataframe.loc[Node(None, hnid=1197)]
assert measurements["name"] == "gamess_"
assert round(measurements["realtime (i)"], 2) == 1608.49
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 1608.49
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

measurements = graphframe.dataframe.loc[Node(None, hnid=9846)]
assert measurements["name"] == "wfn_"
assert round(measurements["realtime (i)"], 2) == 786.09
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 786.09
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

measurements = graphframe.dataframe.loc[Node(None, hnid=9845)]
assert measurements["name"] == "[gamess.00.x]:0"
assert round(measurements["realtime (i)"], 2) == 786.09
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 786.09
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

for node in graphframe.graph.traverse():
assert node._depth <= 10
Expand All @@ -121,42 +121,42 @@ def test_filter_by_min_percentage_of_application_time(data_dir: str) -> None:

assert len(graphframe.dataframe) == 164
assert "name" in graphframe.dataframe.columns
assert "realtime (i)" in graphframe.dataframe.columns
assert "realtime (e)" in graphframe.dataframe.columns
assert "gpuop (i)" in graphframe.dataframe.columns
assert "gker (i)" in graphframe.dataframe.columns
assert "gxcopy (i)" in graphframe.dataframe.columns
assert "gxcopy:count (i)" in graphframe.dataframe.columns
assert "time (inc)" in graphframe.dataframe.columns
assert "time" in graphframe.dataframe.columns
assert "gpuop (inc)" in graphframe.dataframe.columns
assert "gker (inc)" in graphframe.dataframe.columns
assert "gxcopy (inc)" in graphframe.dataframe.columns
assert "gxcopy:count (inc)" in graphframe.dataframe.columns

measurements = graphframe.dataframe.loc[Node(None, hnid=1195)]
assert measurements["name"] == "entry"
assert round(measurements["realtime (i)"], 2) == 1608.49
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
application_time = measurements["realtime (i)"]
assert round(measurements["time (inc)"], 2) == 1608.49
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688
application_time = measurements["time (inc)"]

measurements = graphframe.dataframe.loc[Node(None, hnid=1197)]
assert measurements["name"] == "gamess_"
assert round(measurements["realtime (i)"], 2) == 1608.49
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 1608.49
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

measurements = graphframe.dataframe.loc[Node(None, hnid=2856)]
assert measurements["name"] == "__GI___sched_yield"
assert round(measurements["realtime (i)"], 3) == 159.238
assert round(measurements["realtime (e)"], 3) == 159.238
assert round(measurements["time (inc)"], 3) == 159.238
assert round(measurements["time"], 3) == 159.238

measurements = graphframe.dataframe.loc[Node(None, hnid=251)]
assert measurements["name"] == "[libc-2.31.so]:0"
assert round(measurements["realtime (i)"], 3) == 159.238
assert round(measurements["realtime (e)"], 3) == 159.238
assert round(measurements["time (inc)"], 3) == 159.238
assert round(measurements["time"], 3) == 159.238

for node in graphframe.graph.traverse():
node_time = graphframe.dataframe.loc[node]["realtime (i)"]
node_time = graphframe.dataframe.loc[node]["time (inc)"]
assert node_time / application_time >= 0.01


Expand All @@ -173,41 +173,41 @@ def test_filter_by_min_percentage_of_parent_time(data_dir: str) -> None:

assert len(graphframe.dataframe) == 4576
assert "name" in graphframe.dataframe.columns
assert "realtime (i)" in graphframe.dataframe.columns
assert "realtime (e)" in graphframe.dataframe.columns
assert "gpuop (i)" in graphframe.dataframe.columns
assert "gker (i)" in graphframe.dataframe.columns
assert "gxcopy (i)" in graphframe.dataframe.columns
assert "gxcopy:count (i)" in graphframe.dataframe.columns
assert "time (inc)" in graphframe.dataframe.columns
assert "time" in graphframe.dataframe.columns
assert "gpuop (inc)" in graphframe.dataframe.columns
assert "gker (inc)" in graphframe.dataframe.columns
assert "gxcopy (inc)" in graphframe.dataframe.columns
assert "gxcopy:count (inc)" in graphframe.dataframe.columns

measurements = graphframe.dataframe.loc[Node(None, hnid=1195)]
assert measurements["name"] == "entry"
assert round(measurements["realtime (i)"], 2) == 1608.49
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 1608.49
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

measurements = graphframe.dataframe.loc[Node(None, hnid=1197)]
assert measurements["name"] == "gamess_"
assert round(measurements["realtime (i)"], 2) == 1608.49
assert round(measurements["gpuop (i)"], 2) == 608.09
assert round(measurements["gker (i)"], 2) == 608.00
assert round(measurements["gxcopy (i)"], 2) == 0.09
assert measurements["gxcopy:count (i)"] == 9688
assert round(measurements["time (inc)"], 2) == 1608.49
assert round(measurements["gpuop (inc)"], 2) == 608.09
assert round(measurements["gker (inc)"], 2) == 608.00
assert round(measurements["gxcopy (inc)"], 2) == 0.09
assert measurements["gxcopy:count (inc)"] == 9688

measurements = graphframe.dataframe.loc[Node(None, hnid=2856)]
assert measurements["name"] == "__GI___sched_yield"
assert round(measurements["realtime (i)"], 3) == 159.238
assert round(measurements["realtime (e)"], 3) == 159.238
assert round(measurements["time (inc)"], 3) == 159.238
assert round(measurements["time"], 3) == 159.238

measurements = graphframe.dataframe.loc[Node(None, hnid=251)]
assert measurements["name"] == "[libc-2.31.so]:0"
assert round(measurements["realtime (i)"], 3) == 159.238
assert round(measurements["realtime (e)"], 3) == 159.238
assert round(measurements["time (inc)"], 3) == 159.238
assert round(measurements["time"], 3) == 159.238

for node in graphframe.graph.traverse():
node_time = graphframe.dataframe.loc[node]["realtime (i)"]
node_time = graphframe.dataframe.loc[node]["time (inc)"]
if node.frame["type"] != "entry":
parent_time = graphframe.dataframe.loc[node.parents[0]]["realtime (i)"]
parent_time = graphframe.dataframe.loc[node.parents[0]]["time (inc)"]
assert node_time / parent_time >= 0.01

0 comments on commit 422ebbd

Please sign in to comment.