利用率查看器

This tool is currently only available in nightly builds.

目标

此工具旨在提供 TPU 系统的性能概览,并让性能分析师能够发现可能存在性能问题的系统部分。

直观呈现芯片级利用率

如需使用该工具,请在左侧的“抽屉”中找到“利用率查看器”工具。该工具会显示 4 个条形图,分别显示 TPU 芯片中 2 个张量节点的执行单元(前 2 个图表)和 DMA 路径(后 2 个图表)的利用率。

单位利用率

  • 将鼠标悬停在某个条形上时,系统会显示一个提示,其中包含有关利用率的详细信息:“实际”量和(理论)“峰值”量。条形图中显示的利用率百分比是通过将“已实现”量除以“峰值”量得到的。实现量和峰值量以指令为单位表示执行单元利用率,以字节为单位表示带宽利用率。

  • 执行单元的利用率是指在分析期间,该单元处于繁忙状态的周期所占的比例。

    系统会显示以下张量核心执行单元的利用率:

    • 标量单元:计算方式为 count_s0_instructioncount_s1_instruction 之和,即标量指令数除以周期数的两倍,因为标量单元的吞吐量为每个周期 2 条指令。
    • 向量 ALU:计算方式为 count_v0_instructioncount_v1_instruction 的总和(即向量指令数)除以周期数的两倍,因为向量 ALU 的吞吐量为每个周期 2 条指令。
    • 向量存储区:计算方式为 count_vector_store,即向量存储区数量除以周期数,因为向量存储区吞吐量为每个周期 1 条指令。
    • 向量加载:计算方式为 count_vector_load,即向量加载次数除以周期数,因为向量加载吞吐量为每个周期 1 条指令。
    • 矩阵单元 (MXU):计算方式为 count_matmul 除以周期数的 1/8,因为 MXU 吞吐量为每 8 个周期 1 条指令。
    • 转置单元 (XU):计算方式为 count_transpose 除以周期数的 1/8,因为 XU 吞吐量为每 8 个周期 1 条指令。
    • 归约和置换单元 (RPU):计算方式为 count_rpu_instruction 除以周期数的 1/8,因为 RPU 的吞吐量为每 8 个周期 1 条指令。

    下图是张量核心的框图,显示了执行单元:

    flowchart LR
    classDef redBox fill:#c96665,stroke:#000,stroke-width:2px,color:#000,font-weight:bold;
    classDef whiteBox fill:#fff,stroke:#000,stroke-width:2px,color:#000,font-weight:bold;
    classDef invisible fill:none,stroke:none;
    
    classDef container fill:#f9f9f9,stroke:#666,stroke-width:3px,stroke-dasharray: 10 5,color:#666,font-size:20px;
    
    subgraph TensorCore [TensorCore]
        direction LR
    
        subgraph LeftCol [ ]
            direction TB
            CS["Core<br>Sequencer<br>(CS)"]:::redBox
            VPU["Vector<br>Programmable<br>Unit<br>(VPU)"]:::whiteBox
    
            CS --> VPU
        end
    
        subgraph RightCol [ ]
            direction TB
            MXU["Matrix Unit<br>(MXU)"]:::whiteBox
            XU["Transpose Unit<br>(XU)"]:::whiteBox
            RPU["Reduction and<br>Permutation<br>Unit<br>(RPU)"]:::whiteBox
        end
    
        VPU <==> MXU
        VPU <==> XU
        VPU <==> RPU
    end
    
    class TensorCore container
    class LeftCol,RightCol invisible
    

    如需详细了解每个执行单元,请参阅 TPU 架构

  • DMA 路径的利用率是指在分析期间使用的带宽比例(字节/周期)。它派生自 NF_CTRL 计数器

    下图显示了 7 个表示 DMA 源 / 目的地的节点,以及 Tensor 节点中的 14 条 DMA 路径。图中的“BMem to VMem”和“Bmem to ICI”路径实际上是由单个计数器累积的共享路径,在工具中显示为“BMem to ICI/VMem”。发送到 ICI 的 DMA 是发送到远程 HBM 或 VMEM 的 DMA,而从/到 HIB 的 DMA 是从/到主机内存的 DMA。

    flowchart TD
      HIB[HIB]
      HBM[HBM]
      IMem[IMem]
      SMem[SMem]
      BMem[BMem]
      VMem[VMem]
      ICI[ICI]
    
      HIB --> HBM
      HBM --> HIB
    
      subgraph Memory_Units [ ]
          direction LR
          style Memory_Units fill:none,stroke:none
          IMem
          SMem
          BMem
          VMem
      end
    
      HBM --> IMem
      HBM --> SMem
      HBM --> BMem
      HBM --> VMem
    
      BMem --> VMem
      BMem --> ICI
      VMem --> ICI
      ICI --> VMem
    
      ICI --> HBM
      VMem --> HBM
      BMem --> HBM
      SMem --> HBM
    
      HBM --> ICI