From 58217f2c6ac36d04d1ee0960b92bd28db8924dfa Mon Sep 17 00:00:00 2001 From: Fei Zheng <44449748+feizheng10@users.noreply.github.com> Date: Wed, 26 Feb 2025 18:45:19 -0700 Subject: [PATCH] Add FP8 metrics for MI300 --- .../gfx906/0200_system-speed-of-light.yaml | 6 +++++ .../1000_compute-unit-instruction-mix.yaml | 6 +++++ .../1100_compute-unit-compute-pipeline.yaml | 24 ++++++++++++++----- .../gfx908/0200_system-speed-of-light.yaml | 6 +++++ .../1000_compute-unit-instruction-mix.yaml | 10 ++++++-- .../1100_compute-unit-compute-pipeline.yaml | 24 ++++++++++++++----- .../gfx90a/0200_system-speed-of-light.yaml | 6 +++++ .../1000_compute-unit-instruction-mix.yaml | 6 +++++ .../1100_compute-unit-compute-pipeline.yaml | 12 ++++++++++ .../gfx940/0200_system-speed-of-light.yaml | 17 +++++++++---- .../1000_compute-unit-instruction-mix.yaml | 6 +++++ .../1100_compute-unit-compute-pipeline.yaml | 19 ++++++++++++--- .../gfx940/1700_L2_cache.yaml | 2 +- .../gfx941/0200_system-speed-of-light.yaml | 17 +++++++++---- .../1000_compute-unit-instruction-mix.yaml | 6 +++++ .../1100_compute-unit-compute-pipeline.yaml | 19 ++++++++++++--- .../gfx941/1700_L2_cache.yaml | 2 +- .../gfx942/0200_system-speed-of-light.yaml | 7 ++++++ .../1000_compute-unit-instruction-mix.yaml | 6 +++++ .../1100_compute-unit-compute-pipeline.yaml | 19 ++++++++++++--- .../profile_configs/gfx940/pmc_sq_perf1.txt | 4 ++++ src/rocprof_compute_soc/soc_base.py | 8 +++++++ 22 files changed, 199 insertions(+), 33 deletions(-) diff --git a/src/rocprof_compute_soc/analysis_configs/gfx906/0200_system-speed-of-light.yaml b/src/rocprof_compute_soc/analysis_configs/gfx906/0200_system-speed-of-light.yaml index c3700c598f..3ab7a6b9d6 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx906/0200_system-speed-of-light.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx906/0200_system-speed-of-light.yaml @@ -32,6 +32,12 @@ Panel Config: peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000) pop: None # No perf counter tips: + MFMA FLOPs (F8): + value: None # No HW module + unit: GFLOP + peak: None # No HW module + pop: None # No HW module + tips: MFMA FLOPs (BF16): value: None # No perf counter unit: GFLOPs diff --git a/src/rocprof_compute_soc/analysis_configs/gfx906/1000_compute-unit-instruction-mix.yaml b/src/rocprof_compute_soc/analysis_configs/gfx906/1000_compute-unit-instruction-mix.yaml index d3a7e89443..808c505d6a 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx906/1000_compute-unit-instruction-mix.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx906/1000_compute-unit-instruction-mix.yaml @@ -241,6 +241,12 @@ Panel Config: max: None # No HW module unit: (instr + $normUnit) tips: + MFMA-F8: + avg: None # No HW module + min: None # No HW module + max: None # No HW module None # No HW module + unit: (instr + $normUnit) + tips: MFMA-F16: avg: None # No HW module min: None # No HW module diff --git a/src/rocprof_compute_soc/analysis_configs/gfx906/1100_compute-unit-compute-pipeline.yaml b/src/rocprof_compute_soc/analysis_configs/gfx906/1100_compute-unit-compute-pipeline.yaml index 5296f403e6..81b232f034 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx906/1100_compute-unit-compute-pipeline.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx906/1100_compute-unit-compute-pipeline.yaml @@ -21,16 +21,22 @@ Panel Config: metric: VALU FLOPs: value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: VALU IOPs: value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: + MFMA FLOPs (F8): + value: None # No perf counter + unit: GFLOP + peak: None # No perf counter + pop: None # No perf counter + tips: MFMA FLOPs (BF16): value: None # No perf counter Unit: None @@ -39,25 +45,25 @@ Panel Config: tips: MFMA FLOPs (F16): value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: MFMA FLOPs (F32): value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: MFMA FLOPs (F64): value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: MFMA IOPs (INT8): value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: @@ -174,6 +180,12 @@ Panel Config: max: None # No perf counter unit: (OPs + $normUnit) tips: + F8 OPs: + avg: None # No HW module + min: None # No HW module + max: None # No HW module + unit: (OPs + $normUnit) + tips: F16 OPs: avg: None # No perf counter min: None # No perf counter diff --git a/src/rocprof_compute_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml b/src/rocprof_compute_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml index 9849670ed3..8e52572ff3 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx908/0200_system-speed-of-light.yaml @@ -32,6 +32,12 @@ Panel Config: peak: (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000) pop: None # No perf counter tips: + MFMA FLOPs (F8): + value: None # No HW module + unit: GFLOP + peak: None # No HW module + pop: None # No HW module + tips: MFMA FLOPs (BF16): value: None # No perf counter unit: GFLOPs diff --git a/src/rocprof_compute_soc/analysis_configs/gfx908/1000_compute-unit-instruction-mix.yaml b/src/rocprof_compute_soc/analysis_configs/gfx908/1000_compute-unit-instruction-mix.yaml index cd24466127..91ccbb9e5e 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx908/1000_compute-unit-instruction-mix.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx908/1000_compute-unit-instruction-mix.yaml @@ -73,13 +73,13 @@ Panel Config: unit: Unit tips: Tips metric: - INT-32: + INT32: avg: None # No perf counter min: None # No perf counter max: None # No perf counter unit: (instr + $normUnit) tips: - INT-64: + INT64: avg: None # No perf counter min: None # No perf counter max: None # No perf counter @@ -241,6 +241,12 @@ Panel Config: max: None # No HW module unit: (instr + $normUnit) tips: + MFMA-F8: + avg: None # No HW module + min: None # No HW module + max: None # No HW module None # No HW module + unit: (instr + $normUnit) + tips: MFMA-F16: avg: None # No HW module min: None # No HW module diff --git a/src/rocprof_compute_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml b/src/rocprof_compute_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml index 5296f403e6..81b232f034 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx908/1100_compute-unit-compute-pipeline.yaml @@ -21,16 +21,22 @@ Panel Config: metric: VALU FLOPs: value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: VALU IOPs: value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: + MFMA FLOPs (F8): + value: None # No perf counter + unit: GFLOP + peak: None # No perf counter + pop: None # No perf counter + tips: MFMA FLOPs (BF16): value: None # No perf counter Unit: None @@ -39,25 +45,25 @@ Panel Config: tips: MFMA FLOPs (F16): value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: MFMA FLOPs (F32): value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: MFMA FLOPs (F64): value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: MFMA IOPs (INT8): value: None # No perf counter - Unit: None + unit: None peak: None pop: None tips: @@ -174,6 +180,12 @@ Panel Config: max: None # No perf counter unit: (OPs + $normUnit) tips: + F8 OPs: + avg: None # No HW module + min: None # No HW module + max: None # No HW module + unit: (OPs + $normUnit) + tips: F16 OPs: avg: None # No perf counter min: None # No perf counter diff --git a/src/rocprof_compute_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml b/src/rocprof_compute_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml index df46675426..583ce554ea 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx90a/0200_system-speed-of-light.yaml @@ -42,6 +42,12 @@ Panel Config: pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)) tips: + MFMA FLOPs (F8): + value: None + unit: GFLOP + peak: None + pop: None + tips: MFMA FLOPs (BF16): value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))) unit: GFLOP diff --git a/src/rocprof_compute_soc/analysis_configs/gfx90a/1000_compute-unit-instruction-mix.yaml b/src/rocprof_compute_soc/analysis_configs/gfx90a/1000_compute-unit-instruction-mix.yaml index 045f217ad8..b1079479f4 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx90a/1000_compute-unit-instruction-mix.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx90a/1000_compute-unit-instruction-mix.yaml @@ -241,6 +241,12 @@ Panel Config: max: MAX((SQ_INSTS_VALU_MFMA_I8 / $denom)) unit: (instr + $normUnit) tips: + MFMA-F8: + avg: None + min: None + max: None + unit: (instr + $normUnit) + tips: MFMA-F16: avg: AVG((SQ_INSTS_VALU_MFMA_F16 / $denom)) min: MIN((SQ_INSTS_VALU_MFMA_F16 / $denom)) diff --git a/src/rocprof_compute_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml b/src/rocprof_compute_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml index c54a6703e8..f0a13d44ab 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx90a/1100_compute-unit-compute-pipeline.yaml @@ -41,6 +41,12 @@ Panel Config: pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)) tips: + MFMA FLOPs (F8): + value: None + unit: GFLOP + peak: None + pop: None + tips: MFMA FLOPs (BF16): value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))) unit: GFLOP @@ -216,6 +222,12 @@ Panel Config: max: MAX(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) + (SQ_INSTS_VALU_MFMA_MOPS_I8 * 512)) / $denom) unit: (OPs + $normUnit) tips: + F8 OPs: + avg: None + min: None + max: None + unit: (OPs + $normUnit) + tips: F16 OPs: avg: AVG(((((((64 * SQ_INSTS_VALU_ADD_F16) + (64 * SQ_INSTS_VALU_MUL_F16)) + (64 * SQ_INSTS_VALU_TRANS_F16)) + (128 * SQ_INSTS_VALU_FMA_F16)) + (512 * diff --git a/src/rocprof_compute_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml b/src/rocprof_compute_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml index ca2d5d0550..b0a7399e5d 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx940/0200_system-speed-of-light.yaml @@ -42,6 +42,13 @@ Panel Config: pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)) tips: + MFMA FLOPs (F8): + value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp))) + unit: GFLOP + peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000) + pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp)))) + / ((($max_sclk * $cu_per_gpu) * 8192) / 1000)) + tips: MFMA FLOPs (BF16): value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))) unit: GFLOP @@ -187,12 +194,14 @@ Panel Config: / ((($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))) + value: AVG((128 * TCC_BUBBLE_sum + + 64 * (TCC_EA0_RDREQ_sum - TCC_BUBBLE_sum - TCC_EA0_RDREQ_32B_sum) + + 32 * TCC_EA0_RDREQ_32B_sum) / (End_Timestamp - Start_Timestamp)) unit: GB/s 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)))) / $hbm_bw) + pop: ((100 * (AVG((128 * TCC_BUBBLE_sum + + 64 * (TCC_EA0_RDREQ_sum - TCC_BUBBLE_sum - TCC_EA0_RDREQ_32B_sum) + + 32 * TCC_EA0_RDREQ_32B_sum) / (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) diff --git a/src/rocprof_compute_soc/analysis_configs/gfx940/1000_compute-unit-instruction-mix.yaml b/src/rocprof_compute_soc/analysis_configs/gfx940/1000_compute-unit-instruction-mix.yaml index f49732e79b..83ba5367a7 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx940/1000_compute-unit-instruction-mix.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx940/1000_compute-unit-instruction-mix.yaml @@ -245,6 +245,12 @@ Panel Config: max: MAX((SQ_INSTS_VALU_MFMA_I8 / $denom)) unit: (instr + $normUnit) tips: + MFMA-F8: + avg: AVG((SQ_INSTS_VALU_MFMA_F8 / $denom)) + min: MIN((SQ_INSTS_VALU_MFMA_F8 / $denom)) + max: MAX((SQ_INSTS_VALU_MFMA_F8 / $denom)) + unit: (instr + $normUnit) + tips: MFMA-F16: avg: AVG((SQ_INSTS_VALU_MFMA_F16 / $denom)) min: MIN((SQ_INSTS_VALU_MFMA_F16 / $denom)) diff --git a/src/rocprof_compute_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml b/src/rocprof_compute_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml index a4465ebedf..932d9cb5d3 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx940/1100_compute-unit-compute-pipeline.yaml @@ -41,6 +41,13 @@ Panel Config: pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)) tips: + MFMA FLOPs (F8): + value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp))) + unit: GFLOP + peak: ((($max_sclk * $cu_per_gpu) * 8192) / 1000) + pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp)))) + / ((($max_sclk * $cu_per_gpu) * 8192) / 1000)) + tips: MFMA FLOPs (BF16): value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))) unit: GFLOP @@ -188,21 +195,21 @@ Panel Config: metric: FLOPs (Total): avg: AVG((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (SQ_INSTS_VALU_FMA_F64 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F64)) / $denom)) min: MIN((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (SQ_INSTS_VALU_FMA_F64 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F64)) / $denom)) max: MAX((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) @@ -216,6 +223,12 @@ Panel Config: max: MAX(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) + (SQ_INSTS_VALU_MFMA_MOPS_I8 * 512)) / $denom) unit: (OPs + $normUnit) tips: + F8 OPs: + avg: AVG(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + min: MIN(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + max: MAX(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + unit: (OPs + $normUnit) + tips: F16 OPs: avg: AVG(((((((64 * SQ_INSTS_VALU_ADD_F16) + (64 * SQ_INSTS_VALU_MUL_F16)) + (64 * SQ_INSTS_VALU_TRANS_F16)) + (128 * SQ_INSTS_VALU_FMA_F16)) + (512 * diff --git a/src/rocprof_compute_soc/analysis_configs/gfx940/1700_L2_cache.yaml b/src/rocprof_compute_soc/analysis_configs/gfx940/1700_L2_cache.yaml index aaa45b963e..fc2104a470 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx940/1700_L2_cache.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx940/1700_L2_cache.yaml @@ -432,4 +432,4 @@ Panel Config: min: MIN((TCC_EA0_ATOMIC_sum / $denom)) max: MAX((TCC_EA0_ATOMIC_sum / $denom)) unit: (Req + $normUnit) - tips: + tips: \ No newline at end of file diff --git a/src/rocprof_compute_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml b/src/rocprof_compute_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml index ca2d5d0550..b0a7399e5d 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx941/0200_system-speed-of-light.yaml @@ -42,6 +42,13 @@ Panel Config: pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)) tips: + MFMA FLOPs (F8): + value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp))) + unit: GFLOP + peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000) + pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp)))) + / ((($max_sclk * $cu_per_gpu) * 8192) / 1000)) + tips: MFMA FLOPs (BF16): value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))) unit: GFLOP @@ -187,12 +194,14 @@ Panel Config: / ((($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))) + value: AVG((128 * TCC_BUBBLE_sum + + 64 * (TCC_EA0_RDREQ_sum - TCC_BUBBLE_sum - TCC_EA0_RDREQ_32B_sum) + + 32 * TCC_EA0_RDREQ_32B_sum) / (End_Timestamp - Start_Timestamp)) unit: GB/s 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)))) / $hbm_bw) + pop: ((100 * (AVG((128 * TCC_BUBBLE_sum + + 64 * (TCC_EA0_RDREQ_sum - TCC_BUBBLE_sum - TCC_EA0_RDREQ_32B_sum) + + 32 * TCC_EA0_RDREQ_32B_sum) / (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) diff --git a/src/rocprof_compute_soc/analysis_configs/gfx941/1000_compute-unit-instruction-mix.yaml b/src/rocprof_compute_soc/analysis_configs/gfx941/1000_compute-unit-instruction-mix.yaml index f49732e79b..83ba5367a7 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx941/1000_compute-unit-instruction-mix.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx941/1000_compute-unit-instruction-mix.yaml @@ -245,6 +245,12 @@ Panel Config: max: MAX((SQ_INSTS_VALU_MFMA_I8 / $denom)) unit: (instr + $normUnit) tips: + MFMA-F8: + avg: AVG((SQ_INSTS_VALU_MFMA_F8 / $denom)) + min: MIN((SQ_INSTS_VALU_MFMA_F8 / $denom)) + max: MAX((SQ_INSTS_VALU_MFMA_F8 / $denom)) + unit: (instr + $normUnit) + tips: MFMA-F16: avg: AVG((SQ_INSTS_VALU_MFMA_F16 / $denom)) min: MIN((SQ_INSTS_VALU_MFMA_F16 / $denom)) diff --git a/src/rocprof_compute_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml b/src/rocprof_compute_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml index a4465ebedf..932d9cb5d3 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx941/1100_compute-unit-compute-pipeline.yaml @@ -41,6 +41,13 @@ Panel Config: pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)) tips: + MFMA FLOPs (F8): + value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp))) + unit: GFLOP + peak: ((($max_sclk * $cu_per_gpu) * 8192) / 1000) + pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp)))) + / ((($max_sclk * $cu_per_gpu) * 8192) / 1000)) + tips: MFMA FLOPs (BF16): value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))) unit: GFLOP @@ -188,21 +195,21 @@ Panel Config: metric: FLOPs (Total): avg: AVG((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (SQ_INSTS_VALU_FMA_F64 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F64)) / $denom)) min: MIN((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (SQ_INSTS_VALU_FMA_F64 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F64)) / $denom)) max: MAX((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) @@ -216,6 +223,12 @@ Panel Config: max: MAX(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) + (SQ_INSTS_VALU_MFMA_MOPS_I8 * 512)) / $denom) unit: (OPs + $normUnit) tips: + F8 OPs: + avg: AVG(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + min: MIN(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + max: MAX(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + unit: (OPs + $normUnit) + tips: F16 OPs: avg: AVG(((((((64 * SQ_INSTS_VALU_ADD_F16) + (64 * SQ_INSTS_VALU_MUL_F16)) + (64 * SQ_INSTS_VALU_TRANS_F16)) + (128 * SQ_INSTS_VALU_FMA_F16)) + (512 * diff --git a/src/rocprof_compute_soc/analysis_configs/gfx941/1700_L2_cache.yaml b/src/rocprof_compute_soc/analysis_configs/gfx941/1700_L2_cache.yaml index e61369c7cf..b14ad71b8c 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx941/1700_L2_cache.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx941/1700_L2_cache.yaml @@ -432,4 +432,4 @@ Panel Config: min: MIN((TCC_EA0_ATOMIC_sum / $denom)) max: MAX((TCC_EA0_ATOMIC_sum / $denom)) unit: (Req + $normUnit) - tips: + tips: \ No newline at end of file diff --git a/src/rocprof_compute_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml b/src/rocprof_compute_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml index cb13861c86..b0a7399e5d 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx942/0200_system-speed-of-light.yaml @@ -42,6 +42,13 @@ Panel Config: pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)) tips: + MFMA FLOPs (F8): + value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp))) + unit: GFLOP + peak: ((($max_sclk * $cu_per_gpu) * 4096) / 1000) + pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp)))) + / ((($max_sclk * $cu_per_gpu) * 8192) / 1000)) + tips: MFMA FLOPs (BF16): value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))) unit: GFLOP diff --git a/src/rocprof_compute_soc/analysis_configs/gfx942/1000_compute-unit-instruction-mix.yaml b/src/rocprof_compute_soc/analysis_configs/gfx942/1000_compute-unit-instruction-mix.yaml index f49732e79b..83ba5367a7 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx942/1000_compute-unit-instruction-mix.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx942/1000_compute-unit-instruction-mix.yaml @@ -245,6 +245,12 @@ Panel Config: max: MAX((SQ_INSTS_VALU_MFMA_I8 / $denom)) unit: (instr + $normUnit) tips: + MFMA-F8: + avg: AVG((SQ_INSTS_VALU_MFMA_F8 / $denom)) + min: MIN((SQ_INSTS_VALU_MFMA_F8 / $denom)) + max: MAX((SQ_INSTS_VALU_MFMA_F8 / $denom)) + unit: (instr + $normUnit) + tips: MFMA-F16: avg: AVG((SQ_INSTS_VALU_MFMA_F16 / $denom)) min: MIN((SQ_INSTS_VALU_MFMA_F16 / $denom)) diff --git a/src/rocprof_compute_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml b/src/rocprof_compute_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml index a4465ebedf..932d9cb5d3 100644 --- a/src/rocprof_compute_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml +++ b/src/rocprof_compute_soc/analysis_configs/gfx942/1100_compute-unit-compute-pipeline.yaml @@ -41,6 +41,13 @@ Panel Config: pop: ((100 * AVG(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) / (End_Timestamp - Start_Timestamp)))) / (((($max_sclk * $cu_per_gpu) * 64) * 2) / 1000)) tips: + MFMA FLOPs (F8): + value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp))) + unit: GFLOP + peak: ((($max_sclk * $cu_per_gpu) * 8192) / 1000) + pop: ((100 * AVG(((SQ_INSTS_VALU_MFMA_MOPS_F8 * 512) / (End_Timestamp - Start_Timestamp)))) + / ((($max_sclk * $cu_per_gpu) * 8192) / 1000)) + tips: MFMA FLOPs (BF16): value: AVG(((SQ_INSTS_VALU_MFMA_MOPS_BF16 * 512) / (End_Timestamp - Start_Timestamp))) unit: GFLOP @@ -188,21 +195,21 @@ Panel Config: metric: FLOPs (Total): avg: AVG((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (SQ_INSTS_VALU_FMA_F64 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F64)) / $denom)) min: MIN((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) + (SQ_INSTS_VALU_FMA_F64 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F64)) / $denom)) max: MAX((((((((64 * (((SQ_INSTS_VALU_ADD_F16 + SQ_INSTS_VALU_MUL_F16) + SQ_INSTS_VALU_TRANS_F16) - + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 + + (SQ_INSTS_VALU_FMA_F16 * 2))) + ((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F16) + (512 * SQ_INSTS_VALU_MFMA_MOPS_BF16))) + (64 * (((SQ_INSTS_VALU_ADD_F32 + SQ_INSTS_VALU_MUL_F32) + SQ_INSTS_VALU_TRANS_F32) + (SQ_INSTS_VALU_FMA_F32 * 2)))) + (512 * SQ_INSTS_VALU_MFMA_MOPS_F32)) + (64 * (((SQ_INSTS_VALU_ADD_F64 + SQ_INSTS_VALU_MUL_F64) + SQ_INSTS_VALU_TRANS_F64) @@ -216,6 +223,12 @@ Panel Config: max: MAX(((64 * (SQ_INSTS_VALU_INT32 + SQ_INSTS_VALU_INT64)) + (SQ_INSTS_VALU_MFMA_MOPS_I8 * 512)) / $denom) unit: (OPs + $normUnit) tips: + F8 OPs: + avg: AVG(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + min: MIN(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + max: MAX(((512 * SQ_INSTS_VALU_MFMA_MOPS_F8) / $denom)) + unit: (OPs + $normUnit) + tips: F16 OPs: avg: AVG(((((((64 * SQ_INSTS_VALU_ADD_F16) + (64 * SQ_INSTS_VALU_MUL_F16)) + (64 * SQ_INSTS_VALU_TRANS_F16)) + (128 * SQ_INSTS_VALU_FMA_F16)) + (512 * diff --git a/src/rocprof_compute_soc/profile_configs/gfx940/pmc_sq_perf1.txt b/src/rocprof_compute_soc/profile_configs/gfx940/pmc_sq_perf1.txt index 466c6c2a24..b007f2876e 100644 --- a/src/rocprof_compute_soc/profile_configs/gfx940/pmc_sq_perf1.txt +++ b/src/rocprof_compute_soc/profile_configs/gfx940/pmc_sq_perf1.txt @@ -14,6 +14,10 @@ pmc: SQ_LDS_MEM_VIOLATIONS SQ_LDS_ATOMIC_RETURN SQ_LDS_IDX_ACTIVE pmc: SQ_INSTS_MFMA SQ_INSTS_VALU_MFMA_I8 SQ_INSTS_VALU_MFMA_F16 SQ_INSTS_VALU_MFMA_BF16 SQ_INSTS_VALU_MFMA_F32 SQ_INSTS_VALU_MFMA_F64 SQ_VALU_MFMA_BUSY_CYCLES pmc: SQ_INSTS_VALU_MFMA_MOPS_I8 SQ_INSTS_VALU_MFMA_MOPS_F16 SQ_INSTS_VALU_MFMA_MOPS_BF16 SQ_INSTS_VALU_MFMA_MOPS_F32 SQ_INSTS_VALU_MFMA_MOPS_F64 +#SQ:MI300 +pmc: SQ_INSTS_VALU_MFMA_F8 +pmc: SQ_INSTS_VALU_MFMA_MOPS_F8 + #SQC pmc: SQC_TC_INST_REQ SQC_TC_DATA_READ_REQ SQC_TC_DATA_WRITE_REQ SQC_TC_DATA_ATOMIC_REQ SQC_TC_STALL SQC_TC_REQ SQC_DCACHE_REQ_READ_16 pmc: SQC_ICACHE_REQ SQC_ICACHE_HITS SQC_ICACHE_MISSES SQC_ICACHE_MISSES_DUPLICATE SQC_DCACHE_INPUT_VALID_READYB SQC_DCACHE_ATOMIC SQC_DCACHE_REQ_READ_8 diff --git a/src/rocprof_compute_soc/soc_base.py b/src/rocprof_compute_soc/soc_base.py index 88f5a22095..88a2a10415 100644 --- a/src/rocprof_compute_soc/soc_base.py +++ b/src/rocprof_compute_soc/soc_base.py @@ -349,6 +349,14 @@ def perfmon_coalesce(pmc_files_list, perfmon_config, workload_dir, spatial_multi if ctr.startswith("TCC_BUBBLE"): continue + # Remove me later: + # v1 and v2 don't support these counters + if not using_v3(): + if ctr.startswith("SQ_INSTS_VALU_MFMA_F8") or ctr.startswith( + "SQ_INSTS_VALU_MFMA_MOPS_F8" + ): + continue + # Channel counter e.g. TCC_ATOMIC[0] if "[" in ctr: