Wyświetlający wykorzystanie

This tool is currently only available in nightly builds.

Cel

Celem tego narzędzia jest zapewnienie ogólnego wglądu w wydajność systemu TPU i umożliwienie analitykowi wydajności wykrywania części systemu, które mogą mieć problemy z wydajnością.

Wizualizacja wykorzystania na poziomie układu

Aby użyć tego narzędzia, w sekcji „Szuflada” po lewej stronie znajdź narzędzie „Przeglądarka wykorzystania”. Narzędzie wyświetla 4 wykresy słupkowe pokazujące wykorzystanie jednostek wykonawczych (2 wykresy u góry) i ścieżek DMA (2 wykresy u dołu) w przypadku 2 węzłów tensorowych na chipie TPU.

Wykorzystanie jednostki

  • Po najechaniu kursorem na słupek wyświetla się etykietka ze szczegółami wykorzystania: osiągniętymi i (teoretycznymi) maksymalnymi wartościami. Procent wykorzystania widoczny na pasku uzyskuje się przez podzielenie wartości „osiągniętej” przez wartość „szczytową”. Osiągnięte i maksymalne wartości są wyrażone w instrukcjach w przypadku wykorzystania jednostki wykonawczej oraz w bajtach w przypadku wykorzystania przepustowości.

  • Wykorzystanie jednostki wykonawczej to odsetek cykli, w których jednostka była zajęta w okresie profilowania.

    Wyświetlane jest wykorzystanie tych jednostek wykonawczych Tensor Core:

    • Jednostka skalarna: obliczana jako suma wartości count_s0_instructioncount_s1_instruction, czyli liczba instrukcji skalarnych podzielona przez podwójną liczbę cykli, ponieważ przepustowość jednostki skalarnej wynosi 2 instrukcje na cykl.
    • Jednostki ALU wektorowe: obliczane jako suma count_v0_instructioncount_v1_instruction, czyli liczba instrukcji wektorowych podzielona przez podwojoną liczbę cykli, ponieważ przepustowość jednostek ALU wektorowych wynosi 2 instrukcje na cykl.
    • Pamięci wektorowe: obliczane jako count_vector_store, czyli liczba pamięci wektorowych podzielona przez liczbę cykli, ponieważ przepustowość pamięci wektorowej wynosi 1 instrukcję na cykl.
    • Obciążenia wektorowe: obliczane jako count_vector_load, czyli liczba obciążeń wektorowych podzielona przez liczbę cykli, ponieważ przepustowość obciążenia wektorowego wynosi 1 instrukcję na cykl.
    • Jednostka macierzowa (MXU): obliczana jako count_matmul podzielone przez 1/8 liczby cykli, ponieważ przepustowość MXU wynosi 1 instrukcję na 8 cykli.
    • Jednostka transpozycji (XU): obliczana jako count_transpose podzielone przez 1/8 liczby cykli, ponieważ przepustowość XU wynosi 1 instrukcję na 8 cykli.
    • Jednostka redukcji i permutacji (RPU): obliczana jakocount_rpu_instruction podzielona przez 1/8 liczby cykli, ponieważ przepustowość RPU wynosi 1 instrukcję na 8 cykli.

    Na poniższym schemacie blokowym rdzenia tensorowego przedstawiono jednostki wykonawcze:

    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
    

    Więcej informacji o każdej z tych jednostek wykonawczych znajdziesz w artykule Architektura TPU.

  • Wykorzystanie ścieżek DMA to ułamek przepustowości (bajty/cykl) użytej w okresie profilowania. Jest on obliczany na podstawie liczników NF_CTRL.

    Ilustracja poniżej przedstawia 7 węzłów reprezentujących źródła i miejsca docelowe regionów DMA oraz 14 ścieżek DMA w węźle tensora. Ścieżki „BMem to VMem” i „Bmem to ICI” na rysunku są w rzeczywistości wspólną ścieżką, która jest sumowana przez jeden licznik i w narzędziu jest oznaczona jako „BMem to ICI/VMem”. DMA wysyłany do ICI to DMA do zdalnej pamięci HBM lub VMEM, a DMA z HIB lub do HIB to DMA z pamięci hosta lub do niej.

    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