Fix Mi300 clk timings using GRBM_GUI_ACTIVE from #255
Co-authored-by: Nick Curtis <nicholas.curtis@amd.com>
Signed-off-by: colramos-amd <colramos@amd.com>
[ROCm/rocprofiler-compute commit: bd794abb12]
This commit is contained in:
committed by
Cole Ramos
orang tua
72f0f86eae
melakukan
f779f50841
@@ -81,6 +81,9 @@ build_in_vars = {
|
||||
0) / $max_waves_per_cu) * 8) + MIN(MOD(ROUND(AVG(((4 * SQ_BUSY_CU_CYCLES) \
|
||||
/ GRBM_GUI_ACTIVE)), 0), $max_waves_per_cu), 8)), $cu_per_gpu))",
|
||||
"kernelBusyCycles": "ROUND(AVG((((End_Timestamp - Start_Timestamp) / 1000) * $max_sclk)), 0)",
|
||||
"GRBM_GUI_ACTIVE_PER_XCD": "(GRBM_GUI_ACTIVE / $num_xcd)",
|
||||
"GRBM_COUNT_PER_XCD": "(GRBM_COUNT / $num_xcd)",
|
||||
"GRBM_SPI_BUSY_PER_XCD" : "(GRBM_SPI_BUSY / $num_xcd)"
|
||||
}
|
||||
|
||||
supported_call = {
|
||||
@@ -691,6 +694,7 @@ def eval_metric(dfs, dfs_type, sys_info, raw_pmc_df, debug):
|
||||
ammolite__max_waves_per_cu = sys_info.max_waves_per_cu
|
||||
ammolite__hbm_bw = sys_info.hbm_bw
|
||||
ammolite__total_l2_chan = calc_builtin_var("$total_l2_chan", sys_info)
|
||||
ammolite__num_xcd = sys_info.num_xcd
|
||||
|
||||
# TODO: fix all $normUnit in Unit column or title
|
||||
|
||||
@@ -709,6 +713,9 @@ def eval_metric(dfs, dfs_type, sys_info, raw_pmc_df, debug):
|
||||
|
||||
ammolite__numActiveCUs = ammolite__build_in["numActiveCUs"]
|
||||
ammolite__kernelBusyCycles = ammolite__build_in["kernelBusyCycles"]
|
||||
ammolite__GRBM_GUI_ACTIVE_PER_XCD = ammolite__build_in["GRBM_GUI_ACTIVE_PER_XCD"]
|
||||
ammolite__GRBM_COUNT_PER_XCD = ammolite__build_in["GRBM_COUNT_PER_XCD"]
|
||||
ammolite__GRBM_SPI_BUSY_PER_XCD = ammolite__build_in["GRBM_SPI_BUSY_PER_XCD"]
|
||||
|
||||
# Hmmm... apply + lambda should just work
|
||||
# df['Value'] = df['Value'].apply(lambda s: eval(compile(str(s), '<string>', 'eval')))
|
||||
@@ -1003,6 +1010,7 @@ def correct_sys_info(df, specs_correction):
|
||||
"hbmBW": "hbmBW",
|
||||
"compute_partition": "compute_partition",
|
||||
"memory_partition": "memory_partition",
|
||||
"num_xcd": "num_xcd"
|
||||
}
|
||||
|
||||
# todo: more err checking for string specs_correction
|
||||
|
||||
@@ -132,6 +132,7 @@ class MachineSpecs:
|
||||
self.pipes_per_gpu: str = None
|
||||
self.total_l2_chan: str = None
|
||||
self.hbm_bw: str = None
|
||||
self.num_xcd: str = None
|
||||
# Load above SoC specs via module import
|
||||
try:
|
||||
soc_module = importlib.import_module('omniperf_soc.soc_'+ self.gpu_arch)
|
||||
@@ -226,6 +227,7 @@ class MachineSpecs:
|
||||
HBM BW: {self.hbm_bw} MB/s
|
||||
Compute Partition: {self.compute_partition}
|
||||
Memory Partition: {self.memory_partition}
|
||||
Num XCDs: {self.num_xcd}
|
||||
"""
|
||||
)
|
||||
|
||||
@@ -299,6 +301,37 @@ def total_sqc(archname, numCUs, numSEs):
|
||||
sq_per_se = ceil(sq_per_se)
|
||||
return int(sq_per_se) * int(numSEs)
|
||||
|
||||
def total_xcds(archname, compute_partition):
|
||||
# check MI300 has a valid compute partition
|
||||
mi300a_archs = ["mi300a_a0", "mi300a_a1"]
|
||||
mi300x_archs = ["mi300x_a0", "mi300x_a1"]
|
||||
if archname.lower() in mi300a_archs + mi300x_archs \
|
||||
and compute_partition == "NA":
|
||||
error("Invalid compute partition found for {}".format(archname))
|
||||
if archname.lower() not in mi300a_archs + mi300x_archs:
|
||||
return 1
|
||||
# from the whitepaper
|
||||
# https://www.amd.com/content/dam/amd/en/documents/instinct-tech-docs/white-papers/amd-cdna-3-white-paper.pdf
|
||||
if compute_partition.lower() == "spx":
|
||||
if archname.lower() in mi300a_archs:
|
||||
return 6
|
||||
if archname.lower() in mi300x_archs:
|
||||
return 8
|
||||
if compute_partition.lower() == "tpx":
|
||||
if archname.lower() in mi300a_archs:
|
||||
return 2
|
||||
if compute_partition.lower() == "dpx":
|
||||
if archname.lower() in mi300x_archs:
|
||||
return 4
|
||||
if compute_partition.lower() == "qpx":
|
||||
if archname.lower() in mi300x_archs:
|
||||
return 2
|
||||
if compute_partition.lower() == "cpx":
|
||||
if archname.lower() in mi300x_archs:
|
||||
return 2
|
||||
error("Unknown compute partition / arch found for {} / {}".format(
|
||||
compute_partition, archname))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print(MachineSpecs())
|
||||
|
||||
Reference in New Issue
Block a user