نمایشگر میزان استفاده

This tool is currently only available in nightly builds.

هدف

هدف این ابزار ارائه یک دید کلی از عملکرد یک سیستم TPU است و به یک تحلیلگر عملکرد اجازه می‌دهد تا بخش‌هایی از سیستم را که ممکن است دارای مشکلات عملکردی باشند، شناسایی کند.

تجسم استفاده در سطح تراشه

برای استفاده از این ابزار، از «کشو» در سمت چپ، ابزار «نمایشگر میزان استفاده» را پیدا کنید. این ابزار ۴ نمودار میله‌ای را نمایش می‌دهد که میزان استفاده از واحدهای اجرایی (۲ نمودار بالا) و مسیرهای DMA (۲ نمودار پایین) را برای ۲ گره تنسور در یک تراشه TPU نشان می‌دهد.

میزان استفاده از واحد

  • با نگه داشتن ماوس روی یک نوار، یک راهنما با جزئیاتی در مورد میزان استفاده نمایش داده می‌شود: مقادیر «دستیابی‌شده» و (نظری) «اوج». درصد استفاده نشان داده شده در نوار با تقسیم مقدار «دستیابی‌شده» بر مقدار «اوج» به دست می‌آید. مقادیر دست‌یافته و اوج برای میزان استفاده از واحد اجرا بر حسب واحد دستورالعمل و برای میزان استفاده از پهنای باند بر حسب بایت بیان می‌شوند.

  • میزان استفاده از یک واحد اجرایی، کسری از چرخه‌هایی است که آن واحد در دوره پروفایلینگ مشغول بوده است .

    نحوه‌ی استفاده از واحدهای اجرایی هسته‌ی تنسور زیر نشان داده شده است:

    • واحد اسکالر : به صورت مجموع count_s0_instruction و count_s1_instruction محاسبه می‌شود، یعنی تعداد دستورالعمل‌های اسکالر، تقسیم بر دو برابر تعداد چرخه‌ها، زیرا توان عملیاتی واحد اسکالر ۲ دستورالعمل در هر چرخه است.
    • واحدهای محاسبه و منطق برداری (ALU) : به صورت مجموع count_v0_instruction و count_v1_instruction محاسبه می‌شود، یعنی تعداد دستورالعمل‌های برداری، تقسیم بر دو برابر تعداد چرخه‌ها، زیرا توان عملیاتی واحدهای محاسبه و منطق برداری 2 دستورالعمل در هر چرخه است.
    • فروشگاه‌های برداری : به صورت count_vector_store محاسبه می‌شود، یعنی تعداد فروشگاه‌های برداری، تقسیم بر تعداد چرخه‌ها، زیرا توان عملیاتی فروشگاه برداری ۱ دستورالعمل در هر چرخه است.
    • بارهای برداری : به صورت count_vector_load محاسبه می‌شود، یعنی تعداد بارهای برداری، تقسیم بر تعداد چرخه‌ها، زیرا توان عملیاتی بار برداری ۱ دستورالعمل در هر چرخه است.
    • واحد ماتریس (MXU) : به صورت count_matmul تقسیم بر ۱/۸ تعداد چرخه‌ها محاسبه می‌شود، زیرا توان عملیاتی MXU برابر با ۱ دستورالعمل در هر ۸ چرخه است.
    • واحد انتقال (XU) : به صورت count_transpose تقسیم بر ۱/۸ تعداد چرخه‌ها محاسبه می‌شود، زیرا توان عملیاتی XU برابر با ۱ دستورالعمل در هر ۸ چرخه است.
    • واحد کاهش و جایگشت (RPU) : به صورت count_rpu_instruction تقسیم بر ۱/۸ تعداد چرخه‌ها محاسبه می‌شود، زیرا توان عملیاتی RPU برابر با ۱ دستورالعمل در هر ۸ چرخه است.

    شکل زیر نمودار بلوکی هسته تانسور است که واحدهای اجرایی را نشان می‌دهد:

    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 مشتق می‌شود.

    شکل زیر ۷ گره را نشان می‌دهد که نشان‌دهنده‌ی منابع/مقصدهای DMAها هستند و ۱۴ مسیر DMA در یک گره Tensor. مسیرهای "BMem به VMem" و "Bmem به ICI" در شکل در واقع یک مسیر مشترک هستند که توسط یک شمارنده‌ی واحد انباشته شده‌اند و در ابزار به صورت "BMem به 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