Files
rocm-systems/src/utils/gui_components/memchart.py
T
xuchen-amd 80159ee117 CLI: enable roofline plot (#760)
* enable roofline plot in cli.

* Add roofline to analysis config.

* Unify global variables.

* Disable roofline for baseline comparison and gfx908.

* Add check for roofline.csv
2025-06-18 13:19:58 -04:00

1962 wiersze
102 KiB
Python

##############################################################################bl
# MIT License
#
# Copyright (c) 2021 - 2025 Advanced Micro Devices, Inc. All Rights Reserved.
#
# Permission is hereby granted, free of charge, to any person obtaining a copy
# of this software and associated documentation files (the "Software"), to deal
# in the Software without restriction, including without limitation the rights
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
# copies of the Software, and to permit persons to whom the Software is
# furnished to do so, subject to the following conditions:
#
# The above copyright notice and this permission notice shall be included in all
# copies or substantial portions of the Software.
#
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
# SOFTWARE.
##############################################################################el
from dash import html
from dash_svg import G, Path, Rect, Svg, Text
from config import HIDDEN_COLUMNS
from utils.logger import console_error
def insert_chart_data(mem_data, base_data):
if len(mem_data) != 1:
console_error("Memory Chart config doesn't follow expected formatting")
table_config = mem_data[0]["metric_table"]
original_df = base_data.dfs[table_config["id"]]
display_columns = original_df.columns.values.tolist().copy()
display_df = original_df[display_columns]
alias = display_df["Metric"].values
values = display_df["Value"].values
memchart_values = {}
for i in range(0, len(alias)):
memchart_values[alias[i]] = values[i]
return G(
className="data",
children=[
# ----------------------------------------
# Instr Buff Block
# TODO: double check wave_occupancy
Text(
x="52",
y="313",
id="wave_occ",
fill="#FFFF33",
fontSize="20px",
fontWeight="bold",
children=memchart_values["Wavefront Occupancy"],
),
Text(
x="49",
y="394",
id="wave_life",
fill="#FFFF33",
fontSize="20px",
fontWeight="bold",
children=memchart_values["Wave Life"],
),
# ----------------------------------------
# Instr Dispatch Block
Text(
x="386",
y="46",
id="salu",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["SALU"],
),
Text(
x="386",
y="96",
id="smem",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["SMEM"],
),
Text(
x="386",
y="146",
id="valu",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VALU"],
),
Text(
x="386",
y="196",
id="mfma",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["MFMA"],
),
Text(
x="386",
y="245",
id="vmem",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VMEM"],
),
Text(
x="386",
y="296",
id="lds",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["LDS"],
),
Text(
x="386",
y="344",
id="gws",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["GWS"],
),
Text(
x="386",
y="396",
id="br",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["BR"],
),
# ----------------------------------------
# Exec Block
Text(
x="480",
y="99",
id="active_cu",
fill="#FFFF33",
fontSize="20px",
fontWeight="bold",
children=memchart_values["Active CUs"],
), # x=454
Text(
x="580",
y="154",
id="vgpr",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VGPR"],
),
Text(
x="581",
y="183",
id="sgpr",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["SGPR"],
),
Text(
x="580",
y="226",
id="lds_alloc",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["LDS Allocation"],
),
Text(
x="580",
y="255",
id="scratch_alloc",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["Scratch Allocation"],
),
Text(
x="580",
y="298",
id="wavefronts",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["Wavefronts"],
),
Text(
x="580",
y="328",
id="workgroups",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["Workgroups"],
),
# ----------------------------------------
# LDS Block
Text(
x="723",
y="78",
id="lds_req",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["LDS Req"],
),
Text(
x="839",
y="85",
id="lds_util",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["LDS Util"],
),
Text(
x="839",
y="117",
id="lds_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["LDS Latency"],
),
# ----------------------------------------
# Vector L1 Cache Block
Text(
x="708",
y="204",
id="vl1_rd",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1 Rd"],
),
Text(
x="708",
y="233",
id="vl1_wr",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1 Wr"],
),
Text(
x="716",
y="265",
id="vl1_atom",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1 Atomic"],
),
Text(
x="840",
y="193",
id="vl1_hit",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VL1 Hit"],
),
Text(
x="840",
y="224",
id="vl1_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VL1 Lat"],
),
Text(
x="840",
y="256",
id="vl1_coales",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VL1 Coalesce"],
),
Text(
x="838",
y="288",
id="vl1_stall",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VL1 Stall"],
),
Text(
x="1000",
y="203",
id="vl1_l2_rd",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1_L2 Rd"],
),
Text(
x="1000",
y="232",
id="vl1_l2_wr",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1_L2 Wr"],
),
Text(
x="1008",
y="264",
id="vl1_l2_atom",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1_L2 Atomic"],
),
# ----------------------------------------
# Scalar L1D Cache Block
Text(
x="709",
y="384",
id="sl1_rd",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1D Rd"],
),
Text(
x="838",
y="372",
id="sl1_hit",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VL1D Hit"],
),
Text(
x="838",
y="404",
id="sl1_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["VL1D Lat"],
),
Text(
x="1000",
y="351",
id="sl1_l2_rd",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1D_L2 Rd"],
),
Text(
x="1000",
y="380",
id="sl1_l2_wr",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1D_L2 Wr"],
),
Text(
x="1008",
y="412",
id="sl1_l2_atom",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["VL1D_L2 Atomic"],
),
# ----------------------------------------
# Instr L1 Cache Block
Text(
x="492",
y="498",
id="il1_fetch",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["IL1 Fetch"],
),
Text(
x="837",
y="491",
id="il1_hit",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["IL1 Hit"],
),
Text(
x="837",
y="522",
id="il1_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["IL1 Lat"],
),
Text(
x="1015",
y="500",
id="il1_l2_req",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["IL1_L2 Rd"],
),
# ----------------------------------------
# L2 Cache Block(inside)
Text(
x="1145",
y="213",
id="l2_rd",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["L2 Rd"],
),
Text(
x="1145",
y="238",
id="l2_wr",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["L2 Wr"],
),
Text(
x="1145",
y="264",
id="l2_atom",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["L2 Atomic"],
),
Text(
x="1145",
y="292",
id="l2_hit",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["L2 Hit"],
),
Text(
x="1145",
y="356",
id="l2_rd_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["L2 Rd Lat"],
),
Text(
x="1145",
y="382",
id="l2_wr_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["L2 Wr Lat"],
),
# ----------------------------------------
# Fabric Block
Text(
x="1317",
y="243",
id="l2_fabric_rd",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["Fabric_L2 Rd"],
),
Text(
x="1317",
y="272",
id="l2_fabric_wr",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["Fabric_L2 Wr"],
),
Text(
x="1319",
y="303",
id="l2_fabric_atom",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["Fabric_L2 Atomic"],
),
Text(
x="1435",
y="285",
id="fabric_rd_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["Fabric Rd Lat"],
),
Text(
x="1435",
y="310",
id="fabric_wr_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["Fabric Wr Lat"],
),
Text(
x="1435",
y="336",
id="fabric_atom_lat",
fill="rgb(0, 0, 0)",
fontSize="12px",
children=memchart_values["Fabric Atomic Lat"],
),
Text(
x="1578",
y="240",
id="hbm_rd",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["HBM Rd"],
),
Text(
x="1577",
y="269",
id="hbm_wr",
fill="#FFFFFF",
fontSize="12px",
children=memchart_values["HBM Wr"],
),
],
)
def get_memchart(mem_data, base_data):
return html.Section(
id="memchart",
children=[
html.Div(
id="memchart-svg",
children=[
Svg(
children=[
G(
children=[
G(
className="instr-buff",
children=[
Rect(x="30", y="25.5"),
Rect(x="20", y="32"),
Rect(x="10", y="42"),
Rect(x="0", y="52"),
],
),
G(
className="fabric",
children=[
Rect(x="1373", y="213"),
Rect(x="1363", y="203"),
],
),
G(
className="cache",
children=[
Rect(x="757", y="460"),
Rect(x="757", y="345"),
Rect(id="a3", x="757", y="32"),
Rect(id="b3", x="757", y="165"),
],
),
G(
className="fabric-connections",
children=[
Rect(x="1383", y="56"),
Rect(x="1383", y="451"),
Rect(x="1606.69", y="227.43"),
],
),
G(
className="inner-inst-buff",
children=[
Rect(x="20", y="92"),
Rect(x="20", y="170.28"),
],
),
G(
className="misc-rec",
children=[
Rect(x="1063", y="32"),
Rect(id="a6", x="326.25", y="138.25"),
Rect(id="b6", x="450", y="122"),
],
),
G(
className="val-1",
children=[
Rect(x="319", y="32", rx="3", ry="3"),
Rect(x="319", y="82", rx="3", ry="3"),
Rect(x="319", y="132", rx="3", ry="3"),
Rect(x="319", y="182", rx="3", ry="3"),
Rect(x="319", y="231", rx="3", ry="3"),
Rect(x="319", y="282", rx="3", ry="3"),
Rect(x="319", y="329.5", rx="3", ry="3"),
Rect(x="319", y="382", rx="3", ry="3"),
Rect(x="1367.69", y="271", rx="3", ry="3"),
Rect(x="1367.69", y="296.5", rx="3", ry="3"),
Rect(x="1367.69", y="322.5", rx="3", ry="3"),
Rect(x="1078", y="199", rx="3", ry="3"),
Rect(x="1078", y="224.5", rx="3", ry="3"),
Rect(x="1078", y="250.5", rx="3", ry="3"),
Rect(x="771.44", y="103", rx="3", ry="3"),
Rect(x="770.44", y="358.75", rx="3", ry="3"),
Rect(x="770.44", y="390.25", rx="3", ry="3"),
Rect(x="769.44", y="477", rx="3", ry="3"),
Rect(x="769.44", y="508.5", rx="3", ry="3"),
Rect(x="1078", y="278", rx="3", ry="3"),
Rect(x="1078", y="342.5", rx="3", ry="3"),
Rect(x="1078", y="368.5", rx="3", ry="3"),
Rect(x="772.44", y="179", rx="3", ry="3"),
Rect(x="772.44", y="210.18", rx="3", ry="3"),
Rect(x="771.44", y="71.28", rx="3", ry="3"),
Rect(x="772.44", y="242", rx="3", ry="3"),
Rect(x="770.44", y="274.5", rx="3", ry="3"),
],
),
G(
className="val-2",
children=[
Rect(x="362", y="32", rx="3", ry="3"),
Rect(x="362", y="82", rx="3", ry="3"),
Rect(x="362", y="132", rx="3", ry="3"),
Rect(x="362", y="182", rx="3", ry="3"),
Rect(x="362", y="231", rx="3", ry="3"),
Rect(x="362", y="282", rx="3", ry="3"),
Rect(x="362", y="329.5", rx="3", ry="3"),
Rect(x="362", y="382", rx="3", ry="3"),
],
),
G(
className="val-3",
children=[
Rect(x="1410.69", y="271", rx="3", ry="3"),
Rect(x="1410.69", y="296.5", rx="3", ry="3"),
Rect(x="1410.69", y="322.5", rx="3", ry="3"),
Rect(x="1121", y="199", rx="3", ry="3"),
Rect(x="1121", y="224.5", rx="3", ry="3"),
Rect(x="1121", y="250.5", rx="3", ry="3"),
Rect(x="814.44", y="103", rx="3", ry="3"),
Rect(x="813.44", y="358.75", rx="3", ry="3"),
Rect(x="813.44", y="390.25", rx="3", ry="3"),
Rect(x="812.44", y="477", rx="3", ry="3"),
Rect(x="812.44", y="508.5", rx="3", ry="3"),
Rect(x="1121", y="278", rx="3", ry="3"),
Rect(x="1121", y="342.5", rx="3", ry="3"),
Rect(x="1121", y="368.5", rx="3", ry="3"),
Rect(x="815.44", y="179", rx="3", ry="3"),
Rect(x="815.44", y="210.18", rx="3", ry="3"),
Rect(x="814.44", y="71.28", rx="3", ry="3"),
Rect(x="815.44", y="242", rx="3", ry="3"),
Rect(x="813.44", y="274.5", rx="3", ry="3"),
],
),
G(
className="val-4",
children=[
Rect(x="460", y="212.5", rx="3", ry="3"),
Rect(x="460", y="241", rx="3", ry="3"),
Rect(x="460", y="284.54", rx="3", ry="3"),
Rect(x="460", y="314", rx="3", ry="3"),
Rect(x="460", y="140.32", rx="3", ry="3"),
Rect(x="460", y="169.16", rx="3", ry="3"),
],
),
G(
className="val-5",
children=[
Rect(
x="548.25",
y="212.98",
rx="2.86",
ry="2.86",
),
Rect(
x="548.25",
y="241.48",
rx="2.86",
ry="2.86",
),
Rect(
x="548.25",
y="285.02",
rx="2.86",
ry="2.86",
),
Rect(
x="548.25",
y="314.48",
rx="2.86",
ry="2.86",
),
Rect(
x="548.25",
y="140.8",
rx="2.86",
ry="2.86",
),
Rect(
x="549.5",
y="169.64",
rx="2.86",
ry="2.86",
),
],
),
G(
className="lines-arrows",
children=[
Path(
id="p1",
d="M 100 243.72 L 120 220.28 L 475 220.28 L 495 243.72 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 260 62 L 285.99 62.15",
fill="none",
stroke="#ff8000",
),
Path(
d="M 260 112 L 285.15 111.92",
fill="none",
stroke="#ff8000",
),
Path(
d="M 260 162 L 285.57 161.69",
fill="none",
stroke="#ff8000",
),
Path(
d="M 260 212 L 285.15 211.85",
fill="none",
stroke="#ff8000",
),
Path(
d="M 285.66 262.41 L 260 262.07",
fill="none",
stroke="#ff8000",
),
Path(
d="M 260 312 L 284.73 312.18",
fill="none",
stroke="#ff8000",
),
Path(
d="M 260 362 L 284.28 361.95",
fill="none",
stroke="#ff8000",
),
Path(
d="M 260 412 L 285.57 412.12",
fill="none",
stroke="#ff8000",
),
Path(
d="M 310.02 62.15 L 413.63 62.01",
fill="none",
stroke="#ff8000",
),
Path(
d="M 418.88 62 L 411.89 65.51 L 413.63 62.01 L 411.88 58.51 Z",
fill="#ff8000",
stroke="#ff8000",
),
Path(
d="M 309.92 111.92 L 413.63 112",
fill="none",
stroke="#ff8000",
),
Path(
d="M 418.88 112 L 411.88 115.49 L 413.63 112 L 411.88 108.49 Z",
fill="#ff8000",
stroke="#ff8000",
),
Path(
d="M 309.08 162.08 L 413.63 162",
fill="none",
stroke="#ff8000",
),
Path(
d="M 418.88 162 L 411.88 165.51 L 413.63 162 L 411.88 158.51 Z",
fill="#ff8000",
stroke="#ff8000",
),
Path(
d="M 310 212 L 413.63 212",
fill="none",
stroke="#ff8000",
),
Path(
d="M 418.88 212 L 411.88 215.5 L 413.63 212 L 411.88 208.5 Z",
fill="#ff8000",
stroke="#ff8000",
),
Path(
d="M 309.92 262.02 L 413.63 262",
fill="none",
stroke="#ff8000",
),
Path(
d="M 418.88 262 L 411.88 265.5 L 413.63 262 L 411.88 258.5 Z",
fill="#ff8000",
stroke="#ff8000",
),
Path(
d="M 309.36 312.18 L 413.63 312.01",
fill="none",
stroke="#ff8000",
),
Path(
d="M 418.88 312 L 411.89 315.51 L 413.63 312.01 L 411.88 308.51 Z",
fill="#ff8000",
stroke="#ff8000",
),
Path(
d="M 309.08 361.95 L 413.63 362",
fill="none",
stroke="#ff8000",
),
Path(
d="M 418.88 362 L 411.88 365.5 L 413.63 362 L 411.88 358.5 Z",
fill="#ff8000",
stroke="#ff8000",
),
Path(
d="M 309.36 408.56 L 413.63 408.97",
fill="none",
stroke="#ff8000",
),
Path(
d="M 418.88 409 L 411.87 412.47 L 413.63 408.97 L 411.9 405.47 Z",
fill="#ff8000",
stroke="#ff8000",
),
Path(
d="M 750 207 L 652.37 207",
fill="none",
stroke="#00cccc",
),
Path(
d="M 647.12 207 L 654.12 203.5 L 652.37 207 L 654.12 210.5 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 646 236.57 L 743.63 236.03",
fill="none",
stroke="#00cccc",
),
Path(
d="M 748.88 236.01 L 741.9 239.54 L 743.63 236.03 L 741.86 232.54 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 750 502 L 110 502 Q 100 502 100 492 L 100 468.37",
fill="none",
stroke="#00cccc",
),
Path(
d="M 100 463.12 L 103.5 470.12 L 100 468.37 L 96.5 470.12 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1050 504 L 942.37 504",
fill="none",
stroke="#00cccc",
),
Path(
d="M 937.12 504 L 944.12 500.5 L 942.37 504 L 944.12 507.5 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1597.69 242.93 L 1534.06 242.93",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1528.81 242.93 L 1535.81 239.43 L 1534.06 242.93 L 1535.81 246.43 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1527.69 274.64 L 1591.32 274.64",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1596.57 274.64 L 1589.57 278.14 L 1591.32 274.64 L 1589.57 271.14 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1413 196 L 1413 132.37",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1413 127.12 L 1416.5 134.12 L 1413 132.37 L 1409.5 134.12 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1443 126 L 1443 189.63",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1443 194.88 L 1439.5 187.88 L 1443 189.63 L 1446.5 187.88 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1413.36 441 L 1413.03 377.37",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1413.01 372.12 L 1416.54 379.1 L 1413.03 377.37 L 1409.54 379.14 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1443 371 L 1443.33 432.13",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1443.35 437.38 L 1439.82 430.4 L 1443.33 432.13 L 1446.82 430.36 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1145.25 341.38 L 1141.75 334.38 L 1145.25 336.13 L 1148.75 334.38 Z",
fill="rgb(0, 0, 0)",
stroke="rgb(0, 0, 0)",
),
Path(
d="M 740 82 L 652.37 82",
fill="none",
stroke="#00cccc",
),
Path(
d="M 647.12 82 L 654.12 78.5 L 652.37 82 L 654.12 85.5 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 744 386.75 L 656.37 386.75",
fill="none",
stroke="#00cccc",
),
Path(
d="M 651.12 386.75 L 658.12 383.25 L 656.37 386.75 L 658.12 390.25 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 651.37 269 L 743.63 269",
fill="none",
stroke="#00cccc",
),
Path(
d="M 646.12 269 L 653.12 265.5 L 651.37 269 L 653.12 272.5 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 748.88 269 L 741.88 272.5 L 743.63 269 L 741.88 265.5 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1042 206.41 L 944.37 206.41",
fill="none",
stroke="#00cccc",
),
Path(
d="M 939.12 206.41 L 946.12 202.91 L 944.37 206.41 L 946.12 209.91 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 938 235.98 L 1035.63 235.44",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1040.88 235.42 L 1033.9 238.95 L 1035.63 235.44 L 1033.86 231.95 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 943.37 268.41 L 1035.63 268.41",
fill="none",
stroke="#00cccc",
),
Path(
d="M 938.12 268.41 L 945.12 264.91 L 943.37 268.41 L 945.12 271.91 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1040.88 268.41 L 1033.88 271.91 L 1035.63 268.41 L 1033.88 264.91 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1042 354.32 L 944.37 354.32",
fill="none",
stroke="#00cccc",
),
Path(
d="M 939.12 354.32 L 946.12 350.82 L 944.37 354.32 L 946.12 357.82 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 938 383.89 L 1035.63 383.35",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1040.88 383.33 L 1033.9 386.86 L 1035.63 383.35 L 1033.86 379.86 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 943.37 416.32 L 1035.63 416.32",
fill="none",
stroke="#00cccc",
),
Path(
d="M 938.12 416.32 L 945.12 412.82 L 943.37 416.32 L 945.12 419.82 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1040.88 416.32 L 1033.88 419.82 L 1035.63 416.32 L 1033.88 412.82 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1355 245.75 L 1257.37 245.75",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1252.12 245.75 L 1259.12 242.25 L 1257.37 245.75 L 1259.12 249.25 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1251 275.32 L 1348.63 274.78",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1353.88 274.76 L 1346.9 278.29 L 1348.63 274.78 L 1346.86 271.29 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1256.37 307.75 L 1348.63 307.75",
fill="none",
stroke="#00cccc",
),
Path(
d="M 1251.12 307.75 L 1258.12 304.25 L 1256.37 307.75 L 1258.12 311.25 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
d="M 1353.88 307.75 L 1346.88 311.25 L 1348.63 307.75 L 1346.88 304.25 Z",
fill="#00cccc",
stroke="#00cccc",
),
Path(
id="p2",
d="M 235 67 L 245 57 L 265 57 L 275 67 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 220 56 L 250 56",
fill="none",
stroke="#ff8000",
),
Path(
d="M 210 65 L 250 65",
fill="none",
stroke="#ff8000",
),
Path(
d="M 200 74 L 250 74",
fill="none",
stroke="#ff8000",
),
Path(
d="M 230 47.5 L 250 47.5",
fill="none",
stroke="#ff8000",
),
Path(
id="p3",
d="M 235 117 L 245 107 L 265 107 L 275 117 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 220 106 L 250 106",
fill="none",
stroke="#ff8000",
),
Path(
d="M 210 115 L 250 115",
fill="none",
stroke="#ff8000",
),
Path(
d="M 200 124 L 250 124",
fill="none",
stroke="#ff8000",
),
Path(
d="M 230 97.5 L 250 97.5",
fill="none",
stroke="#ff8000",
),
Path(
id="p4",
d="M 235 167 L 245 157 L 265 157 L 275 167 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 220 156 L 250 156",
fill="none",
stroke="#ff8000",
),
Path(
d="M 210 165 L 250 165",
fill="none",
stroke="#ff8000",
),
Path(
d="M 200 174 L 250 174",
fill="none",
stroke="#ff8000",
),
Path(
d="M 230 147.5 L 250 147.5",
fill="none",
stroke="#ff8000",
),
Path(
id="p5",
d="M 235 217 L 245 207 L 265 207 L 275 217 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 220 206 L 250 206",
fill="none",
stroke="#ff8000",
),
Path(
d="M 210 215 L 250 215",
fill="none",
stroke="#ff8000",
),
Path(
d="M 200 224 L 250 224",
fill="none",
stroke="#ff8000",
),
Path(
d="M 230 197.5 L 250 197.5",
fill="none",
stroke="#ff8000",
),
Path(
id="p6",
d="M 235 267 L 245 257 L 265 257 L 275 267 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 220 256 L 250 256",
fill="none",
stroke="#ff8000",
),
Path(
d="M 210 265 L 250 265",
fill="none",
stroke="#ff8000",
),
Path(
d="M 200 274 L 250 274",
fill="none",
stroke="#ff8000",
),
Path(
d="M 230 247.5 L 250 247.5",
fill="none",
stroke="#ff8000",
),
Path(
id="p7",
d="M 235 317 L 245 307 L 265 307 L 275 317 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 220 306 L 250 306",
fill="none",
stroke="#ff8000",
),
Path(
d="M 210 315 L 250 315",
fill="none",
stroke="#ff8000",
),
Path(
d="M 200 324 L 250 324",
fill="none",
stroke="#ff8000",
),
Path(
d="M 230 297.5 L 250 297.5",
fill="none",
stroke="#ff8000",
),
Path(
id="p8",
d="M 235 367 L 245 357 L 265 357 L 275 367 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 220 356 L 250 356",
fill="none",
stroke="#ff8000",
),
Path(
d="M 210 365 L 250 365",
fill="none",
stroke="#ff8000",
),
Path(
d="M 200 374 L 250 374",
fill="none",
stroke="#ff8000",
),
Path(
d="M 230 347.5 L 250 347.5",
fill="none",
stroke="#ff8000",
),
Path(
id="p9",
d="M 235 417 L 245 407 L 265 407 L 275 417 Z",
fill="#ffffff",
stroke="#ff8000",
),
Path(
d="M 220 406 L 250 406",
fill="none",
stroke="#ff8000",
),
Path(
d="M 210 415 L 250 415",
fill="none",
stroke="#ff8000",
),
Path(
d="M 200 424 L 250 424",
fill="none",
stroke="#ff8000",
),
],
),
G(
className="labels",
children=[
Text(
x="12",
y="278",
fill="#FFFFFF",
fontSize="20px",
children="Wave Occupancy",
),
Text(
x="12",
y="363",
fill="#FFFFFF",
fontSize="20px",
children="Wave Life",
),
Text(
x="1428",
y="80",
fill="#FFFFFF",
fontSize="20px",
textAnchor="middle",
children="xGMI /",
),
Text(
x="1428",
y="105",
fill="#FFFFFF",
fontSize="20px",
textAnchor="middle",
children="PCIe",
),
Text(
x="1428",
y="487",
fill="#FFFFFF",
fontSize="20px",
textAnchor="middle",
children="GMI",
),
Text(
x="1652",
y="263",
fill="#FFFFFF",
fontSize="20px",
textAnchor="middle",
children="HBM",
),
Text(
x="1438",
y="230",
fill="#FFFFFF",
fontSize="20px",
textAnchor="middle",
children="Fabric",
),
Text(
x="360",
y="47",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="SALU:",
),
Text(
x="360",
y="97",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="SMEM:",
),
Text(
x="360",
y="147",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="VALU:",
),
Text(
x="360",
y="197",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="MFMA:",
),
Text(
x="360",
y="246",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="VMEM:",
),
Text(
x="360",
y="297",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="LDS:",
),
Text(
x="360",
y="344",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="GWS:",
),
Text(
x="360",
y="397",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Br:",
),
Text(
x="1463",
y="285",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="1408",
y="286",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="1463",
y="310",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="1408",
y="311",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Wr:",
),
Text(
x="1463",
y="336",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="1408",
y="337",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Atomic:",
),
Text(
x="1118",
y="214",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="1118",
y="239",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Wr:",
),
Text(
x="1118",
y="265",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Atomic:",
),
Text(
x="867",
y="117",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="812",
y="117",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Lat:",
),
Text(
x="866",
y="372",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="%",
),
Text(
x="810",
y="373",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Hit:",
),
Text(
x="866",
y="404",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="810",
y="405",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Lat:",
),
Text(
x="865",
y="491",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="%",
),
Text(
x="809",
y="492",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Hit:",
),
Text(
x="865",
y="522",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="809",
y="523",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Lat:",
),
Text(
x="1556",
y="239",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="1554",
y="269",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Wr:",
),
Text(
x="699",
y="77",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Req:",
),
Text(
x="684",
y="204",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="684",
y="233",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Wr:",
),
Text(
x="696",
y="265",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Atomic:",
),
Text(
x="102",
y="312",
fill="#FFFF33",
fontSize="20px",
fontWeight="bold",
children="per-GCD",
),
Text(
x="102",
y="393",
fill="#FFFF33",
fontSize="20px",
fontWeight="bold",
children="cycles",
),
Text(
x="1173",
y="292",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="%",
),
Text(
x="1118",
y="293",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Hit:",
),
Text(
x="1173",
y="356",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="1118",
y="357",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="1173",
y="382",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="1118",
y="383",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Wr:",
),
Text(
x="32",
y="126",
fill="#FFFFFF",
fontSize="14px",
children="Wave 0 Instr buff",
),
Text(
x="32",
y="205",
fill="#FFFFFF",
fontSize="14px",
children="Wave N-1 Instr buff",
),
Text(
x="442",
y="69",
fill="#FFFFFF",
fontSize="20px",
children="Active CUs",
),
Text(
x="868",
y="193",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="%",
),
Text(
x="812",
y="194",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Hit:",
),
Text(
x="868",
y="224",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="cycles",
),
Text(
x="812",
y="225",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Lat:",
),
Text(
x="867",
y="85",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="%",
),
Text(
x="812",
y="85",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Util:",
),
Text(
x="868",
y="256",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="%",
),
Text(
x="813",
y="256",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Coales:",
),
Text(
x="432",
y="18",
fill="#FFFFFF",
fontSize="20px",
children="Exec",
),
Text(
x="12",
y="18",
fill="#FFFFFF",
fontSize="20px",
children="Instr Buff",
),
Text(
x="250",
y="18",
fill="#FFFFFF",
fontSize="20px",
children="Instr Dispatch",
),
Text(
x="761",
y="26",
fill="#FFFFFF",
fontSize="20px",
children="LDS",
),
Text(
x="760",
y="158",
fill="#FFFFFF",
fontSize="20px",
children="Vector L1 Cache",
),
Text(
x="761",
y="337",
fill="#FFFFFF",
fontSize="20px",
children="Scalar L1D Cache",
),
Text(
x="761",
y="451",
fill="#FFFFFF",
fontSize="20px",
children="Instr L1 Cache",
),
Text(
x="1153",
y="63",
fill="#FFFFFF",
fontSize="20px",
textAnchor="middle",
children="L2 Cache",
),
Text(
x="991",
y="499",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Req:",
),
Text(
x="866",
y="288",
fill="rgb(0, 0, 0)",
fontSize="12px",
children="%",
),
Text(
x="811",
y="288",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Stall:",
),
Text(
x="468",
y="497",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Fetch:",
),
Text(
x="1153",
y="333",
fill="#FFFFFF",
fontSize="14px",
textAnchor="middle",
textDecoration="underline",
children="Latency",
),
Text(
x="543",
y="227",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="LDS Alloc:",
),
Text(
x="543",
y="255",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Scratch Alloc:",
),
Text(
x="543",
y="299",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Wavefronts:",
),
Text(
x="543",
y="328",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="Workgroups:",
),
Text(
x="543",
y="155",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="VGPRs:",
),
Text(
x="544",
y="183",
fill="rgb(0, 0, 0)",
fontSize="12px",
textAnchor="end",
children="SGPRs:",
),
Text(
x="684",
y="384",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="976",
y="204",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="976",
y="232",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Wr:",
),
Text(
x="988",
y="264",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Atomic:",
),
Text(
x="976",
y="352",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="976",
y="380",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Wr:",
),
Text(
x="988",
y="412",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Atomic:",
),
Text(
x="1292",
y="243",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Rd:",
),
Text(
x="1293",
y="272",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Wr:",
),
Text(
x="1301",
y="304",
fill="#FFFFFF",
fontSize="12px",
textAnchor="end",
children="Atomic:",
),
],
),
insert_chart_data(mem_data, base_data),
]
)
],
viewBox="-0.5 -0.5 1698 543",
)
],
)
],
)