使用率檢視者

This tool is currently only available in nightly builds.

目標

這項工具的目標是提供 TPU 系統效能的鳥瞰圖,讓效能分析師找出可能發生效能問題的系統部分。

以視覺化方式呈現晶片層級的使用率

如要使用這項工具,請在左側的「抽屜」中尋找「使用率檢視器」工具。這項工具會顯示 4 個長條圖,分別代表 TPU 晶片中 2 個 Tensor Node 的執行單元 (上方 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