---
# Add description/tips for each metric in this section.
# So it could be shown in hover.
Metric Description:

# Define the panel properties and properties of each metric in the panel.
Panel Config:
  id: 1500
  title: Address Processing Unit and Data Return Path (TA/TD)
  data source:
    - metric_table:
        id: 1501
        title: Address Processing Unit
        header:
          metric: Metric
          avg: Avg
          min: Min
          max: Max
          unit: Unit
          tips: Tips
        metric:
          Address Processing Unit Busy:
            avg: AVG(((100 * TA_TA_BUSY_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            min: MIN(((100 * TA_TA_BUSY_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            max: MAX(((100 * TA_TA_BUSY_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            unit: pct
            tips:
          Address Stall:
            avg: AVG(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            min: MIN(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            max: MAX(((100 * TA_ADDR_STALLED_BY_TC_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            unit: pct
            tips:
          Data Stall:
            avg: AVG(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            min: MIN(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            max: MAX(((100 * TA_DATA_STALLED_BY_TC_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            unit: pct
            tips:
          Data-Processor → Address Stall:
            avg: AVG(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            min: MIN(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            max: MAX(((100 * TA_ADDR_STALLED_BY_TD_CYCLES_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            unit: pct
            tips:
          Sequencer → TA Address Stall:
            avg: AVG((SQ_VMEM_TA_ADDR_FIFO_FULL / $denom))
            min: MIN((SQ_VMEM_TA_ADDR_FIFO_FULL / $denom))
            max: MAX((SQ_VMEM_TA_ADDR_FIFO_FULL / $denom))
            unit: (Cycles + $normUnit)
            tips:
          Sequencer → TA Command Stall:
            avg: AVG((SQ_VMEM_TA_CMD_FIFO_FULL / $denom))
            min: MIN((SQ_VMEM_TA_CMD_FIFO_FULL / $denom))
            max: MAX((SQ_VMEM_TA_CMD_FIFO_FULL / $denom))
            unit: (Cycles + $normUnit)
            tips:
          Sequencer → TA Data Stall:
            avg: AVG((SQ_VMEM_WR_TA_DATA_FIFO_FULL / $denom))
            min: MIN((SQ_VMEM_WR_TA_DATA_FIFO_FULL / $denom))
            max: MAX((SQ_VMEM_WR_TA_DATA_FIFO_FULL / $denom))
            unit: (Cycles + $normUnit)
            tips:
          Total Instructions:
            avg: AVG((TA_TOTAL_WAVEFRONTS_sum / $denom))
            min: MIN((TA_TOTAL_WAVEFRONTS_sum / $denom))
            max: MAX((TA_TOTAL_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Global/Generic Instructions:
            avg: AVG((TA_FLAT_WAVEFRONTS_sum / $denom))
            min: MIN((TA_FLAT_WAVEFRONTS_sum / $denom))
            max: MAX((TA_FLAT_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Global/Generic Read Instructions:
            avg: AVG((TA_FLAT_READ_WAVEFRONTS_sum / $denom))
            min: MIN((TA_FLAT_READ_WAVEFRONTS_sum / $denom))
            max: MAX((TA_FLAT_READ_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Global/Generic Read Instructions for LDS:
            avg: AVG((TA_FLAT_READ_LDS_WAVEFRONTS_sum / $denom))
            min: MIN((TA_FLAT_READ_LDS_WAVEFRONTS_sum / $denom))
            max: MAX((TA_FLAT_READ_LDS_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Global/Generic Write Instructions:
            avg: AVG((TA_FLAT_WRITE_WAVEFRONTS_sum / $denom))
            min: MIN((TA_FLAT_WRITE_WAVEFRONTS_sum / $denom))
            max: MAX((TA_FLAT_WRITE_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Global/Generic Atomic Instructions:
            avg: AVG((TA_FLAT_ATOMIC_WAVEFRONTS_sum / $denom))
            min: MIN((TA_FLAT_ATOMIC_WAVEFRONTS_sum / $denom))
            max: MAX((TA_FLAT_ATOMIC_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Spill/Stack Instructions:
            avg: AVG((TA_BUFFER_WAVEFRONTS_sum / $denom))
            min: MIN((TA_BUFFER_WAVEFRONTS_sum / $denom))
            max: MAX((TA_BUFFER_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Spill/Stack Read Instructions:
            avg: AVG((TA_BUFFER_READ_WAVEFRONTS_sum / $denom))
            min: MIN((TA_BUFFER_READ_WAVEFRONTS_sum / $denom))
            max: MAX((TA_BUFFER_READ_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Spill/Stack Read Instructions for LDS:
            avg: AVG((TA_BUFFER_READ_LDS_WAVEFRONTS_sum / $denom))
            min: MIN((TA_BUFFER_READ_LDS_WAVEFRONTS_sum / $denom))
            max: MAX((TA_BUFFER_READ_LDS_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Spill/Stack Write Instructions:
            avg: AVG((TA_BUFFER_WRITE_WAVEFRONTS_sum / $denom))
            min: MIN((TA_BUFFER_WRITE_WAVEFRONTS_sum / $denom))
            max: MAX((TA_BUFFER_WRITE_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Spill/Stack Atomic Instructions:
            avg: AVG((TA_BUFFER_ATOMIC_WAVEFRONTS_sum / $denom))
            min: MIN((TA_BUFFER_ATOMIC_WAVEFRONTS_sum / $denom))
            max: MAX((TA_BUFFER_ATOMIC_WAVEFRONTS_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Spill/Stack Total Cycles:
            avg: AVG((TA_BUFFER_TOTAL_CYCLES_sum / $denom))
            min: MIN((TA_BUFFER_TOTAL_CYCLES_sum / $denom))
            max: MAX((TA_BUFFER_TOTAL_CYCLES_sum / $denom))
            unit: (Cycles  + $normUnit)
            tips:
          Spill/Stack Coalesced Read:
            avg: AVG((TA_BUFFER_COALESCED_READ_CYCLES_sum / $denom))
            min: MIN((TA_BUFFER_COALESCED_READ_CYCLES_sum / $denom))
            max: MAX((TA_BUFFER_COALESCED_READ_CYCLES_sum / $denom))
            unit: (Cycles  + $normUnit)
            tips:
          Spill/Stack Coalesced Write:
            avg: AVG((TA_BUFFER_COALESCED_WRITE_CYCLES_sum / $denom))
            min: MIN((TA_BUFFER_COALESCED_WRITE_CYCLES_sum / $denom))
            max: MAX((TA_BUFFER_COALESCED_WRITE_CYCLES_sum / $denom))
            unit: (Cycles  + $normUnit)
            tips:

    - metric_table:
        id: 1502
        title: Data-Return Path
        header:
          metric: Metric
          avg: Avg
          min: Min
          max: Max
          unit: Unit
          tips: Tips
        metric:
          Data-Return Busy:
            avg: AVG(((100 * TD_TD_BUSY_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            min: MIN(((100 * TD_TD_BUSY_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            max: MAX(((100 * TD_TD_BUSY_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            unit: pct
            tips:
          Cache RAM → Data-Return Stall:
            avg: AVG(((100 * TD_TC_STALL_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            min: MIN(((100 * TD_TC_STALL_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            max: MAX(((100 * TD_TC_STALL_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            unit: pct
            tips:
          Workgroup manager → Data-Return Stall:
            avg: AVG(((100 * TD_SPI_STALL_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            min: MIN(((100 * TD_SPI_STALL_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            max: MAX(((100 * TD_SPI_STALL_sum) / ($GRBM_GUI_ACTIVE_PER_XCD * $cu_per_gpu)))
            unit: pct
            tips:
          Coalescable Instructions:
            avg: AVG((TD_COALESCABLE_WAVEFRONT_sum / $denom))
            min: MIN((TD_COALESCABLE_WAVEFRONT_sum / $denom))
            max: MAX((TD_COALESCABLE_WAVEFRONT_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Read Instructions:
            avg: AVG((((TD_LOAD_WAVEFRONT_sum - TD_STORE_WAVEFRONT_sum) - TD_ATOMIC_WAVEFRONT_sum)
              / $denom))
            min: MIN((((TD_LOAD_WAVEFRONT_sum - TD_STORE_WAVEFRONT_sum) - TD_ATOMIC_WAVEFRONT_sum)
              / $denom))
            max: MAX((((TD_LOAD_WAVEFRONT_sum - TD_STORE_WAVEFRONT_sum) - TD_ATOMIC_WAVEFRONT_sum)
              / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Write Instructions:
            avg: AVG((TD_STORE_WAVEFRONT_sum / $denom))
            min: MIN((TD_STORE_WAVEFRONT_sum / $denom))
            max: MAX((TD_STORE_WAVEFRONT_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Atomic Instructions:
            avg: AVG((TD_ATOMIC_WAVEFRONT_sum / $denom))
            min: MIN((TD_ATOMIC_WAVEFRONT_sum / $denom))
            max: MAX((TD_ATOMIC_WAVEFRONT_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
          Write Ack Instructions:
            avg: AVG((TD_WRITE_ACKT_WAVEFRONT_sum / $denom))
            min: MIN((TD_WRITE_ACKT_WAVEFRONT_sum / $denom))
            max: MAX((TD_WRITE_ACKT_WAVEFRONT_sum / $denom))
            unit: (Instructions  + $normUnit)
            tips:
