diff --git a/projects/rocprofiler-compute/src/omniperf_analyze/analysis_base.py b/projects/rocprofiler-compute/src/omniperf_analyze/analysis_base.py index 893edb1ed6..ad81e27998 100644 --- a/projects/rocprofiler-compute/src/omniperf_analyze/analysis_base.py +++ b/projects/rocprofiler-compute/src/omniperf_analyze/analysis_base.py @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_analyze/analysis_cli.py b/projects/rocprofiler-compute/src/omniperf_analyze/analysis_cli.py index 179c0ce840..7009d44115 100644 --- a/projects/rocprofiler-compute/src/omniperf_analyze/analysis_cli.py +++ b/projects/rocprofiler-compute/src/omniperf_analyze/analysis_cli.py @@ -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 ) diff --git a/projects/rocprofiler-compute/src/omniperf_base.py b/projects/rocprofiler-compute/src/omniperf_base.py index 86c2d60afd..4efe3c8b93 100644 --- a/projects/rocprofiler-compute/src/omniperf_base.py +++ b/projects/rocprofiler-compute/src/omniperf_base.py @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_profile/profiler_base.py b/projects/rocprofiler-compute/src/omniperf_profile/profiler_base.py index c144f61c58..a26a968d04 100644 --- a/projects/rocprofiler-compute/src/omniperf_profile/profiler_base.py +++ b/projects/rocprofiler-compute/src/omniperf_profile/profiler_base.py @@ -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)) diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0200_system-speed-of-light.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0200_system-speed-of-light.yaml index f069a0eb95..a8e150d89e 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0200_system-speed-of-light.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0200_system-speed-of-light.yaml @@ -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)) diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0300_mem_chart.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0300_mem_chart.yaml index 4294a2cc63..4f4ab04d1e 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0300_mem_chart.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0300_mem_chart.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0600_shader-processor-input.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0600_shader-processor-input.yaml index 24d4036ecb..7ccd4eac8c 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0600_shader-processor-input.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/0600_shader-processor-input.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1100_compute-unit-compute-pipeline.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1100_compute-unit-compute-pipeline.yaml index 030b12461b..6acf0a1a51 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1100_compute-unit-compute-pipeline.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1100_compute-unit-compute-pipeline.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1200_lds.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1200_lds.yaml index acdde2bc20..aa1e5a3604 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1200_lds.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1200_lds.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1300_instruction-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1300_instruction-cache.yaml index b7cad3baa9..b69f0557f6 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1300_instruction-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1300_instruction-cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1400_constant-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1400_constant-cache.yaml index 5e4f7d7877..b8a29a027d 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1400_constant-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1400_constant-cache.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1500_TA_and_TD.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1500_TA_and_TD.yaml index 773bb7c763..ac6f09e1a0 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1500_TA_and_TD.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1500_TA_and_TD.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1600_L1_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1600_L1_cache.yaml index 7e09b82e8a..cd2141bc52 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1600_L1_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1600_L1_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1700_L2_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1700_L2_cache.yaml index ec55c36069..aa5f08c739 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1700_L2_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx906/1700_L2_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml index 19e7012fb9..cb49d7e808 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml @@ -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)) diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0300_mem_chart.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0300_mem_chart.yaml index 4294a2cc63..4f4ab04d1e 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0300_mem_chart.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0300_mem_chart.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0600_shader-processor-input.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0600_shader-processor-input.yaml index 24d4036ecb..7ccd4eac8c 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0600_shader-processor-input.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/0600_shader-processor-input.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml index 55170218a1..ed16704bad 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1200_lds.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1200_lds.yaml index 5e0290407c..49501d26a2 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1200_lds.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1200_lds.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1300_instruction-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1300_instruction-cache.yaml index b7cad3baa9..b69f0557f6 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1300_instruction-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1300_instruction-cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1400_constant-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1400_constant-cache.yaml index 5e4f7d7877..b8a29a027d 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1400_constant-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1400_constant-cache.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1500_TA_and_TD.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1500_TA_and_TD.yaml index 773bb7c763..ac6f09e1a0 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1500_TA_and_TD.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1500_TA_and_TD.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1600_L1_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1600_L1_cache.yaml index 878e388039..95af771a5b 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1600_L1_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1600_L1_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1700_L2_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1700_L2_cache.yaml index f5181b82d8..ffa0f39830 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1700_L2_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx908/1700_L2_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml index 4a0a96492f..4e46e70362 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml @@ -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)) diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0300_mem_chart.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0300_mem_chart.yaml index 25ecf40620..3f0f2e2154 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0300_mem_chart.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0300_mem_chart.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0600_shader-processor-input.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0600_shader-processor-input.yaml index 24d4036ecb..7ccd4eac8c 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0600_shader-processor-input.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/0600_shader-processor-input.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml index 53d49b2059..66d0763963 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1200_lds.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1200_lds.yaml index 452949d08f..2e4f2ce46a 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1200_lds.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1200_lds.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1300_instruction-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1300_instruction-cache.yaml index b7cad3baa9..b69f0557f6 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1300_instruction-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1300_instruction-cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1400_constant-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1400_constant-cache.yaml index 5e4f7d7877..b8a29a027d 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1400_constant-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1400_constant-cache.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1500_TA_and_TD.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1500_TA_and_TD.yaml index a0331242f3..075c6ed766 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1500_TA_and_TD.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1500_TA_and_TD.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1600_L1_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1600_L1_cache.yaml index bbf3166f31..0271abdbd0 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1600_L1_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1600_L1_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1700_L2_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1700_L2_cache.yaml index 8b2b9254a4..9966c9ff56 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1700_L2_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx90a/1700_L2_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml index be43d46d61..1e091e84fc 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml @@ -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)) diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0300_mem_chart.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0300_mem_chart.yaml index 176b39950a..55346c146b 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0300_mem_chart.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0300_mem_chart.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0600_shader-processor-input.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0600_shader-processor-input.yaml index 7a6d5e004d..b62a321b59 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0600_shader-processor-input.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/0600_shader-processor-input.yaml @@ -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: \ No newline at end of file diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml index 53d49b2059..66d0763963 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1200_lds.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1200_lds.yaml index dd049c6c78..4697b4a0a1 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1200_lds.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1200_lds.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1300_instruction-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1300_instruction-cache.yaml index 109e545543..d680e2c6b7 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1300_instruction-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1300_instruction-cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1400_constant-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1400_constant-cache.yaml index 312a760834..669a5834b9 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1400_constant-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1400_constant-cache.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1500_TA_and_TD.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1500_TA_and_TD.yaml index 08993f38c9..05ab7010a9 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1500_TA_and_TD.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1500_TA_and_TD.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1600_L1_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1600_L1_cache.yaml index 2d1b3a133b..7453647314 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1600_L1_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1600_L1_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1700_L2_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1700_L2_cache.yaml index 09c7c67d2a..6625a668fc 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1700_L2_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1700_L2_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1800_L2_cache_per_channel.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1800_L2_cache_per_channel.yaml index 75d91e25c4..4548a83d0e 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1800_L2_cache_per_channel.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx940/1800_L2_cache_per_channel.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml index be43d46d61..1e091e84fc 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml @@ -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)) diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0300_mem_chart.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0300_mem_chart.yaml index 176b39950a..55346c146b 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0300_mem_chart.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0300_mem_chart.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0600_shader-processor-input.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0600_shader-processor-input.yaml index 7a6d5e004d..b62a321b59 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0600_shader-processor-input.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/0600_shader-processor-input.yaml @@ -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: \ No newline at end of file diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml index 53d49b2059..66d0763963 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1200_lds.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1200_lds.yaml index dd049c6c78..4697b4a0a1 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1200_lds.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1200_lds.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1300_instruction-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1300_instruction-cache.yaml index 109e545543..d680e2c6b7 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1300_instruction-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1300_instruction-cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1400_constant-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1400_constant-cache.yaml index 312a760834..669a5834b9 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1400_constant-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1400_constant-cache.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1500_TA_and_TD.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1500_TA_and_TD.yaml index 08993f38c9..05ab7010a9 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1500_TA_and_TD.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1500_TA_and_TD.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1600_L1_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1600_L1_cache.yaml index 2d1b3a133b..7453647314 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1600_L1_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1600_L1_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1700_L2_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1700_L2_cache.yaml index 09c7c67d2a..6625a668fc 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1700_L2_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1700_L2_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1800_L2_cache_per_channel.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1800_L2_cache_per_channel.yaml index d4ba9ac285..0523099ad7 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1800_L2_cache_per_channel.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx941/1800_L2_cache_per_channel.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml index be43d46d61..1e091e84fc 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml @@ -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)) diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0300_mem_chart.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0300_mem_chart.yaml index 176b39950a..55346c146b 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0300_mem_chart.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0300_mem_chart.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0600_shader-processor-input.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0600_shader-processor-input.yaml index 7a6d5e004d..b62a321b59 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0600_shader-processor-input.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/0600_shader-processor-input.yaml @@ -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: \ No newline at end of file diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml index 53d49b2059..66d0763963 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1200_lds.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1200_lds.yaml index dd049c6c78..4697b4a0a1 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1200_lds.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1200_lds.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1300_instruction-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1300_instruction-cache.yaml index 109e545543..d680e2c6b7 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1300_instruction-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1300_instruction-cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1400_constant-cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1400_constant-cache.yaml index 312a760834..669a5834b9 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1400_constant-cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1400_constant-cache.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1500_TA_and_TD.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1500_TA_and_TD.yaml index 08993f38c9..05ab7010a9 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1500_TA_and_TD.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1500_TA_and_TD.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1600_L1_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1600_L1_cache.yaml index 2d1b3a133b..7453647314 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1600_L1_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1600_L1_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1700_L2_cache.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1700_L2_cache.yaml index 09c7c67d2a..6625a668fc 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1700_L2_cache.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1700_L2_cache.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1800_L2_cache_per_channel.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1800_L2_cache_per_channel.yaml index d4ba9ac285..0523099ad7 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1800_L2_cache_per_channel.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/gfx942/1800_L2_cache_per_channel.yaml @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/panel_config_template.yaml b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/panel_config_template.yaml index 4b81bad0e9..54ea1608ae 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/panel_config_template.yaml +++ b/projects/rocprofiler-compute/src/omniperf_soc/analysis_configs/panel_config_template.yaml @@ -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: diff --git a/projects/rocprofiler-compute/src/omniperf_soc/soc_base.py b/projects/rocprofiler-compute/src/omniperf_soc/soc_base.py index 5a31c969e5..7c3b76a906 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/soc_base.py +++ b/projects/rocprofiler-compute/src/omniperf_soc/soc_base.py @@ -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): diff --git a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx906.py b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx906.py index bf1ed96cf4..0bd98430b3 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx906.py +++ b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx906.py @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx908.py b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx908.py index a08c6a4964..fd2171f925 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx908.py +++ b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx908.py @@ -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): diff --git a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx90a.py b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx90a.py index 2013c40f64..eafc19c55f 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx90a.py +++ b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx90a.py @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx940.py b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx940.py index 16a9104e10..712fbe90c1 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx940.py +++ b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx940.py @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx941.py b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx941.py index 3389e173dc..4cb2f81860 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx941.py +++ b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx941.py @@ -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 diff --git a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx942.py b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx942.py index 8d0288b141..ac33c0ee44 100644 --- a/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx942.py +++ b/projects/rocprofiler-compute/src/omniperf_soc/soc_gfx942.py @@ -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 diff --git a/projects/rocprofiler-compute/src/roofline.py b/projects/rocprofiler-compute/src/roofline.py index 173f3d6e8c..ae8bee4dcb 100644 --- a/projects/rocprofiler-compute/src/roofline.py +++ b/projects/rocprofiler-compute/src/roofline.py @@ -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']) diff --git a/projects/rocprofiler-compute/src/utils/parser.py b/projects/rocprofiler-compute/src/utils/parser.py index 81f55cebc7..0284c48930 100644 --- a/projects/rocprofiler-compute/src/utils/parser.py +++ b/projects/rocprofiler-compute/src/utils/parser.py @@ -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 diff --git a/projects/rocprofiler-compute/src/utils/specs.py b/projects/rocprofiler-compute/src/utils/specs.py index 56bdf2e0b4..21352b46a9 100644 --- a/projects/rocprofiler-compute/src/utils/specs.py +++ b/projects/rocprofiler-compute/src/utils/specs.py @@ -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} """ ) diff --git a/projects/rocprofiler-compute/src/utils/utils.py b/projects/rocprofiler-compute/src/utils/utils.py index 1d5bfd2e9b..06582d69d7 100644 --- a/projects/rocprofiler-compute/src/utils/utils.py +++ b/projects/rocprofiler-compute/src/utils/utils.py @@ -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"] )