Renaming global spec vars. Replacing L2Banks with total_l2_chan (#251)

Signed-off-by: colramos-amd <colramos@amd.com>


[ROCm/rocprofiler-compute commit: 86b6c8e848]
Este commit está contenido en:
colramos-amd
2024-02-21 15:58:07 -06:00
cometido por Cole Ramos
padre 5352eafde4
commit 2ecc5a4246
Se han modificado 79 ficheros con 1044 adiciones y 1037 borrados
@@ -135,7 +135,7 @@ class OmniAnalyze_Base:
# load required configs
for d in self.__args.path:
sys_info = file_io.load_sys_info(Path(d[0], "sysinfo.csv"))
arch = sys_info.iloc[0]["arch"]
arch = sys_info.iloc[0]["gpu_arch"]
args = self.__args
self.generate_configs(
arch,
@@ -155,7 +155,7 @@ class OmniAnalyze_Base:
w.sys_info, self.__args.specs_correction
)
w.avail_ips = w.sys_info["ip_blocks"].item().split("|")
arch = w.sys_info.iloc[0]["arch"]
arch = w.sys_info.iloc[0]["gpu_arch"]
w.dfs = copy.deepcopy(self._arch_configs[arch].dfs)
w.dfs_type = self._arch_configs[arch].dfs_type
self._runs[d[0]] = w
@@ -70,13 +70,13 @@ class cli_analysis(OmniAnalyze_Base):
tty.show_kernel_stats(
self.get_args(),
self._runs,
self._arch_configs[self._runs[self.get_args().path[0][0]].sys_info.iloc[0]["arch"]],
self._arch_configs[self._runs[self.get_args().path[0][0]].sys_info.iloc[0]["gpu_arch"]],
self._output
)
else:
tty.show_all(
self.get_args(),
self._runs,
self._arch_configs[self._runs[self.get_args().path[0][0]].sys_info.iloc[0]["arch"]],
self._arch_configs[self._runs[self.get_args().path[0][0]].sys_info.iloc[0]["gpu_arch"]],
self._output
)
+14 -12
Ver fichero
@@ -159,10 +159,12 @@ class Omniperf:
def load_soc_specs(self, sysinfo=None):
"""Load OmniSoC instance for Omniperf run
"""
if not sysinfo is None:
self.__mspec = MachineSpecs(self.__args, sysinfo)
self.__mspec = MachineSpecs(self.__args, sysinfo)
if self.__args.specs:
print(self.__mspec)
sys.exit(0)
arch = self.__mspec.arch
arch = self.__mspec.gpu_arch
# NB: This checker is a bit redundent. We already check this in specs module
if arch not in self.__supported_archs.keys():
@@ -188,10 +190,10 @@ class Omniperf:
)
self.__args = parser.parse_args()
if self.__args.specs:
print(MachineSpecs(self.__args))
sys.exit(0)
if self.__args.mode == None:
if self.__args.specs:
print(MachineSpecs(self.__args))
sys.exit(0)
parser.print_help(sys.stderr)
error("Omniperf requires a valid mode.")
@@ -204,20 +206,20 @@ class Omniperf:
# Update default path
if self.__args.path == os.path.join(os.getcwd(), "workloads"):
self.__args.path = os.path.join(self.__args.path, self.__args.name, self.__mspec.GPU)
self.__args.path = os.path.join(self.__args.path, self.__args.name, self.__mspec.gpu_model)
logging.info("Profiler choice = %s" % self.__profiler_mode)
# instantiate desired profiler
if self.__profiler_mode == "rocprofv1":
from omniperf_profile.profiler_rocprof_v1 import rocprof_v1_profiler
profiler = rocprof_v1_profiler(self.__args, self.__profiler_mode, self.__soc[self.__mspec.arch])
profiler = rocprof_v1_profiler(self.__args, self.__profiler_mode, self.__soc[self.__mspec.gpu_arch])
elif self.__profiler_mode == "rocprofv2":
from omniperf_profile.profiler_rocprof_v2 import rocprof_v2_profiler
profiler = rocprof_v2_profiler(self.__args, self.__profiler_mode, self.__soc[self.__mspec.arch])
profiler = rocprof_v2_profiler(self.__args, self.__profiler_mode, self.__soc[self.__mspec.gpu_arch])
elif self.__profiler_mode == "rocscope":
from omniperf_profile.profiler_rocscope import rocscope_profiler
profiler = rocscope_profiler(self.__args, self.__profiler_mode, self.__soc[self.__mspec.arch])
profiler = rocscope_profiler(self.__args, self.__profiler_mode, self.__soc[self.__mspec.gpu_arch])
else:
logging.error("Unsupported profiler")
sys.exit(1)
@@ -225,11 +227,11 @@ class Omniperf:
# -----------------------
# run profiling workflow
#-----------------------
self.__soc[self.__mspec.arch].profiling_setup()
self.__soc[self.__mspec.gpu_arch].profiling_setup()
profiler.pre_processing()
profiler.run_profiling(self.__version["ver"], config.prog)
profiler.post_processing()
self.__soc[self.__mspec.arch].post_profiling()
self.__soc[self.__mspec.gpu_arch].post_profiling()
return
@@ -312,7 +312,7 @@ class OmniProfiler_Base:
# log basic info
logging.info(str(prog) + " ver: " + str(version))
logging.info("Path: " + str(os.path.abspath(self.__args.path)))
logging.info("Target: " + str(self._soc._mspec.GPU))
logging.info("Target: " + str(self._soc._mspec.gpu_model))
logging.info("Command: " + str(self.__args.remaining))
logging.info("Kernel Selection: " + str(self.__args.kernel))
logging.info("Dispatch Selection: " + str(self.__args.dispatch))
@@ -23,62 +23,62 @@ Panel Config:
VALU FLOPs:
value: None # No perf counter
unit: GFLOPs
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: None # No perf counter
tips:
VALU IOPs:
value: None # No perf counter
unit: GIOPs
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: None # No perf counter
tips:
MFMA FLOPs (BF16):
value: None # No perf counter
unit: GFLOPs
peak: ((($sclk * $numCU) * 512) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 512) / 1000)
pop: None # No perf counter
tips:
MFMA FLOPs (F16):
value: None # No perf counter
unit: GFLOPs
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: None # No perf counter
tips:
MFMA FLOPs (F32):
value: None # No perf counter
unit: GFLOPs
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: None # No perf counter
tips:
MFMA FLOPs (F64):
value: None # No perf counter
unit: GFLOPs
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: None # No perf counter
tips:
MFMA IOPs (Int8):
value: None # No perf counter
unit: GOPs
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: None # No perf counter
tips:
Active CUs:
value: $numActiveCUs
unit: CUs
peak: $numCU
pop: ((100 * $numActiveCUs) / $numCU)
peak: $cu_per_gpu
pop: ((100 * $numActiveCUs) / $cu_per_gpu)
tips:
SALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
VALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
MFMA Utilization:
value: None # No HW module
@@ -115,18 +115,18 @@ Panel Config:
Wavefront Occupancy:
value: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE))
unit: Wavefronts
peak: ($maxWavesPerCU * $numCU)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($maxWavesPerCU
* $numCU))))
peak: ($max_waves_per_cu * $cu_per_gpu)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($max_waves_per_cu
* $cu_per_gpu))))
coll_level: SQ_LEVEL_WAVES
tips:
Theoretical LDS Bandwidth:
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: (($sclk * $numCU) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
peak: (($max_sclk * $cu_per_gpu) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
tips:
LDS Bank Conflicts/Access:
value: AVG(((SQ_LDS_BANK_CONFLICT / (SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT))
@@ -151,9 +151,9 @@ Panel Config:
vL1D Cache BW:
value: AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numCU)
peak: ((($max_sclk / 1000) * 64) * $cu_per_gpu)
pop: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
tips:
L2 Cache Hit Rate:
value: AVG((((100 * TCC_HIT_sum) / (TCC_HIT_sum + TCC_MISS_sum)) if ((TCC_HIT_sum
@@ -166,25 +166,25 @@ Panel Config:
L2 Cache BW:
value: AVG(((TCC_REQ_sum * 64) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 64) * TO_INT($L2Banks))
peak: ((($max_sclk / 1000) * 64) * TO_INT($total_l2_chan))
pop: ((100 * AVG(((TCC_REQ_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * TO_INT($L2Banks)))
/ ((($max_sclk / 1000) * 64) * TO_INT($total_l2_chan)))
tips:
L2-Fabric Read BW:
value: AVG((((TCC_EA_RDREQ_32B_sum * 32) + ((TCC_EA_RDREQ_sum - TCC_EA_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA_RDREQ_32B_sum * 32) + ((TCC_EA_RDREQ_sum - TCC_EA_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Write BW:
value: AVG((((TCC_EA_WRREQ_64B_sum * 64) + ((TCC_EA_WRREQ_sum - TCC_EA_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA_WRREQ_64B_sum * 64) + ((TCC_EA_WRREQ_sum - TCC_EA_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Read Latency:
value: AVG(((TCC_EA_RDREQ_LEVEL_sum / TCC_EA_RDREQ_sum) if (TCC_EA_RDREQ_sum
@@ -211,9 +211,9 @@ Panel Config:
sL1D Cache BW:
value: AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Hit Rate:
value: AVG(((100 * SQC_ICACHE_HITS) / (SQC_ICACHE_HITS + SQC_ICACHE_MISSES)))
@@ -224,9 +224,9 @@ Panel Config:
L1I BW:
value: AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 32))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 32))) / ((($sclk
/ 1000) * 32) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 32))) / ((($max_sclk
/ 1000) * 32) * $sqc_per_gpu))
tips:
L1I Fetch Latency:
value: AVG((SQ_ACCUM_PREV_HIRES / SQ_IFETCH))
@@ -74,7 +74,7 @@ Panel Config:
tips:
Num CUs:
#alias: num_cu_
value: $numCU
value: $cu_per_gpu
tips:
VGPR:
#alias: vgpr_
@@ -110,7 +110,7 @@ Panel Config:
LDS Util:
#alias: lds_util_
value:
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU))),
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu))),
0)
tips:
LDS Latency:
@@ -26,9 +26,9 @@ Panel Config:
unit: Pct
tips:
Scheduler-Pipe Utilization:
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
unit: Pct
tips:
Workgroup Manager Utilization:
@@ -38,15 +38,15 @@ Panel Config:
unit: Pct
tips:
Shader Engine Utilization:
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
unit: Pct
tips:
SIMD Utilization:
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Dispatched Workgroups:
@@ -91,77 +91,77 @@ Panel Config:
tips: Tips
metric:
Not-scheduled Rate (Workgroup Manager):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Not-scheduled Rate (Scheduler-Pipe):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Scheduler-Pipe Stall Rate:
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
unit: Pct
tips:
Scratch Stall Rate:
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
unit: Pct
tips:
Insufficient SIMD Waveslots:
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD VGPRs:
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD SGPRs:
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU LDS:
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU Barriers:
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Workgroup Limit:
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Wavefront Limit:
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
@@ -92,15 +92,15 @@ Panel Config:
unit: Instr/cycle
tips:
SALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VMEM Utilization:
@@ -18,16 +18,16 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Access Rate:
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Theoretical Bandwidth (% of Peak):
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
unit: Pct of Peak
tips:
Bank Conflict Rate:
@@ -56,11 +56,11 @@ Panel Config:
unit: (Instr + $normUnit)
tips:
Theoretical Bandwidth:
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
unit: (Bytes + $normUnit)
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_ICACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -28,7 +28,7 @@ Panel Config:
unit: Pct of Peak
tips:
L1I-L2 Bandwidth:
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($sclk * $numSQC)
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_DCACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -29,7 +29,7 @@ Panel Config:
tips:
sL1D-L2 BW:
value: AVG(((SQC_TC_DATA_READ_REQ + SQC_TC_DATA_WRITE_REQ + SQC_TC_DATA_ATOMIC_REQ) * 100000)
/ (2 * ($sclk * $numSQC) * (End_Timestamp - Start_Timestamp)))
/ (2 * ($max_sclk * $sqc_per_gpu) * (End_Timestamp - Start_Timestamp)))
unit: Pct of Peak
tips:
comparable: false # for now
@@ -20,27 +20,27 @@ Panel Config:
tips: Tips
metric:
Address Processing Unit Busy:
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data Stall:
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data-Processor → Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Total Instructions:
@@ -128,15 +128,15 @@ Panel Config:
tips: Tips
metric:
Data-Return Busy:
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Cache RAM → Data-Return Stall:
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Workgroup manager → Data-Return Stall:
@@ -26,7 +26,7 @@ Panel Config:
tips:
Bandwidth:
value: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
unit: Pct of Peak
tips:
Utilization:
@@ -18,11 +18,11 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($total_l2_chan) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
Bandwidth:
value: ((100 * AVG(((TCC_REQ_sum * 64) / (End_Timestamp - Start_Timestamp)))) / ((($sclk / 1000) * 64) * TO_INT($L2Banks)))
value: ((100 * AVG(((TCC_REQ_sum * 64) / (End_Timestamp - Start_Timestamp)))) / ((($max_sclk / 1000) * 64) * TO_INT($total_l2_chan)))
unit: pct
tips:
Hit Rate:
@@ -23,62 +23,62 @@ Panel Config:
VALU FLOPs:
value: None # No perf counter
unit: GFLOPs
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: None # No perf counter
tips:
VALU IOPs:
value: None # No perf counter
unit: GIOPs
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: None # No perf counter
tips:
MFMA FLOPs (BF16):
value: None # No perf counter
unit: GFLOPs
peak: ((($sclk * $numCU) * 512) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 512) / 1000)
pop: None # No perf counter
tips:
MFMA FLOPs (F16):
value: None # No perf counter
unit: GFLOPs
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: None # No perf counter
tips:
MFMA FLOPs (F32):
value: None # No perf counter
unit: GFLOPs
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: None # No perf counter
tips:
MFMA FLOPs (F64):
value: None # No perf counter
unit: GFLOPs
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: None # No perf counter
tips:
MFMA IOPs (Int8):
value: None # No perf counter
unit: GOPs
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: None # No perf counter
tips:
Active CUs:
value: $numActiveCUs
unit: CUs
peak: $numCU
pop: ((100 * $numActiveCUs) / $numCU)
peak: $cu_per_gpu
pop: ((100 * $numActiveCUs) / $cu_per_gpu)
tips:
SALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
VALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
MFMA Utilization:
value: None # No HW module
@@ -115,18 +115,18 @@ Panel Config:
Wavefront Occupancy:
value: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE))
unit: Wavefronts
peak: ($maxWavesPerCU * $numCU)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($maxWavesPerCU
* $numCU))))
peak: ($max_waves_per_cu * $cu_per_gpu)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($max_waves_per_cu
* $cu_per_gpu))))
coll_level: SQ_LEVEL_WAVES
tips:
Theoretical LDS Bandwidth:
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: (($sclk * $numCU) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
peak: (($max_sclk * $cu_per_gpu) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
tips:
LDS Bank Conflicts/Access:
value: AVG(((SQ_LDS_BANK_CONFLICT / (SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT))
@@ -151,9 +151,9 @@ Panel Config:
vL1D Cache BW:
value: AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numCU)
peak: ((($max_sclk / 1000) * 64) * $cu_per_gpu)
pop: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
tips:
L2 Cache Hit Rate:
value: AVG((((100 * TCC_HIT_sum) / (TCC_HIT_sum + TCC_MISS_sum)) if ((TCC_HIT_sum
@@ -166,25 +166,25 @@ Panel Config:
L2 Cache BW:
value: AVG(((TCC_REQ_sum * 64) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 64) * TO_INT($L2Banks))
peak: ((($max_sclk / 1000) * 64) * TO_INT($total_l2_chan))
pop: ((100 * AVG(((TCC_REQ_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * TO_INT($L2Banks)))
/ ((($max_sclk / 1000) * 64) * TO_INT($total_l2_chan)))
tips:
L2-Fabric Read BW:
value: AVG((((TCC_EA_RDREQ_32B_sum * 32) + ((TCC_EA_RDREQ_sum - TCC_EA_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA_RDREQ_32B_sum * 32) + ((TCC_EA_RDREQ_sum - TCC_EA_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Write BW:
value: AVG((((TCC_EA_WRREQ_64B_sum * 64) + ((TCC_EA_WRREQ_sum - TCC_EA_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA_WRREQ_64B_sum * 64) + ((TCC_EA_WRREQ_sum - TCC_EA_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Read Latency:
value: AVG(((TCC_EA_RDREQ_LEVEL_sum / TCC_EA_RDREQ_sum) if (TCC_EA_RDREQ_sum
@@ -211,9 +211,9 @@ Panel Config:
sL1D Cache BW:
value: AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Hit Rate:
value: AVG(((100 * SQC_ICACHE_HITS) / (SQC_ICACHE_HITS + SQC_ICACHE_MISSES)))
@@ -224,9 +224,9 @@ Panel Config:
L1I BW:
value: AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Fetch Latency:
value: AVG((SQ_ACCUM_PREV_HIRES / SQ_IFETCH))
@@ -74,7 +74,7 @@ Panel Config:
tips:
Num CUs:
#alias: num_cu_
value: $numCU
value: $cu_per_gpu
tips:
VGPR:
#alias: vgpr_
@@ -110,7 +110,7 @@ Panel Config:
LDS Util:
#alias: lds_util_
value:
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU))),
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu))),
0)
tips:
LDS Latency:
@@ -26,9 +26,9 @@ Panel Config:
unit: Pct
tips:
Scheduler-Pipe Utilization:
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
unit: Pct
tips:
Workgroup Manager Utilization:
@@ -38,15 +38,15 @@ Panel Config:
unit: Pct
tips:
Shader Engine Utilization:
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
unit: Pct
tips:
SIMD Utilization:
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Dispatched Workgroups:
@@ -91,77 +91,77 @@ Panel Config:
tips: Tips
metric:
Not-scheduled Rate (Workgroup Manager):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Not-scheduled Rate (Scheduler-Pipe):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Scheduler-Pipe Stall Rate:
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
unit: Pct
tips:
Scratch Stall Rate:
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
unit: Pct
tips:
Insufficient SIMD Waveslots:
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD VGPRs:
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD SGPRs:
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU LDS:
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU Barriers:
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Workgroup Limit:
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Wavefront Limit:
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
@@ -92,15 +92,15 @@ Panel Config:
unit: Instr/cycle
tips:
SALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VMEM Utilization:
@@ -18,17 +18,17 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Access Rate:
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
unit: pct
Theoretical Bandwidth:
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
unit: Pct of Peak
tips:
Bank Conflict Rate:
@@ -57,11 +57,11 @@ Panel Config:
unit: (Instr + $normUnit)
tips:
Theoretical Bandwidth:
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
unit: (Bytes + $normUnit)
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_ICACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -28,7 +28,7 @@ Panel Config:
unit: Pct of Peak
tips:
L1I-L2 Bandwidth:
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($sclk * $numSQC)
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_DCACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -29,7 +29,7 @@ Panel Config:
tips:
sL1D-L2 BW:
value: AVG(((SQC_TC_DATA_READ_REQ + SQC_TC_DATA_WRITE_REQ + SQC_TC_DATA_ATOMIC_REQ) * 100000)
/ (2 * ($sclk * $numSQC) * (End_Timestamp - Start_Timestamp)))
/ (2 * ($max_sclk * $sqc_per_gpu) * (End_Timestamp - Start_Timestamp)))
unit: Pct of Peak
tips:
comparable: false # for now
@@ -20,27 +20,27 @@ Panel Config:
tips: Tips
metric:
Address Processing Unit Busy:
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data Stall:
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data-Processor → Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Total Instructions:
@@ -128,15 +128,15 @@ Panel Config:
tips: Tips
metric:
Data-Return Busy:
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Cache RAM → Data-Return Stall:
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Workgroup manager → Data-Return Stall:
@@ -26,7 +26,7 @@ Panel Config:
tips:
Bandwidth:
value: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
unit: Pct of Peak
tips:
Utilization:
@@ -18,11 +18,11 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($total_l2_chan) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
Bandwidth:
value: ((100 * AVG(((TCC_REQ_sum * 64) / (End_Timestamp - Start_Timestamp)))) / ((($sclk / 1000) * 64) * TO_INT($L2Banks)))
value: ((100 * AVG(((TCC_REQ_sum * 64) / (End_Timestamp - Start_Timestamp)))) / ((($max_sclk / 1000) * 64) * TO_INT($total_l2_chan)))
unit: pct
tips:
Hit Rate:
@@ -27,93 +27,93 @@ Panel Config:
+ SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (2 * SQ_INSTS_VALU_FMA_F64))))
/ (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
+ SQ_INSTS_VALU_TRANS_F16) + (2 * SQ_INSTS_VALU_FMA_F16))) + (64 * (((SQ_INSTS_VALU_ADD_F32
+ SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (2 * SQ_INSTS_VALU_FMA_F32))))
+ (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64)
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($sclk
* $numCU) * 64) * 2) / 1000))
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk
* $cu_per_gpu) * 64) * 2) / 1000))
tips:
VALU IOPs:
value: AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp
- Start_Timestamp)))) / (((($sclk * $numCU) * 64) * 2) / 1000))
- Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000))
tips:
MFMA FLOPs (BF16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F32):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA FLOPs (F64):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA IOPs (Int8):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
Active CUs:
value: $numActiveCUs
unit: CUs
peak: $numCU
pop: ((100 * $numActiveCUs) / $numCU)
peak: $cu_per_gpu
pop: ((100 * $numActiveCUs) / $cu_per_gpu)
tips:
SALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
VALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
MFMA Utilization:
value: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $numCU)
value: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $cu_per_gpu)
* 4)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $numCU)
pop: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $cu_per_gpu)
* 4)))
tips:
VMEM Utilization:
value: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
value: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
peak: 100
pop: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
pop: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
tips:
Branch Utilization:
value: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
value: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
peak: 100
pop: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
pop: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
tips:
VALU Active Threads:
value: AVG(((SQ_THREAD_CYCLES_VALU / SQ_ACTIVE_INST_VALU) if (SQ_ACTIVE_INST_VALU
@@ -132,18 +132,18 @@ Panel Config:
Wavefront Occupancy:
value: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE))
unit: Wavefronts
peak: ($maxWavesPerCU * $numCU)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($maxWavesPerCU
* $numCU))))
peak: ($max_waves_per_cu * $cu_per_gpu)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($max_waves_per_cu
* $cu_per_gpu))))
coll_level: SQ_LEVEL_WAVES
tips:
Theoretical LDS Bandwidth:
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: (($sclk * $numCU) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
peak: (($max_sclk * $cu_per_gpu) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
tips:
LDS Bank Conflicts/Access:
value: AVG(((SQ_LDS_BANK_CONFLICT / (SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT))
@@ -168,9 +168,9 @@ Panel Config:
vL1D Cache BW:
value: AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numCU)
peak: ((($max_sclk / 1000) * 64) * $cu_per_gpu)
pop: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
tips:
L2 Cache Hit Rate:
value: AVG((((100 * TCC_HIT_sum) / (TCC_HIT_sum + TCC_MISS_sum)) if ((TCC_HIT_sum
@@ -183,25 +183,25 @@ Panel Config:
L2 Cache BW:
value: AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 128) * TO_INT($L2Banks))
peak: ((($max_sclk / 1000) * 64) * TO_INT($total_l2_chan))
pop: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 128) * TO_INT($L2Banks)))
/ ((($max_sclk / 1000) * 64) * TO_INT($total_l2_chan)))
tips:
L2-Fabric Read BW:
value: AVG((((TCC_EA_RDREQ_32B_sum * 32) + ((TCC_EA_RDREQ_sum - TCC_EA_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA_RDREQ_32B_sum * 32) + ((TCC_EA_RDREQ_sum - TCC_EA_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Write BW:
value: AVG((((TCC_EA_WRREQ_64B_sum * 64) + ((TCC_EA_WRREQ_sum - TCC_EA_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA_WRREQ_64B_sum * 64) + ((TCC_EA_WRREQ_sum - TCC_EA_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Read Latency:
value: AVG(((TCC_EA_RDREQ_LEVEL_sum / TCC_EA_RDREQ_sum) if (TCC_EA_RDREQ_sum
@@ -228,9 +228,9 @@ Panel Config:
sL1D Cache BW:
value: AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Hit Rate:
value: AVG(((100 * SQC_ICACHE_HITS) / (SQC_ICACHE_HITS + SQC_ICACHE_MISSES)))
@@ -241,9 +241,9 @@ Panel Config:
L1I BW:
value: AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Fetch Latency:
value: AVG((SQ_ACCUM_PREV_HIRES / SQ_IFETCH))
@@ -74,7 +74,7 @@ Panel Config:
tips:
Num CUs:
#alias: num_cu_
value: $numCU
value: $cu_per_gpu
tips:
VGPR:
#alias: vgpr_
@@ -111,7 +111,7 @@ Panel Config:
LDS Util:
#alias: lds_util_
value:
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU))),
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu))),
0)
tips:
LDS Latency:
@@ -26,9 +26,9 @@ Panel Config:
unit: Pct
tips:
Scheduler-Pipe Utilization:
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
unit: Pct
tips:
Workgroup Manager Utilization:
@@ -38,15 +38,15 @@ Panel Config:
unit: Pct
tips:
Shader Engine Utilization:
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
unit: Pct
tips:
SIMD Utilization:
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Dispatched Workgroups:
@@ -91,77 +91,77 @@ Panel Config:
tips: Tips
metric:
Not-scheduled Rate (Workgroup Manager):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Not-scheduled Rate (Scheduler-Pipe):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Scheduler-Pipe Stall Rate:
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
unit: Pct
tips:
Scratch Stall Rate:
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
unit: Pct
tips:
Insufficient SIMD Waveslots:
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD VGPRs:
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD SGPRs:
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU LDS:
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU Barriers:
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Workgroup Limit:
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Wavefront Limit:
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
@@ -26,55 +26,55 @@ Panel Config:
+ SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (2 * SQ_INSTS_VALU_FMA_F64))))
/ (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
+ SQ_INSTS_VALU_TRANS_F16) + (2 * SQ_INSTS_VALU_FMA_F16))) + (64 * (((SQ_INSTS_VALU_ADD_F32
+ SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (2 * SQ_INSTS_VALU_FMA_F32))))
+ (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64)
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($sclk
* $numCU) * 64) * 2) / 1000))
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk
* $cu_per_gpu) * 64) * 2) / 1000))
tips:
VALU IOPs:
value: AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp
- Start_Timestamp)))) / (((($sclk * $numCU) * 64) * 2) / 1000))
- Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000))
tips:
MFMA FLOPs (BF16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F32):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA FLOPs (F64):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA IOPs (INT8):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
- metric_table:
@@ -107,27 +107,27 @@ Panel Config:
unit: Instr/cycle
tips:
SALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VMEM Utilization:
avg: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
Branch Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Active Threads:
@@ -140,9 +140,9 @@ Panel Config:
unit: Threads
tips:
MFMA Utilization:
avg: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
min: MIN(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
max: MAX(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
avg: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
min: MIN(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
max: MAX(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
MFMA Instr Cycles:
@@ -18,16 +18,16 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Access Rate:
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Theoretical Bandwidth:
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
unit: Pct of Peak
tips:
Bank Conflict Rate:
@@ -56,11 +56,11 @@ Panel Config:
unit: (Instr + $normUnit)
tips:
Theoretical Bandwidth:
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
unit: (Bytes + $normUnit)
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_ICACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -28,7 +28,7 @@ Panel Config:
unit: Pct of Peak
tips:
L1I-L2 Bandwidth:
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($sclk * $numSQC)
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_DCACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -29,7 +29,7 @@ Panel Config:
tips:
sL1D-L2 BW:
value: AVG(((SQC_TC_DATA_READ_REQ + SQC_TC_DATA_WRITE_REQ + SQC_TC_DATA_ATOMIC_REQ) * 100000)
/ (2 * ($sclk * $numSQC) * (End_Timestamp - Start_Timestamp)))
/ (2 * ($max_sclk * $sqc_per_gpu) * (End_Timestamp - Start_Timestamp)))
unit: Pct of Peak
tips:
comparable: false # for now
@@ -20,27 +20,27 @@ Panel Config:
tips: Tips
metric:
Address Processing Unit Busy:
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data Stall:
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data-Processor → Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Total Instructions:
@@ -128,21 +128,21 @@ Panel Config:
tips: Tips
metric:
Data-Return Busy:
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Cache RAM → Data-Return Stall:
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Workgroup manager → Data-Return Stall:
avg: AVG(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Coalescable Instructions:
@@ -26,7 +26,7 @@ Panel Config:
tips:
Bandwidth:
value: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
unit: Pct of Peak
tips:
Utilization:
@@ -18,11 +18,11 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($total_l2_chan) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
Bandwidth:
value: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))) / ((($sclk / 1000) * 128) * TO_INT($L2Banks)))
value: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))) / ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan)))
unit: pct
tips:
Hit Rate:
@@ -27,93 +27,93 @@ Panel Config:
+ SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (2 * SQ_INSTS_VALU_FMA_F64))))
/ (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
+ SQ_INSTS_VALU_TRANS_F16) + (2 * SQ_INSTS_VALU_FMA_F16))) + (64 * (((SQ_INSTS_VALU_ADD_F32
+ SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (2 * SQ_INSTS_VALU_FMA_F32))))
+ (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64)
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($sclk
* $numCU) * 64) * 2) / 1000))
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk
* $cu_per_gpu) * 64) * 2) / 1000))
tips:
VALU IOPs:
value: AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp
- Start_Timestamp)))) / (((($sclk * $numCU) * 64) * 2) / 1000))
- Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000))
tips:
MFMA FLOPs (BF16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
MFMA FLOPs (F16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
MFMA FLOPs (F32):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA FLOPs (F64):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA IOPs (Int8):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
Active CUs:
value: $numActiveCUs
unit: CUs
peak: $numCU
pop: ((100 * $numActiveCUs) / $numCU)
peak: $cu_per_gpu
pop: ((100 * $numActiveCUs) / $cu_per_gpu)
tips:
SALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
VALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
MFMA Utilization:
value: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $numCU)
value: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $cu_per_gpu)
* 4)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $numCU)
pop: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $cu_per_gpu)
* 4)))
tips:
VMEM Utilization:
value: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
value: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
peak: 100
pop: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
pop: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
tips:
Branch Utilization:
value: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
value: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
peak: 100
pop: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
pop: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
tips:
VALU Active Threads:
value: AVG(((SQ_THREAD_CYCLES_VALU / SQ_ACTIVE_INST_VALU) if (SQ_ACTIVE_INST_VALU
@@ -132,18 +132,18 @@ Panel Config:
Wavefront Occupancy:
value: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE))
unit: Wavefronts
peak: ($maxWavesPerCU * $numCU)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($maxWavesPerCU
* $numCU))))
peak: ($max_waves_per_cu * $cu_per_gpu)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($max_waves_per_cu
* $cu_per_gpu))))
coll_level: SQ_LEVEL_WAVES
tips:
Theoretical LDS Bandwidth:
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: (($sclk * $numCU) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
peak: (($max_sclk * $cu_per_gpu) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
tips:
LDS Bank Conflicts/Access:
value: AVG(((SQ_LDS_BANK_CONFLICT / (SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT))
@@ -168,9 +168,9 @@ Panel Config:
vL1D Cache BW:
value: AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numCU)
peak: ((($max_sclk / 1000) * 64) * $cu_per_gpu)
pop: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
tips:
L2 Cache Hit Rate:
value: AVG((((100 * TCC_HIT_sum) / (TCC_HIT_sum + TCC_MISS_sum)) if ((TCC_HIT_sum
@@ -183,25 +183,25 @@ Panel Config:
L2 Cache BW:
value: AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 128) * TO_INT($L2Banks))
peak: ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan))
pop: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 128) * TO_INT($L2Banks)))
/ ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan)))
tips:
L2-Fabric Read BW:
value: AVG((((TCC_EA0_RDREQ_32B_sum * 32) + ((TCC_EA0_RDREQ_sum - TCC_EA0_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA0_RDREQ_32B_sum * 32) + ((TCC_EA0_RDREQ_sum - TCC_EA0_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Write BW:
value: AVG((((TCC_EA0_WRREQ_64B_sum * 64) + ((TCC_EA0_WRREQ_sum - TCC_EA0_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA0_WRREQ_64B_sum * 64) + ((TCC_EA0_WRREQ_sum - TCC_EA0_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Read Latency:
value: AVG(((TCC_EA0_RDREQ_LEVEL_sum / TCC_EA0_RDREQ_sum) if (TCC_EA0_RDREQ_sum
@@ -228,9 +228,9 @@ Panel Config:
sL1D Cache BW:
value: AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Hit Rate:
value: AVG(((100 * SQC_ICACHE_HITS) / (SQC_ICACHE_HITS + SQC_ICACHE_MISSES)))
@@ -241,9 +241,9 @@ Panel Config:
L1I BW:
value: AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Fetch Latency:
value: AVG((SQ_ACCUM_PREV_HIRES / SQ_IFETCH))
@@ -74,7 +74,7 @@ Panel Config:
tips:
Num CUs:
#alias: num_cu_
value: $numCU
value: $cu_per_gpu
tips:
VGPR:
#alias: vgpr_
@@ -111,7 +111,7 @@ Panel Config:
LDS Util:
#alias: lds_util_
value:
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU))),
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu))),
0)
tips:
LDS Latency:
@@ -26,9 +26,9 @@ Panel Config:
unit: Pct
tips:
Scheduler-Pipe Utilization:
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
unit: Pct
tips:
Workgroup Manager Utilization:
@@ -38,15 +38,15 @@ Panel Config:
unit: Pct
tips:
Shader Engine Utilization:
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
unit: Pct
tips:
SIMD Utilization:
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Dispatched Workgroups:
@@ -91,77 +91,77 @@ Panel Config:
tips: Tips
metric:
Not-scheduled Rate (Workgroup Manager):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Not-scheduled Rate (Scheduler-Pipe):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Scheduler-Pipe Stall Rate:
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
unit: Pct
tips:
Scratch Stall Rate:
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
unit: Pct
tips:
Insufficient SIMD Waveslots:
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD VGPRs:
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD SGPRs:
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU LDS:
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU Barriers:
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Workgroup Limit:
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Wavefront Limit:
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
@@ -26,55 +26,55 @@ Panel Config:
+ SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (2 * SQ_INSTS_VALU_FMA_F64))))
/ (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
+ SQ_INSTS_VALU_TRANS_F16) + (2 * SQ_INSTS_VALU_FMA_F16))) + (64 * (((SQ_INSTS_VALU_ADD_F32
+ SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (2 * SQ_INSTS_VALU_FMA_F32))))
+ (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64)
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($sclk
* $numCU) * 64) * 2) / 1000))
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk
* $cu_per_gpu) * 64) * 2) / 1000))
tips:
VALU IOPs:
value: AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp
- Start_Timestamp)))) / (((($sclk * $numCU) * 64) * 2) / 1000))
- Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000))
tips:
MFMA FLOPs (BF16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F32):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA FLOPs (F64):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA IOPs (INT8):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
- metric_table:
@@ -107,27 +107,27 @@ Panel Config:
unit: Instr/cycle
tips:
SALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VMEM Utilization:
avg: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
Branch Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Active Threads:
@@ -140,9 +140,9 @@ Panel Config:
unit: Threads
tips:
MFMA Utilization:
avg: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
min: MIN(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
max: MAX(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
avg: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
min: MIN(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
max: MAX(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
MFMA Instr Cycles:
@@ -18,16 +18,16 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Access Rate:
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Theoretical Bandwidth (% of Peak):
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
unit: Pct of Peak
tips:
Bank Conflict Rate:
@@ -56,11 +56,11 @@ Panel Config:
unit: (Instr + $normUnit)
tips:
Theoretical Bandwidth:
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
unit: (Bytes + $normUnit)
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_ICACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -28,7 +28,7 @@ Panel Config:
unit: Pct of Peak
tips:
L1I-L2 Bandwidth:
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($sclk * $numSQC)
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_DCACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -29,7 +29,7 @@ Panel Config:
tips:
sL1D-L2 BW:
value: AVG(((SQC_TC_DATA_READ_REQ + SQC_TC_DATA_WRITE_REQ + SQC_TC_DATA_ATOMIC_REQ) * 100000)
/ (2 * ($sclk * $numSQC) * (End_Timestamp - Start_Timestamp)))
/ (2 * ($max_sclk * $sqc_per_gpu) * (End_Timestamp - Start_Timestamp)))
unit: Pct of Peak
tips:
comparable: false # for now
@@ -20,27 +20,27 @@ Panel Config:
tips: Tips
metric:
Address Processing Unit Busy:
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data Stall:
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data-Processor → Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Total Instructions:
@@ -128,21 +128,21 @@ Panel Config:
tips: Tips
metric:
Data-Return Busy:
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Cache RAM → Data-Return Stall:
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Workgroup manager → Data-Return Stall:
avg: AVG(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Coalescable Instructions:
@@ -26,7 +26,7 @@ Panel Config:
tips:
Bandwidth:
value: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
unit: Pct of Peak
tips:
Utilization:
@@ -18,11 +18,11 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($total_l2_chan) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
Bandwidth:
value: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))) / ((($sclk / 1000) * 128) * TO_INT($L2Banks)))
value: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))) / ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan)))
unit: pct
tips:
Hit Rate:
@@ -117,7 +117,7 @@ Panel Config:
(((100 * TCC_HIT[::_1]) / (TCC_HIT[::_1] + TCC_MISS[::_1])) if ((TCC_HIT[::_1]
+ TCC_MISS[::_1]) != 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -130,7 +130,7 @@ Panel Config:
"::_1":
expr: (TO_INT(TCC_REQ[::_1]) / $denom)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -147,7 +147,7 @@ Panel Config:
write req: AVG((TO_INT(TCC_WRITE[::_1]) / $denom))
atomic req: AVG((TO_INT(TCC_ATOMIC[::_1]) / $denom))
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -164,7 +164,7 @@ Panel Config:
write req: AVG((TO_INT(TCC_EA0_WRREQ[::_1]) / $denom))
atomic req: AVG((TO_INT(TCC_EA0_ATOMIC[::_1]) / $denom))
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
# - metric_table:
@@ -187,7 +187,7 @@ Panel Config:
# AVG(((TCC_EA0_ATOMIC_LEVEL[::_1] / TCC_EA0_ATOMIC[::_1]) if
# (TCC_EA0_ATOMIC[::_1] != 0) else 0))
# placeholder_range:
# "::_1": $totalL2Banks
# "::_1": $total_l2_chan
# cli_style: simple_multiple_bar
- metric_table:
@@ -202,7 +202,7 @@ Panel Config:
((TCC_EA0_RDREQ_LEVEL[::_1] / TCC_EA0_RDREQ[::_1]) if (TCC_EA0_RDREQ[::_1]
!= 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -217,7 +217,7 @@ Panel Config:
((TCC_EA0_WRREQ_LEVEL[::_1] / TCC_EA0_WRREQ[::_1]) if (TCC_EA0_WRREQ[::_1]
!= 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -231,7 +231,7 @@ Panel Config:
expr: ((TCC_EA0_ATOMIC_LEVEL[::_1] / TCC_EA0_ATOMIC[::_1]) if
(TCC_EA0_ATOMIC[::_1] != 0) else 0)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -248,7 +248,7 @@ Panel Config:
ea read stall - gmi: None # Missing perfmon
ea read stall - dram: None # Missing perfmon
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -267,7 +267,7 @@ Panel Config:
ea write stall - dram: None # Missing perfmon
ea write stall - starve: AVG((TO_INT(TCC_TOO_MANY_EA_WRREQS_STALL[::_1]) / $denom))
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -280,7 +280,7 @@ Panel Config:
"::_1":
expr: TCC_TAG_STALL[::_1]
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -293,6 +293,6 @@ Panel Config:
"::_1":
expr: TCC_BUBBLE[::_1]
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
# tips: Number of 128-byte read requests sent to EA
cli_style: simple_box
@@ -27,93 +27,93 @@ Panel Config:
+ SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (2 * SQ_INSTS_VALU_FMA_F64))))
/ (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
+ SQ_INSTS_VALU_TRANS_F16) + (2 * SQ_INSTS_VALU_FMA_F16))) + (64 * (((SQ_INSTS_VALU_ADD_F32
+ SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (2 * SQ_INSTS_VALU_FMA_F32))))
+ (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64)
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($sclk
* $numCU) * 64) * 2) / 1000))
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk
* $cu_per_gpu) * 64) * 2) / 1000))
tips:
VALU IOPs:
value: AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp
- Start_Timestamp)))) / (((($sclk * $numCU) * 64) * 2) / 1000))
- Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000))
tips:
MFMA FLOPs (BF16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
MFMA FLOPs (F16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
MFMA FLOPs (F32):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA FLOPs (F64):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA IOPs (Int8):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
Active CUs:
value: $numActiveCUs
unit: CUs
peak: $numCU
pop: ((100 * $numActiveCUs) / $numCU)
peak: $cu_per_gpu
pop: ((100 * $numActiveCUs) / $cu_per_gpu)
tips:
SALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
VALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
MFMA Utilization:
value: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $numCU)
value: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $cu_per_gpu)
* 4)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $numCU)
pop: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $cu_per_gpu)
* 4)))
tips:
VMEM Utilization:
value: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
value: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
peak: 100
pop: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
pop: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
tips:
Branch Utilization:
value: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
value: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
peak: 100
pop: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
pop: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
tips:
VALU Active Threads:
value: AVG(((SQ_THREAD_CYCLES_VALU / SQ_ACTIVE_INST_VALU) if (SQ_ACTIVE_INST_VALU
@@ -132,18 +132,18 @@ Panel Config:
Wavefront Occupancy:
value: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE))
unit: Wavefronts
peak: ($maxWavesPerCU * $numCU)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($maxWavesPerCU
* $numCU))))
peak: ($max_waves_per_cu * $cu_per_gpu)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($max_waves_per_cu
* $cu_per_gpu))))
coll_level: SQ_LEVEL_WAVES
tips:
Theoretical LDS Bandwidth:
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: (($sclk * $numCU) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
peak: (($max_sclk * $cu_per_gpu) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
tips:
LDS Bank Conflicts/Access:
value: AVG(((SQ_LDS_BANK_CONFLICT / (SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT))
@@ -168,9 +168,9 @@ Panel Config:
vL1D Cache BW:
value: AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numCU)
peak: ((($max_sclk / 1000) * 64) * $cu_per_gpu)
pop: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
tips:
L2 Cache Hit Rate:
value: AVG((((100 * TCC_HIT_sum) / (TCC_HIT_sum + TCC_MISS_sum)) if ((TCC_HIT_sum
@@ -183,25 +183,25 @@ Panel Config:
L2 Cache BW:
value: AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 128) * TO_INT($L2Banks))
peak: ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan))
pop: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 128) * TO_INT($L2Banks)))
/ ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan)))
tips:
L2-Fabric Read BW:
value: AVG((((TCC_EA0_RDREQ_32B_sum * 32) + ((TCC_EA0_RDREQ_sum - TCC_EA0_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA0_RDREQ_32B_sum * 32) + ((TCC_EA0_RDREQ_sum - TCC_EA0_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Write BW:
value: AVG((((TCC_EA0_WRREQ_64B_sum * 64) + ((TCC_EA0_WRREQ_sum - TCC_EA0_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA0_WRREQ_64B_sum * 64) + ((TCC_EA0_WRREQ_sum - TCC_EA0_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Read Latency:
value: AVG(((TCC_EA0_RDREQ_LEVEL_sum / TCC_EA0_RDREQ_sum) if (TCC_EA0_RDREQ_sum
@@ -228,9 +228,9 @@ Panel Config:
sL1D Cache BW:
value: AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Hit Rate:
value: AVG(((100 * SQC_ICACHE_HITS) / (SQC_ICACHE_HITS + SQC_ICACHE_MISSES)))
@@ -241,9 +241,9 @@ Panel Config:
L1I BW:
value: AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Fetch Latency:
value: AVG((SQ_ACCUM_PREV_HIRES / SQ_IFETCH))
@@ -74,7 +74,7 @@ Panel Config:
tips:
Num CUs:
#alias: num_cu_
value: $numCU
value: $cu_per_gpu
tips:
VGPR:
#alias: vgpr_
@@ -111,7 +111,7 @@ Panel Config:
LDS Util:
#alias: lds_util_
value:
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU))),
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu))),
0)
tips:
LDS Latency:
@@ -26,9 +26,9 @@ Panel Config:
unit: Pct
tips:
Scheduler-Pipe Utilization:
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
unit: Pct
tips:
Workgroup Manager Utilization:
@@ -38,15 +38,15 @@ Panel Config:
unit: Pct
tips:
Shader Engine Utilization:
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
unit: Pct
tips:
SIMD Utilization:
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Dispatched Workgroups:
@@ -91,77 +91,77 @@ Panel Config:
tips: Tips
metric:
Not-scheduled Rate (Workgroup Manager):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Not-scheduled Rate (Scheduler-Pipe):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Scheduler-Pipe Stall Rate:
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
unit: Pct
tips:
Scratch Stall Rate:
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
unit: Pct
tips:
Insufficient SIMD Waveslots:
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD VGPRs:
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD SGPRs:
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU LDS:
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU Barriers:
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Workgroup Limit:
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Wavefront Limit:
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
@@ -26,55 +26,55 @@ Panel Config:
+ SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (2 * SQ_INSTS_VALU_FMA_F64))))
/ (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
+ SQ_INSTS_VALU_TRANS_F16) + (2 * SQ_INSTS_VALU_FMA_F16))) + (64 * (((SQ_INSTS_VALU_ADD_F32
+ SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (2 * SQ_INSTS_VALU_FMA_F32))))
+ (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64)
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($sclk
* $numCU) * 64) * 2) / 1000))
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk
* $cu_per_gpu) * 64) * 2) / 1000))
tips:
VALU IOPs:
value: AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp
- Start_Timestamp)))) / (((($sclk * $numCU) * 64) * 2) / 1000))
- Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000))
tips:
MFMA FLOPs (BF16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F32):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA FLOPs (F64):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA IOPs (INT8):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
- metric_table:
@@ -107,27 +107,27 @@ Panel Config:
unit: Instr/cycle
tips:
SALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VMEM Utilization:
avg: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
Branch Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Active Threads:
@@ -140,9 +140,9 @@ Panel Config:
unit: Threads
tips:
MFMA Utilization:
avg: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
min: MIN(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
max: MAX(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
avg: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
min: MIN(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
max: MAX(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
MFMA Instr Cycles:
@@ -18,16 +18,16 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Access Rate:
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Theoretical Bandwidth (% of Peak):
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
unit: Pct of Peak
tips:
Bank Conflict Rate:
@@ -56,11 +56,11 @@ Panel Config:
unit: (Instr + $normUnit)
tips:
Theoretical Bandwidth:
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
unit: (Bytes + $normUnit)
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_ICACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -28,7 +28,7 @@ Panel Config:
unit: Pct of Peak
tips:
L1I-L2 Bandwidth:
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($sclk * $numSQC)
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_DCACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -29,7 +29,7 @@ Panel Config:
tips:
sL1D-L2 BW:
value: AVG(((SQC_TC_DATA_READ_REQ + SQC_TC_DATA_WRITE_REQ + SQC_TC_DATA_ATOMIC_REQ) * 100000)
/ (2 * ($sclk * $numSQC) * (End_Timestamp - Start_Timestamp)))
/ (2 * ($max_sclk * $sqc_per_gpu) * (End_Timestamp - Start_Timestamp)))
unit: Pct of Peak
tips:
comparable: false # for now
@@ -20,27 +20,27 @@ Panel Config:
tips: Tips
metric:
Address Processing Unit Busy:
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data Stall:
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data-Processor → Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Total Instructions:
@@ -128,21 +128,21 @@ Panel Config:
tips: Tips
metric:
Data-Return Busy:
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Cache RAM → Data-Return Stall:
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Workgroup manager → Data-Return Stall:
avg: AVG(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Coalescable Instructions:
@@ -26,7 +26,7 @@ Panel Config:
tips:
Bandwidth:
value: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
unit: Pct of Peak
tips:
Utilization:
@@ -18,11 +18,11 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($total_l2_chan) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
Bandwidth:
value: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))) / ((($sclk / 1000) * 128) * TO_INT($L2Banks)))
value: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))) / ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan)))
unit: pct
tips:
Hit Rate:
@@ -117,7 +117,7 @@ Panel Config:
(((100 * TCC_HIT[::_1]) / (TCC_HIT[::_1] + TCC_MISS[::_1])) if ((TCC_HIT[::_1]
+ TCC_MISS[::_1]) != 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -130,7 +130,7 @@ Panel Config:
"::_1":
expr: (TO_INT(TCC_REQ[::_1]) / $denom)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -147,7 +147,7 @@ Panel Config:
write req: AVG((TO_INT(TCC_WRITE[::_1]) / $denom))
atomic req: AVG((TO_INT(TCC_ATOMIC[::_1]) / $denom))
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -164,7 +164,7 @@ Panel Config:
write req: AVG((TO_INT(TCC_EA0_WRREQ[::_1]) / $denom))
atomic req: AVG((TO_INT(TCC_EA0_ATOMIC[::_1]) / $denom))
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
# - metric_table:
@@ -187,7 +187,7 @@ Panel Config:
# AVG(((TCC_EA0_ATOMIC_LEVEL[::_1] / TCC_EA0_ATOMIC[::_1]) if
# (TCC_EA0_ATOMIC[::_1] != 0) else 0))
# placeholder_range:
# "::_1": $totalL2Banks
# "::_1": $total_l2_chan
# cli_style: simple_multiple_bar
- metric_table:
@@ -202,7 +202,7 @@ Panel Config:
((TCC_EA0_RDREQ_LEVEL[::_1] / TCC_EA0_RDREQ[::_1]) if (TCC_EA0_RDREQ[::_1]
!= 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -217,7 +217,7 @@ Panel Config:
((TCC_EA0_WRREQ_LEVEL[::_1] / TCC_EA0_WRREQ[::_1]) if (TCC_EA0_WRREQ[::_1]
!= 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -231,7 +231,7 @@ Panel Config:
expr: ((TCC_EA0_ATOMIC_LEVEL[::_1] / TCC_EA0_ATOMIC[::_1]) if
(TCC_EA0_ATOMIC[::_1] != 0) else 0)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -248,7 +248,7 @@ Panel Config:
ea read stall - gmi: None # Missing perfmon
ea read stall - dram: None # Missing perfmon
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -267,7 +267,7 @@ Panel Config:
ea write stall - dram: None # Missing perfmon
ea write stall - starve: TCC_TOO_MANY_EA_WRREQS_STALL
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -280,7 +280,7 @@ Panel Config:
"::_1":
expr: TCC_TAG_STALL[::_1]
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -293,6 +293,6 @@ Panel Config:
"::_1":
expr: TCC_BUBBLE[::_1]
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
# tips: Number of 128-byte read requests sent to EA
cli_style: simple_box
@@ -27,93 +27,93 @@ Panel Config:
+ SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (2 * SQ_INSTS_VALU_FMA_F64))))
/ (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
+ SQ_INSTS_VALU_TRANS_F16) + (2 * SQ_INSTS_VALU_FMA_F16))) + (64 * (((SQ_INSTS_VALU_ADD_F32
+ SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (2 * SQ_INSTS_VALU_FMA_F32))))
+ (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64)
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($sclk
* $numCU) * 64) * 2) / 1000))
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk
* $cu_per_gpu) * 64) * 2) / 1000))
tips:
VALU IOPs:
value: AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp
- Start_Timestamp)))) / (((($sclk * $numCU) * 64) * 2) / 1000))
- Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000))
tips:
MFMA FLOPs (BF16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
MFMA FLOPs (F16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
MFMA FLOPs (F32):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA FLOPs (F64):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA IOPs (Int8):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: ((($sclk * $numCU) * 4096) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 4096) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 4096) / 1000))
tips:
Active CUs:
value: $numActiveCUs
unit: CUs
peak: $numCU
pop: ((100 * $numActiveCUs) / $numCU)
peak: $cu_per_gpu
pop: ((100 * $numActiveCUs) / $cu_per_gpu)
tips:
SALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_SCA) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
VALU Utilization:
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $numCU)))
pop: AVG(((100 * SQ_ACTIVE_INST_VALU) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
tips:
MFMA Utilization:
value: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $numCU)
value: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $cu_per_gpu)
* 4)))
unit: pct
peak: 100
pop: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $numCU)
pop: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((GRBM_GUI_ACTIVE * $cu_per_gpu)
* 4)))
tips:
VMEM Utilization:
value: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
value: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
peak: 100
pop: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
pop: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
tips:
Branch Utilization:
value: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
value: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
peak: 100
pop: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
pop: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
tips:
VALU Active Threads:
value: AVG(((SQ_THREAD_CYCLES_VALU / SQ_ACTIVE_INST_VALU) if (SQ_ACTIVE_INST_VALU
@@ -132,18 +132,18 @@ Panel Config:
Wavefront Occupancy:
value: AVG((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE))
unit: Wavefronts
peak: ($maxWavesPerCU * $numCU)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($maxWavesPerCU
* $numCU))))
peak: ($max_waves_per_cu * $cu_per_gpu)
pop: (100 * AVG(((SQ_ACCUM_PREV_HIRES / GRBM_GUI_ACTIVE) / ($max_waves_per_cu
* $cu_per_gpu))))
coll_level: SQ_LEVEL_WAVES
tips:
Theoretical LDS Bandwidth:
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
value: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: (($sclk * $numCU) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
peak: (($max_sclk * $cu_per_gpu) * 0.128)
pop: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
tips:
LDS Bank Conflicts/Access:
value: AVG(((SQ_LDS_BANK_CONFLICT / (SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT))
@@ -168,9 +168,9 @@ Panel Config:
vL1D Cache BW:
value: AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numCU)
peak: ((($max_sclk / 1000) * 64) * $cu_per_gpu)
pop: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
tips:
L2 Cache Hit Rate:
value: AVG((((100 * TCC_HIT_sum) / (TCC_HIT_sum + TCC_MISS_sum)) if ((TCC_HIT_sum
@@ -183,25 +183,25 @@ Panel Config:
L2 Cache BW:
value: AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: ((($sclk / 1000) * 128) * TO_INT($L2Banks))
peak: ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan))
pop: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 128) * TO_INT($L2Banks)))
/ ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan)))
tips:
L2-Fabric Read BW:
value: AVG((((TCC_EA0_RDREQ_32B_sum * 32) + ((TCC_EA0_RDREQ_sum - TCC_EA0_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA0_RDREQ_32B_sum * 32) + ((TCC_EA0_RDREQ_sum - TCC_EA0_RDREQ_32B_sum)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 64)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Write BW:
value: AVG((((TCC_EA0_WRREQ_64B_sum * 64) + ((TCC_EA0_WRREQ_sum - TCC_EA0_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))
unit: GB/s
peak: $hbmBW
peak: $hbm_bw
pop: ((100 * AVG((((TCC_EA0_WRREQ_64B_sum * 64) + ((TCC_EA0_WRREQ_sum - TCC_EA0_WRREQ_64B_sum)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbmBW)
* 32)) / (End_Timestamp - Start_Timestamp)))) / $hbm_bw)
tips:
L2-Fabric Read Latency:
value: AVG(((TCC_EA0_RDREQ_LEVEL_sum / TCC_EA0_RDREQ_sum) if (TCC_EA0_RDREQ_sum
@@ -228,9 +228,9 @@ Panel Config:
sL1D Cache BW:
value: AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_DCACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Hit Rate:
value: AVG(((100 * SQC_ICACHE_HITS) / (SQC_ICACHE_HITS + SQC_ICACHE_MISSES)))
@@ -241,9 +241,9 @@ Panel Config:
L1I BW:
value: AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))
unit: GB/s
peak: ((($sclk / 1000) * 64) * $numSQC)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($sclk
/ 1000) * 64) * $numSQC))
peak: ((($max_sclk / 1000) * 64) * $sqc_per_gpu)
pop: ((100 * AVG(((SQC_ICACHE_REQ / (End_Timestamp - Start_Timestamp)) * 64))) / ((($max_sclk
/ 1000) * 64) * $sqc_per_gpu))
tips:
L1I Fetch Latency:
value: AVG((SQ_ACCUM_PREV_HIRES / SQ_IFETCH))
@@ -74,7 +74,7 @@ Panel Config:
tips:
Num CUs:
#alias: num_cu_
value: $numCU
value: $cu_per_gpu
tips:
VGPR:
#alias: vgpr_
@@ -111,7 +111,7 @@ Panel Config:
LDS Util:
#alias: lds_util_
value:
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU))),
ROUND(AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu))),
0)
tips:
LDS Latency:
@@ -26,9 +26,9 @@ Panel Config:
unit: Pct
tips:
Scheduler-Pipe Utilization:
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $numPipes * $numSE))
avg: AVG(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
min: MIN(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
max: MAX(100 * SPI_CSN_BUSY / (GRBM_GUI_ACTIVE * $pipes_per_gpu * $se_per_gpu))
unit: Pct
tips:
Workgroup Manager Utilization:
@@ -38,15 +38,15 @@ Panel Config:
unit: Pct
tips:
Shader Engine Utilization:
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $numSE))
avg: AVG(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
min: MIN(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
max: MAX(100 * SQ_BUSY_CYCLES / (GRBM_GUI_ACTIVE * $se_per_gpu))
unit: Pct
tips:
SIMD Utilization:
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SQ_BUSY_CU_CYCLES / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Dispatched Workgroups:
@@ -91,77 +91,77 @@ Panel Config:
tips: Tips
metric:
Not-scheduled Rate (Workgroup Manager):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Not-scheduled Rate (Scheduler-Pipe):
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((100 * SPI_RA_REQ_NO_ALLOC / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None)
unit: Pct
tips:
Scheduler-Pipe Stall Rate:
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
avg: AVG((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
min: MIN((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY !=
max: MAX((((100 * SPI_RA_RES_STALL_CSN) / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY !=
0) else None))
unit: Pct
tips:
Scratch Stall Rate:
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $numSE)) if (GRBM_SPI_BUSY != 0) else None)
avg: AVG((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
min: MIN((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
max: MAX((100 * SPI_RA_TMP_STALL_CSN / (GRBM_SPI_BUSY * $se_per_gpu)) if (GRBM_SPI_BUSY != 0) else None)
unit: Pct
tips:
Insufficient SIMD Waveslots:
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_WAVE_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD VGPRs:
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_VGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient SIMD SGPRs:
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(100 * SPI_RA_SGPR_SIMD_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU LDS:
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_LDS_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Insufficient CU Barriers:
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_BAR_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Workgroup Limit:
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_TGLIM_CU_FULL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
Reached CU Wavefront Limit:
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $numCU))
avg: AVG(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
min: MIN(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
max: MAX(400 * SPI_RA_WVLIM_STALL_CSN / (GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: Pct
tips:
@@ -26,55 +26,55 @@ Panel Config:
+ SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (2 * SQ_INSTS_VALU_FMA_F64))))
/ (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16)
+ SQ_INSTS_VALU_TRANS_F16) + (2 * SQ_INSTS_VALU_FMA_F16))) + (64 * (((SQ_INSTS_VALU_ADD_F32
+ SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (2 * SQ_INSTS_VALU_FMA_F32))))
+ (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64)
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($sclk
* $numCU) * 64) * 2) / 1000))
+ (2 * SQ_INSTS_VALU_FMA_F64)))) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk
* $cu_per_gpu) * 64) * 2) / 1000))
tips:
VALU IOPs:
value: AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: (((($sclk * $numCU) * 64) * 2) / 1000)
peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)
pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp
- Start_Timestamp)))) / (((($sclk * $numCU) * 64) * 2) / 1000))
- Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000))
tips:
MFMA FLOPs (BF16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F16):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F16 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
MFMA FLOPs (F32):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F32 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA FLOPs (F64):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GFLOP
peak: ((($sclk * $numCU) * 256) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 256) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F64 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 256) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 256) / 1000))
tips:
MFMA IOPs (INT8):
value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp)))
unit: GIOP
peak: ((($sclk * $numCU) * 1024) / 1000)
peak: ((($max_sclk * $cu_per_gpu) * 1024) / 1000)
pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_I8 * 512) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk * $numCU) * 1024) / 1000))
/ ((($max_sclk * $cu_per_gpu) * 1024) / 1000))
tips:
- metric_table:
@@ -107,27 +107,27 @@ Panel Config:
unit: Instr/cycle
tips:
SALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_SCA) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_VALU) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VMEM Utilization:
avg: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * (SQ_ACTIVE_INST_FLAT+SQ_ACTIVE_INST_VMEM)) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
Branch Utilization:
avg: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
min: MIN((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
max: MAX((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $numCU))
avg: AVG((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
min: MIN((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
max: MAX((((100 * SQ_ACTIVE_INST_MISC) / GRBM_GUI_ACTIVE) / $cu_per_gpu))
unit: pct
tips:
VALU Active Threads:
@@ -140,9 +140,9 @@ Panel Config:
unit: Threads
tips:
MFMA Utilization:
avg: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
min: MIN(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
max: MAX(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $numCU) * GRBM_GUI_ACTIVE)))
avg: AVG(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
min: MIN(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
max: MAX(((100 * SQ_VALU_MFMA_BUSY_CYCLES) / ((4 * $cu_per_gpu) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
MFMA Instr Cycles:
@@ -18,16 +18,16 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((100 * SQ_LDS_IDX_ACTIVE) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Access Rate:
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $numCU)))
value: AVG(((200 * SQ_ACTIVE_INST_LDS) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: Pct of Peak
tips:
Theoretical Bandwidth (% of Peak):
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
/ (End_Timestamp - Start_Timestamp)) / (($sclk * $numCU) * 0.00128)))
value: AVG((((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ (End_Timestamp - Start_Timestamp)) / (($max_sclk * $cu_per_gpu) * 0.00128)))
unit: Pct of Peak
tips:
Bank Conflict Rate:
@@ -56,11 +56,11 @@ Panel Config:
unit: (Instr + $normUnit)
tips:
Theoretical Bandwidth:
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
avg: AVG(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
min: MIN(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($LDSBanks))
max: MAX(((((SQ_LDS_IDX_ACTIVE - SQ_LDS_BANK_CONFLICT) * 4) * TO_INT($lds_banks_per_cu))
/ $denom))
unit: (Bytes + $normUnit)
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_ICACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_ICACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -28,7 +28,7 @@ Panel Config:
unit: Pct of Peak
tips:
L1I-L2 Bandwidth:
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($sclk * $numSQC)
value: AVG(((SQC_TC_INST_REQ * 100000) / (2 * ($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -18,7 +18,7 @@ Panel Config:
tips: Tips
metric:
Bandwidth:
value: AVG(((SQC_DCACHE_REQ * 100000) / (($sclk * $numSQC)
value: AVG(((SQC_DCACHE_REQ * 100000) / (($max_sclk * $sqc_per_gpu)
* (End_Timestamp - Start_Timestamp))))
unit: Pct of Peak
tips:
@@ -29,7 +29,7 @@ Panel Config:
tips:
sL1D-L2 BW:
value: AVG(((SQC_TC_DATA_READ_REQ + SQC_TC_DATA_WRITE_REQ + SQC_TC_DATA_ATOMIC_REQ) * 100000)
/ (2 * ($sclk * $numSQC) * (End_Timestamp - Start_Timestamp)))
/ (2 * ($max_sclk * $sqc_per_gpu) * (End_Timestamp - Start_Timestamp)))
unit: Pct of Peak
tips:
comparable: false # for now
@@ -20,27 +20,27 @@ Panel Config:
tips: Tips
metric:
Address Processing Unit Busy:
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_TA_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data Stall:
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Data-Processor → Address Stall:
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Total Instructions:
@@ -128,21 +128,21 @@ Panel Config:
tips: Tips
metric:
Data-Return Busy:
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TD_BUSY_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Cache RAM → Data-Return Stall:
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_TC_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Workgroup manager → Data-Return Stall:
avg: AVG(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
min: MIN(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
max: MAX(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $numCU)))
avg: AVG(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
min: MIN(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
max: MAX(((100 * TD_SPI_STALL_sum) / (GRBM_GUI_ACTIVE * $cu_per_gpu)))
unit: pct
tips:
Coalescable Instructions:
@@ -26,7 +26,7 @@ Panel Config:
tips:
Bandwidth:
value: ((100 * AVG(((TCP_TOTAL_CACHE_ACCESSES_sum * 64) / (End_Timestamp - Start_Timestamp))))
/ ((($sclk / 1000) * 64) * $numCU))
/ ((($max_sclk / 1000) * 64) * $cu_per_gpu))
unit: Pct of Peak
tips:
Utilization:
@@ -18,11 +18,11 @@ Panel Config:
tips: Tips
metric:
Utilization:
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($L2Banks) * GRBM_GUI_ACTIVE)))
value: AVG(((TCC_BUSY_sum * 100) / (TO_INT($total_l2_chan) * GRBM_GUI_ACTIVE)))
unit: pct
tips:
Bandwidth:
value: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))) / ((($sclk / 1000) * 128) * TO_INT($L2Banks)))
value: ((100 * AVG(((TCC_REQ_sum * 128) / (End_Timestamp - Start_Timestamp)))) / ((($max_sclk / 1000) * 128) * TO_INT($total_l2_chan)))
unit: pct
tips:
Hit Rate:
@@ -117,7 +117,7 @@ Panel Config:
(((100 * TCC_HIT[::_1]) / (TCC_HIT[::_1] + TCC_MISS[::_1])) if ((TCC_HIT[::_1]
+ TCC_MISS[::_1]) != 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -130,7 +130,7 @@ Panel Config:
"::_1":
expr: (TO_INT(TCC_REQ[::_1]) / $denom)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -147,7 +147,7 @@ Panel Config:
write req: AVG((TO_INT(TCC_WRITE[::_1]) / $denom))
atomic req: AVG((TO_INT(TCC_ATOMIC[::_1]) / $denom))
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -164,7 +164,7 @@ Panel Config:
write req: AVG((TO_INT(TCC_EA0_WRREQ[::_1]) / $denom))
atomic req: AVG((TO_INT(TCC_EA0_ATOMIC[::_1]) / $denom))
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
# - metric_table:
@@ -187,7 +187,7 @@ Panel Config:
# AVG(((TCC_EA0_ATOMIC_LEVEL[::_1] / TCC_EA0_ATOMIC[::_1]) if
# (TCC_EA0_ATOMIC[::_1] != 0) else 0))
# placeholder_range:
# "::_1": $totalL2Banks
# "::_1": $total_l2_chan
# cli_style: simple_multiple_bar
- metric_table:
@@ -202,7 +202,7 @@ Panel Config:
((TCC_EA0_RDREQ_LEVEL[::_1] / TCC_EA0_RDREQ[::_1]) if (TCC_EA0_RDREQ[::_1]
!= 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -217,7 +217,7 @@ Panel Config:
((TCC_EA0_WRREQ_LEVEL[::_1] / TCC_EA0_WRREQ[::_1]) if (TCC_EA0_WRREQ[::_1]
!= 0) else None)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -231,7 +231,7 @@ Panel Config:
expr: ((TCC_EA0_ATOMIC_LEVEL[::_1] / TCC_EA0_ATOMIC[::_1]) if
(TCC_EA0_ATOMIC[::_1] != 0) else 0)
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -248,7 +248,7 @@ Panel Config:
ea read stall - gmi: None # Missing perfmon
ea read stall - dram: None # Missing perfmon
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -267,7 +267,7 @@ Panel Config:
ea write stall - dram: None # Missing perfmon
ea write stall - starve: TCC_TOO_MANY_EA_WRREQS_STALL
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_multiple_bar
- metric_table:
@@ -280,7 +280,7 @@ Panel Config:
"::_1":
expr: TCC_TAG_STALL[::_1]
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
cli_style: simple_box
- metric_table:
@@ -293,6 +293,6 @@ Panel Config:
"::_1":
expr: TCC_BUBBLE[::_1]
placeholder_range:
"::_1": $totalL2Banks
"::_1": $total_l2_chan
# tips: Number of 128-byte read requests sent to EA
cli_style: simple_box
@@ -34,16 +34,16 @@ Panel Config:
tips: Tips
metric:
METRIC01:
value: AVG(100 * SQ_ACTIVE_INST_SCA / ( GRBM_GUI_ACTIVE * $numCU ))
value: AVG(100 * SQ_ACTIVE_INST_SCA / ( GRBM_GUI_ACTIVE * $cu_per_gpu ))
unit: pct
peak: 100
pop: AVG(100* SQ_ACTIVE_INST_SCA/(GRBM_GUI_ACTIVE*$numCU))
pop: AVG(100* SQ_ACTIVE_INST_SCA/(GRBM_GUI_ACTIVE*$cu_per_gpu))
tips: *METRIC01_anchor
METRIC02:
value: AVG(100 * SQ_ACTIVE_INST_VALU / ( GRBM_GUI_ACTIVE * $numCU))
value: AVG(100 * SQ_ACTIVE_INST_VALU / ( GRBM_GUI_ACTIVE * $cu_per_gpu))
unit: pct
peak: 100
pop: AVG(100* SQ_ACTIVE_INST_VALU/(GRBM_GUI_ACTIVE*$numCU))
pop: AVG(100* SQ_ACTIVE_INST_VALU/(GRBM_GUI_ACTIVE*$cu_per_gpu))
tips:
# CSV table sample
- raw_csv_table:
@@ -48,7 +48,7 @@ class OmniSoC_Base():
# In some cases (i.e. --specs) path will not be given
if hasattr(self.__args, "path"):
if self.__args.path == os.path.join(os.getcwd(), "workloads"):
self.__workload_dir = os.path.join(self.__args.path, self.__args.name, self._mspec.GPU)
self.__workload_dir = os.path.join(self.__args.path, self.__args.name, self._mspec.gpu_model)
else:
self.__workload_dir = self.__args.path
@@ -96,17 +96,17 @@ class OmniSoC_Base():
return
# load stats from rocminfo
self._mspec.L1 = ""
self._mspec.L2 = ""
self._mspec.gpu_l1 = ""
self._mspec.gpu_l2 = ""
for idx2, linetext in enumerate(self._mspec._rocminfo):
key = search(r"^\s*L1:\s+ ([a-zA-Z0-9]+)\s*", linetext)
if key != None:
self._mspec.L1 = key
self._mspec.gpu_l1 = key
continue
key = search(r"^\s*L2:\s+ ([a-zA-Z0-9]+)\s*", linetext)
if key != None:
self._mspec.L2 = key
self._mspec.gpu_l2 = key
continue
key = search(r"^\s*Max Clock Freq\. \(MHz\):\s+([0-9]+)", linetext)
@@ -116,17 +116,17 @@ class OmniSoC_Base():
key = search(r"^\s*Compute Unit:\s+ ([a-zA-Z0-9]+)\s*", linetext)
if key != None:
self._mspec.CU = key
self._mspec.cu_per_gpu = key
continue
key = search(r"^\s*SIMDs per CU:\s+ ([a-zA-Z0-9]+)\s*", linetext)
if key != None:
self._mspec.SIMD = key
self._mspec.simd_per_cu = key
continue
key = search(r"^\s*Shader Engines:\s+ ([a-zA-Z0-9]+)\s*", linetext)
if key != None:
self._mspec.SE = key
self._mspec.se_per_gpu = key
continue
key = search(r"^\s*Wavefront Size:\s+ ([a-zA-Z0-9]+)\s*", linetext)
@@ -157,13 +157,13 @@ class OmniSoC_Base():
self._mspec.memory_partition = ""
# specify gpu name for gfx942 hardware
self._mspec.GPU = list(SUPPORTED_ARCHS[self._mspec.arch].keys())[0].upper()
if self._mspec.GPU == "MI300":
self._mspec.GPU = list(SUPPORTED_ARCHS[self._mspec.arch].values())[0][0]
if (self._mspec.arch == "gfx942") and ("MI300A" in self._mspec._rocminfo):
self._mspec.GPU = "MI300A_A1"
if (self._mspec.arch == "gfx942") and ("MI300A" not in self._mspec._rocminfo):
self._mspec.GPU = "MI300X_A1"
self._mspec.gpu_model = list(SUPPORTED_ARCHS[self._mspec.gpu_arch].keys())[0].upper()
if self._mspec.gpu_model == "MI300":
self._mspec.gpu_model = list(SUPPORTED_ARCHS[self._mspec.gpu_arch].values())[0][0]
if (self._mspec.gpu_arch == "gfx942") and ("MI300A" in self._mspec._rocminfo):
self._mspec.gpu_model = "MI300A_A1"
if (self._mspec.gpu_arch == "gfx942") and ("MI300A" not in self._mspec._rocminfo):
self._mspec.gpu_model = "MI300X_A1"
@demarcate
def perfmon_filter(self, roofline_perfmon_only: bool):
@@ -52,9 +52,9 @@ class gfx906_soc (OmniSoC_Base):
# Set arch specific specs
self._mspec.L2Banks = 16
self._mspec.LDSBanks = 32
self._mspec.numSQC = 15
self._mspec.numPipes = 4
self._mspec.lds_banks_per_cu = 32
self._mspec.sqc_per_gpu = 15
self._mspec.pipes_per_gpu = 4
# -----------------------
# Required child methods
@@ -52,12 +52,12 @@ class gfx908_soc (OmniSoC_Base):
# Set arch specific specs
self._mspec.L2Banks = 32
self._mspec.LDSBanks = 32
self._mspec.numSQC = 30
self._mspec.numPipes = 4
self._mspec.lds_banks_per_cu = 32
self._mspec.sqc_per_gpu = 30
self._mspec.pipes_per_gpu = 4
# --showmclkrange is broken in Mi100, hardcode freq
self._info['max_mclk'] = 1200
self._info['cur_mclk'] = 1200
self._mspec.max_mclk = 1200
self._mspec.cur_mclk = 1200
@demarcate
def get_profiler_options(self):
@@ -58,9 +58,9 @@ class gfx90a_soc (OmniSoC_Base):
# Set arch specific specs
self._mspec.L2Banks = 32
self._mspec.LDSBanks = 32
self._mspec.numSQC = 56
self._mspec.numPipes = 4
self._mspec.lds_banks_per_cu = 32
self._mspec.sqc_per_gpu = 56
self._mspec.pipes_per_gpu = 4
# -----------------------
# Required child methods
@@ -63,9 +63,9 @@ class gfx940_soc (OmniSoC_Base):
# Set arch specific specs
self._mspec.L2Banks = 16
self._mspec.LDSBanks = 32
self._mspec.numSQC = 56
self._mspec.numPipes = 4
self._mspec.lds_banks_per_cu = 32
self._mspec.sqc_per_gpu = 56
self._mspec.pipes_per_gpu = 4
# -----------------------
# Required child methods
@@ -63,9 +63,9 @@ class gfx941_soc (OmniSoC_Base):
# Set arch specific specs
self._mspec.L2Banks = 16
self._mspec.LDSBanks = 32
self._mspec.numSQC = 56
self._mspec.numPipes = 4
self._mspec.lds_banks_per_cu = 32
self._mspec.sqc_per_gpu = 56
self._mspec.pipes_per_gpu = 4
# -----------------------
# Required child methods
@@ -63,9 +63,9 @@ class gfx942_soc (OmniSoC_Base):
# Set arch specific specs
self._mspec.L2Banks = 16
self._mspec.LDSBanks = 32
self._mspec.numSQC = 56
self._mspec.numPipes = 4
self._mspec.lds_banks_per_cu = 32
self._mspec.sqc_per_gpu = 56
self._mspec.pipes_per_gpu = 4
# -----------------------
# Required child methods
+1 -1
Ver fichero
@@ -79,7 +79,7 @@ class Roofline:
def roof_setup(self):
# set default workload path if not specified
if self.__run_parameters['workload_dir'] == os.path.join(os.getcwd(), 'workloads'):
self.__run_parameters['workload_dir'] = os.path.join(self.__run_parameters['workload_dir'], self.__args.name, self.__mspec.GPU)
self.__run_parameters['workload_dir'] = os.path.join(self.__run_parameters['workload_dir'], self.__args.name, self.__mspec.gpu_model)
# create new directory for roofline if it doesn't exist
if not os.path.isdir(self.__run_parameters['workload_dir']):
os.makedirs(self.__run_parameters['workload_dir'])
+17 -19
Ver fichero
@@ -78,9 +78,9 @@ supported_denom = {
# Build-in defined in mongodb variables:
build_in_vars = {
"numActiveCUs": "TO_INT(MIN((((ROUND(AVG(((4 * SQ_BUSY_CU_CYCLES) / GRBM_GUI_ACTIVE)), \
0) / $maxWavesPerCU) * 8) + MIN(MOD(ROUND(AVG(((4 * SQ_BUSY_CU_CYCLES) \
/ GRBM_GUI_ACTIVE)), 0), $maxWavesPerCU), 8)), $numCU))",
"kernelBusyCycles": "ROUND(AVG((((End_Timestamp - Start_Timestamp) / 1000) * $sclk)), 0)",
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)",
}
supported_call = {
@@ -414,8 +414,8 @@ def calc_builtin_var(var, sys_info):
"""
if isinstance(var, int):
return var
elif isinstance(var, str) and var.startswith("$totalL2Banks"):
return sys_info.totalL2Banks
elif isinstance(var, str) and var.startswith("$total_l2_chan"):
return sys_info.total_l2_chan
else:
print("Don't support", var)
sys.exit(1)
@@ -679,20 +679,18 @@ def eval_metric(dfs, dfs_type, sys_info, raw_pmc_df, debug):
print("WARNING: Dectected GRBM_GUI_ACTIVE == 0\nHaulting execution.")
sys.exit(1)
ammolite__numSE = sys_info.SE
ammolite__numPipes = sys_info.numPipes
ammolite__numCU = sys_info.CU
ammolite__numSIMD = sys_info.SIMD
ammolite__numWavesPerCU = sys_info.max_waves_per_cu # todo: check do we still need it
ammolite__numSQC = sys_info.numSQC
ammolite__L2Banks = sys_info.L2Banks
ammolite__LDSBanks = sys_info.LDSBanks
ammolite__freq = sys_info.cur_sclk # todo: check do we still need it
ammolite__mclk = sys_info.cur_mclk
ammolite__sclk = sys_info.max_sclk
ammolite__maxWavesPerCU = sys_info.max_waves_per_cu
ammolite__hbmBW = sys_info.hbmBW
ammolite__totalL2Banks = calc_builtin_var("$totalL2Banks", sys_info)
ammolite__se_per_gpu = sys_info.se_per_gpu
ammolite__pipes_per_gpu = sys_info.pipes_per_gpu
ammolite__cu_per_gpu = sys_info.cu_per_gpu
ammolite__simd_per_cu = sys_info.simd_per_cu # not used
ammolite__sqc_per_gpu = sys_info.sqc_per_gpu
ammolite__lds_banks_per_cu = sys_info.lds_banks_per_cu
ammolite__cur_sclk = sys_info.cur_sclk # not used
ammolite__mclk = sys_info.cur_mclk # not used
ammolite__max_sclk = sys_info.max_sclk
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)
# TODO: fix all $normUnit in Unit column or title
+68 -61
Ver fichero
@@ -54,7 +54,7 @@ VERSION_LOC = [
class MachineSpecs:
def __init__(self, args, sysinfo=None):
if not sysinfo is None:
self.arch = sysinfo.iloc[0]["arch"]
self.gpu_arch = sysinfo.iloc[0]["gpu_arch"]
return
# read timestamp info
now = datetime.now()
@@ -76,16 +76,22 @@ class MachineSpecs:
os_release = path("/etc/os-release").read_text()
self.hostname: str = socket.gethostname()
self.CPU: str = search(r"^model name\s*: (.*?)$", cpuinfo)
self.cpu_model: str = search(r"^model name\s*: (.*?)$", cpuinfo)
self.sbios: str = (
path("/sys/class/dmi/id/bios_vendor").read_text().strip()
+ path("/sys/class/dmi/id/bios_version").read_text().strip()
)
self.kernel_version: str = search(r"version (\S*)", version)
self.ram: str = search(r"MemTotal:\s*(\S*)", meminfo)
self.distro: str = search(r'PRETTY_NAME="(.*?)"', os_release)
if self.distro is None:
self.distro = ""
self.linux_kernel_version: str = search(r"version (\S*)", version)
self.amd_gpu_kernel_version: str = None
if self.amd_gpu_kernel_version is None: #TODO: Extract amdgpu kernel version
self.amd_gpu_kernel_version = ""
self.cpu_memory: str = search(r"MemTotal:\s*(\S*)", meminfo)
self.gpu_memory: str = None #TODO: Extract total gpu memory
if self.gpu_memory is None:
self.gpu_memory = ""
self.linux_distro: str = search(r'PRETTY_NAME="(.*?)"', os_release)
if self.linux_distro is None:
self.linux_distro = ""
self.rocm_version: str = get_rocm_ver().strip()
#FIXME: use device
self.vbios: str = search(
@@ -105,12 +111,12 @@ class MachineSpecs:
##########################################
## B. SoC Specs
##########################################
self.arch: str = self.detect_arch()[0]
self.L1: str = None
self.L2: str = None
self.CU: str = None
self.SIMD: str = None
self.SE: str = None
self.gpu_arch: str = self.detect_arch()[0]
self.gpu_l1: str = None
self.gpu_l2: str = None
self.cu_per_gpu: str = None
self.simd_per_cu: str = None
self.se_per_gpu: str = None
self.wave_size: str = None
self.workgroup_max_size: str = None
self.max_sclk: str = None
@@ -118,26 +124,26 @@ class MachineSpecs:
self.cur_sclk: str = None
self.cur_mclk: str = None
self.max_waves_per_cu: str = None
self.GPU: str = None
self.L2Banks: str = None
self.LDSBanks: str = None
self.numSQC: str = None
self.numPipes: str = None
self.totalL2Banks: str = None
self.hbmBW: str = None
self.gpu_model: str = None
self.L2Banks: str = None #NB: This only used in flatten_tcc_info_across_hbm_stacks()
self.lds_banks_per_cu: str = None
self.sqc_per_gpu: str = None
self.pipes_per_gpu: str = None
self.total_l2_chan: str = None
self.hbm_bw: str = None
# Load above SoC specs via module import
try:
soc_module = importlib.import_module('omniperf_soc.soc_'+ self.arch)
soc_module = importlib.import_module('omniperf_soc.soc_'+ self.gpu_arch)
except ModuleNotFoundError as e:
error("Arch %s marked as supported, but couldn't find class implementation %s." % (self.arch, e))
soc_class = getattr(soc_module, self.arch+'_soc')
error("Arch %s marked as supported, but couldn't find class implementation %s." % (self.gpu_arch, e))
soc_class = getattr(soc_module, self.gpu_arch+'_soc')
self._rocminfo = self._rocminfo[self.detect_arch()[1] + 1 :] # update rocminfo for target section
soc_obj = soc_class(args, self)
# Update arch specific specs
self.totalL2Banks: str = total_l2_banks(
self.GPU, int(self.L2Banks), self.memory_partition
self.total_l2_chan: str = total_l2_banks(
self.gpu_model, int(self.L2Banks), self.memory_partition
)
self.hbmBW: str = str(int(self.max_mclk) / 1000 * 32 * self.get_hbm_channels())
self.hbm_bw: str = str(int(self.max_mclk) / 1000 * 32 * self.get_hbm_channels())
def detect_arch(self):
@@ -156,10 +162,10 @@ class MachineSpecs:
return (gpu_arch, idx1)
def get_hbm_channels(self):
hbmchannels = int(self.totalL2Banks)
hbmchannels = int(self.total_l2_chan)
if (
self.GPU.lower() == "mi300a_a0"
or self.GPU.lower() == "mi300a_a1"
self.gpu_model.lower() == "mi300a_a0"
or self.gpu_model.lower() == "mi300a_a1"
) and self.memory_partition.lower() == "nps1":
# we have an extra 32 channels for the CCD
hbmchannels += 32
@@ -174,12 +180,12 @@ class MachineSpecs:
attr_value = getattr(self, attr_name)
if attr_value is None:
#TODO: use proper logging function when that's merged
logging.warning(f"WARNING: Incomplete class definition for {self.arch}. Expecting populated {attr_name} but detected None.")
logging.warning(f"WARNING: Incomplete class definition for {self.gpu_arch}. Expecting populated {attr_name} but detected None.")
all_populated = False
data[attr_name] = attr_value
if not all_populated:
error("Missing specs fields for %s" % self.arch)
error("Missing specs fields for %s" % self.gpu_arch)
return pd.DataFrame(data, index=[0])
@@ -187,37 +193,38 @@ class MachineSpecs:
return dedent(
f"""\
Host info:
hostname: {self.hostname}
CPU: {self.CPU}
sbios: {self.sbios}
ram: {self.ram}
distro: {self.distro}
kernel_version: {self.kernel_version}
rocm_version: {self.rocm_version}
Hostname: {self.hostname}
CPU Model: {self.cpu_model}
sbios: {self.sbios}
CPU Memory: {self.cpu_memory}
GPU Memory: {self.gpu_memory}
Linux Distro: {self.linux_distro}
Linux Kernel Version: {self.linux_kernel_version}
AMD GPU Kernel Version: {self.amd_gpu_kernel_version}
ROCm Version: {self.rocm_version}
Device info:
GPU: {self.GPU}
arch: {self.arch}
vbios: {self.vbios}
L1: {self.L1} KB
L2: {self.L2} KB
max_sclk: {self.max_sclk} MHz
max_mclk: {self.max_mclk} MHz
cur_sclk: {self.cur_sclk} MHz
cur_mclk: {self.cur_mclk} MHz
CU: {self.CU}
SIMD: {self.SIMD}
SE: {self.SE}
wave_size: {self.wave_size}
workgroup_max_size: {self.workgroup_max_size}
max_waves_per_cu: {self.max_waves_per_cu}
L2Banks: {self.L2Banks}
totalL2Banks: {self.totalL2Banks}
LDSBanks: {self.LDSBanks}
numSQC: {self.numSQC}
numPipes: {self.numPipes}
hbmBW: {self.hbmBW} MB/s
compute_partition: {self.compute_partition}
memory_partition: {self.memory_partition}
GPU Model: {self.gpu_model}
GPU Arch: {self.gpu_arch}
vbios: {self.vbios}
GPU L1: {self.gpu_l1} KB
GPU L2: {self.gpu_l2} KB
Max SCLK: {self.max_sclk} MHz
Max MCLK: {self.max_mclk} MHz
Cur SCLK: {self.cur_sclk} MHz
Cur MCLK: {self.cur_mclk} MHz
CU per GPU: {self.cu_per_gpu}
SIMD per CU: {self.simd_per_cu}
SE per GPU: {self.se_per_gpu}
Wave Size: {self.wave_size}
Workgroup Max Size: {self.workgroup_max_size}
Max Waves per CU: {self.max_waves_per_cu}
Total L2 Channels: {self.total_l2_chan}
LDS Banks per CU: {self.lds_banks_per_cu}
SQC per GPU: {self.sqc_per_gpu}
Pipes per GPU: {self.pipes_per_gpu}
HBM BW: {self.hbm_bw} MB/s
Compute Partition: {self.compute_partition}
Memory Partition: {self.memory_partition}
"""
)
+4 -4
Ver fichero
@@ -210,7 +210,7 @@ def run_prof(fname, profiler_options, workload_dir, mspec):
# set required env var for mi300
new_env = None
if (mspec.GPU.lower() == "mi300x_a0" or mspec.GPU.lower() == "mi300x_a1" or mspec.GPU.lower() == "mi300a_a0" or mspec.GPU.lower() == "mi300a_a1") and (
if (mspec.gpu_model.lower() == "mi300x_a0" or mspec.gpu_model.lower() == "mi300x_a1" or mspec.gpu_model.lower() == "mi300a_a0" or mspec.gpu_model.lower() == "mi300a_a1") and (
os.path.basename(fname) == "pmc_perf_13.txt"
or os.path.basename(fname) == "pmc_perf_14.txt"
or os.path.basename(fname) == "pmc_perf_15.txt"
@@ -232,7 +232,7 @@ def run_prof(fname, profiler_options, workload_dir, mspec):
if new_env:
# flatten tcc for applicable mi300 input
f = path(workload_dir + "/out/pmc_1/results_" + fbase + ".csv")
hbm_stack_num = get_hbm_stack_num(mspec.GPU, mspec.memory_partition)
hbm_stack_num = get_hbm_stack_num(mspec.gpu_model, mspec.memory_partition)
df = flatten_tcc_info_across_hbm_stacks(
f, hbm_stack_num, int(mspec.L2Banks)
)
@@ -308,7 +308,7 @@ def gen_sysinfo(workload_name, workload_dir, ip_blocks, app_cmd, skip_roof, roof
blocks += t
else:
blocks += ip_blocks
if mspec.arch == "gfx90a" and (not skip_roof):
if mspec.gpu_arch == "gfx90a" and (not skip_roof):
blocks.append("roofline")
df['ip_blocks'] = "|".join(blocks)
@@ -396,7 +396,7 @@ def mibench(args, mspec):
+ "-"
+ distro_map[target_binary["distro"]]
+ "-"
+ mspec.GPU.lower()
+ mspec.gpu_model.lower()
+ "-rocm"
+ target_binary["rocm_ver"]
)