ผู้ดูการใช้งาน

This tool is currently only available in nightly builds.

เป้าหมาย

เป้าหมายของเครื่องมือนี้คือการให้ภาพรวมของประสิทธิภาพของระบบ TPU และช่วยให้นักวิเคราะห์ประสิทธิภาพระบุส่วนต่างๆ ของระบบที่อาจมีปัญหาด้านประสิทธิภาพ

การแสดงภาพการใช้งานระดับชิป

หากต้องการใช้เครื่องมือนี้ ให้มองหาเครื่องมือ "โปรแกรมดูการใช้งาน" จาก "ลิ้นชัก" ทางด้านซ้าย เครื่องมือจะแสดงแผนภูมิแท่ง 4 รายการที่แสดงการใช้หน่วยการดำเนินการ (2 แผนภูมิด้านบน) และเส้นทาง DMA (2 แผนภูมิด้านล่าง) สำหรับโหนด Tensor 2 รายการในชิป TPU

การใช้งานหน่วย

  • การวางเมาส์เหนือแถบจะแสดงเคล็ดลับเครื่องมือที่มีรายละเอียดเกี่ยวกับการใช้งาน ได้แก่ จำนวน "ที่ทำได้" และ "สูงสุด" (ตามทฤษฎี) เปอร์เซ็นต์การใช้งาน ที่แสดงในแถบได้มาจากการหารจำนวน "ที่ทำได้" ด้วยจำนวน "สูงสุด" ระบบจะแสดงจำนวนที่ทำได้และจำนวนสูงสุดในหน่วยของคำสั่งสำหรับการใช้หน่วยการดำเนินการ และไบต์สำหรับการใช้แบนด์วิดท์

  • การใช้งานหน่วยการดำเนินการคือเศษส่วนของรอบที่หน่วย ไม่ว่างภายในระยะเวลาการสร้างโปรไฟล์

    การใช้งานหน่วยการประมวลผล Tensor Core ต่อไปนี้จะแสดงขึ้น

    • หน่วยสเกลาร์: คำนวณเป็นผลรวมของ count_s0_instruction และ count_s1_instruction กล่าวคือ จำนวนคำสั่งสเกลาร์ หารด้วยจำนวนรอบ 2 เท่า เนื่องจากปริมาณงานของหน่วยสเกลาร์คือ 2 คำสั่งต่อรอบ
    • ALU แบบเวกเตอร์: คำนวณเป็นผลรวมของ count_v0_instruction และ count_v1_instruction กล่าวคือ จำนวนคำสั่งเวกเตอร์ หารด้วย จำนวนรอบเป็น 2 เท่า เนื่องจากปริมาณงานของ ALU แบบเวกเตอร์คือ 2 คำสั่งต่อรอบ
    • Vector Stores: คำนวณเป็น count_vector_store กล่าวคือ จำนวน Vector Stores หารด้วยจำนวนรอบ เนื่องจาก ปริมาณงานของ Vector Store คือ 1 คำสั่งต่อรอบ
    • การโหลดเวกเตอร์: คำนวณเป็น count_vector_load กล่าวคือ จำนวน การโหลดเวกเตอร์ หารด้วยจำนวนรอบ เนื่องจากปริมาณงาน การโหลดเวกเตอร์คือ 1 คำสั่งต่อรอบ
    • หน่วยเมทริกซ์ (MXU): คำนวณเป็น count_matmul หารด้วย 1/8 ของ จำนวนรอบ เนื่องจากปริมาณงานของ MXU คือ 1 คำสั่งต่อ 8 รอบ
    • หน่วยสลับ (XU): คำนวณเป็น count_transpose หารด้วย 1/8 ของ จำนวนรอบ เนื่องจากปริมาณงานของ XU คือ 1 คำสั่งต่อ 8 รอบ
    • หน่วยลดและสับเปลี่ยน (RPU): คำนวณเป็น count_rpu_instruction หารด้วย 1/8 ของจำนวนรอบ เนื่องจาก ปริมาณงานของ RPU คือ 1 คำสั่งต่อ 8 รอบ

    รูปที่ต่อไปนี้เป็นบล็อกไดอะแกรมของ Tensor Core ที่แสดง หน่วยการดำเนินการ

    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 และเส้นทาง DMA 14 เส้นทางในโหนดเทนเซอร์ เส้นทาง "BMem to VMem" และ "Bmem to ICI" ในรูปภาพเป็นเส้นทางที่แชร์ซึ่งสะสม โดยตัวนับเดียว ซึ่งแสดงเป็น "BMem to ICI/VMem" ในเครื่องมือ DMA ที่ส่งไปยัง ICI คือ DMA ไปยัง HBM หรือ VMEM ระยะไกล ส่วน DMA จาก/ไปยัง HIB คือ 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