Kullanım Görüntüleyicisi

This tool is currently only available in nightly builds.

Hedef

Bu aracın amacı, bir TPU sisteminin performansına genel bir bakış sunmak ve bir performans analistinin, sistemin performans sorunları yaşayabilecek kısımlarını tespit etmesine olanak tanımaktır.

Çip düzeyinde kullanımı görselleştirme

Aracı kullanmak için soldaki "Çekmece" bölümünde "Kullanım Görüntüleyici" aracını bulun. Araç, bir TPU çipindeki 2 Tensor düğümü için yürütme birimlerinin (üstteki 2 grafik) ve DMA yollarının (alttaki 2 grafik) kullanımını gösteren 4 çubuk grafik görüntüler.

Birim Kullanımı

  • Bir çubuğun üzerine gelindiğinde, kullanım ayrıntılarını içeren bir ipucu gösterilir: "Ulaşılan" ve (teorik) "en yüksek" miktarlar. Çubukta gösterilen kullanım yüzdesi, "ulaşılan" tutarın "zirve" tutara bölünmesiyle elde edilir. Elde edilen ve en yüksek miktarlar, yürütme birimi kullanımı için talimat birimleriyle, bant genişliği kullanımı için ise bayt birimleriyle ifade edilir.

  • Yürütme biriminin kullanımı, profil oluşturma döneminde birimin meşgul olduğu döngülerin oranıdır.

    Aşağıdaki tensör çekirdeği yürütme birimlerinin kullanımı gösterilir:

    • Skaler birim: count_s0_instruction ve count_s1_instruction toplamı olarak hesaplanır. Yani skaler birim işleme hızı döngü başına 2 talimat olduğundan, skaler talimat sayısı döngü sayısının iki katına bölünür.
    • Vektör ALU'ları: count_v0_instruction ve count_v1_instruction toplamı olarak hesaplanır. Yani vektör ALU'larının işleme hızı döngü başına 2 talimat olduğundan, vektör talimatlarının sayısı döngü sayısının iki katına bölünür.
    • Vektör depoları: Vektör deposu işleme hızı döngü başına 1 talimat olduğundan count_vector_store olarak hesaplanır. Yani vektör deposu sayısı, döngü sayısına bölünür.
    • Vektör Yüklemeleri: Vektör yükleme işleme hızı döngü başına 1 talimat olduğundan, count_vector_load olarak hesaplanır. Yani vektör yükleme sayısı, döngü sayısına bölünür.
    • Matris Birimi (MXU): MXU işleme hızı 8 döngüde 1 talimat olduğundan count_matmul, döngü sayısının 1/8'ine bölünerek hesaplanır.
    • Transpoze Birimi (XU): XU işleme hızı 8 döngüde 1 talimat olduğundan count_transpose döngü sayısının 1/8'i olarak hesaplanır.
    • İndirgeme ve Permütasyon Birimi (RPU): RPU işleme hızı 8 döngüde 1 talimat olduğundan, count_rpu_instruction değerinin döngü sayısının 1/8'ine bölünmesiyle hesaplanır.

    Aşağıdaki şekil, yürütme birimlerini gösteren tensör çekirdeğinin blok şemasıdır:

    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
    

    Bu yürütme birimlerinin her biri hakkında daha fazla bilgi için lütfen TPU mimarisi başlıklı makaleyi inceleyin.

  • DMA yollarının kullanımı, profilleme süresi boyunca kullanılan bant genişliği oranıdır (bayt/döngü). NF_CTRL sayaçlarından elde edilir.

    Aşağıdaki şekilde, TPA'ların kaynaklarını / hedeflerini temsil eden 7 düğüm ve bir Tensor düğümündeki 14 TPA yolu gösterilmektedir. Şekildeki "BMem to VMem" ve "Bmem to ICI" yolları aslında tek bir sayaç tarafından biriktirilen ortak bir yoldur ve araçta "BMem to ICI/VMem" olarak gösterilir. ICI'ye gönderilen bir DMA, uzak bir HBM veya VMEM'ye gönderilen bir DMA'dır. HIB'den/HIB'e gönderilen bir DMA ise ana makine belleğinden/belleğine gönderilen bir DMA'dır.

    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