इस्तेमाल से जुड़ी जानकारी देखने वाला

This tool is currently only available in nightly builds.

लक्ष्य

इस टूल का मकसद, टीपीयू सिस्टम की परफ़ॉर्मेंस के बारे में खास जानकारी देना है. साथ ही, परफ़ॉर्मेंस विश्लेषक को सिस्टम के उन हिस्सों का पता लगाने की अनुमति देना है जिनमें परफ़ॉर्मेंस से जुड़ी समस्याएं हो सकती हैं.

चिप-लेवल पर इस्तेमाल की गई मेमोरी को विज़ुअलाइज़ करना

इस टूल का इस्तेमाल करने के लिए, बाईं ओर मौजूद "ड्रॉर" में जाकर, "इस्तेमाल करने वाले लोग देखने वाला टूल" ढूंढें. इस टूल में चार बार चार्ट दिखाए गए हैं. इनमें टीपीयू चिप में मौजूद दो Tensor नोड के लिए, एक्ज़ीक्यूशन यूनिट (ऊपर के दो चार्ट) और डीएमए पाथ (नीचे के दो चार्ट) के इस्तेमाल की जानकारी दी गई है.

यूनिट का इस्तेमाल

  • बार पर कर्सर घुमाने से, इस्तेमाल से जुड़ी जानकारी वाली टूलटिप दिखती है. इसमें "हासिल किया गया" और (सैद्धांतिक) "पीक" वैल्यू की जानकारी होती है. बार में दिखाया गया इस्तेमाल का प्रतिशत, "हासिल किया गया" अमाउंट को "पीक" अमाउंट से भाग देकर मिलता है. इस्तेमाल की गई और पीक वैल्यू को, एक्ज़ीक्यूशन यूनिट के इस्तेमाल के लिए निर्देशों की इकाइयों में दिखाया जाता है. साथ ही, बैंडविड्थ के इस्तेमाल के लिए बाइट में दिखाया जाता है.

  • प्रोफ़ाइलिंग की अवधि के दौरान, एक्ज़ीक्यूशन यूनिट के इस्तेमाल का मतलब है कि यूनिट कितने फ़्रैक्शन ऑफ़ साइकल में व्यस्त थी.

    नीचे दिए गए, टेंसर कोर एक्ज़ीक्यूशन यूनिट के इस्तेमाल की जानकारी दी गई है:

    • स्केलर यूनिट: इसकी गिनती count_s0_instruction और count_s1_instruction के योग के तौर पर की जाती है.इसका मतलब है कि स्केलर निर्देशों की संख्या को साइकल की संख्या के दोगुने से भाग दिया जाता है. ऐसा इसलिए, क्योंकि स्केलर यूनिट थ्रूपुट, हर साइकल में दो निर्देश होते हैं.
    • वेक्टर एएलयू: इसका हिसाब, count_v0_instruction और count_v1_instruction के योग के तौर पर लगाया जाता है.इसका मतलब है कि वेक्टर निर्देशों की संख्या को साइकल की संख्या के दोगुने से भाग दिया जाता है. ऐसा इसलिए, क्योंकि वेक्टर एएलयू थ्रूपुट, हर साइकल में दो निर्देश होते हैं.
    • वेक्टर स्टोर: इसकी गिनती count_vector_store के तौर पर की जाती है. इसका मतलब है कि वेक्टर स्टोर की संख्या को साइकल की संख्या से भाग दिया जाता है, क्योंकि वेक्टर स्टोर थ्रूपुट, हर साइकल में एक निर्देश होता है.
    • वेक्टर लोड: इसकी गिनती count_vector_load के तौर पर की जाती है.इसका मतलब है कि वेक्टर लोड की संख्या को साइकल की संख्या से भाग दिया जाता है. ऐसा इसलिए, क्योंकि वेक्टर लोड थ्रूपुट, हर साइकल में एक निर्देश होता है.
    • मैट्रिक्स यूनिट (एमएक्सयू): इसकी गिनती count_matmul को साइकल की संख्या के 1/8वें हिस्से से भाग देकर की जाती है. ऐसा इसलिए, क्योंकि एमएक्सयू थ्रूपुट, हर आठ साइकल में एक निर्देश होता है.
    • ट्रांसपोज़ यूनिट (XU): इसे count_transpose को साइकल की संख्या के 1/8वें हिस्से से भाग देकर कैलकुलेट किया जाता है, क्योंकि XU थ्रूपुट हर आठ साइकल में एक निर्देश होता है.
    • रिडक्शन और परम्यूटेशन यूनिट (आरपीयू): इसकी गिनती इस तरह की जाती है: count_rpu_instruction को साइकल की संख्या के 1/8वें हिस्से से भाग दिया जाता है, क्योंकि आरपीयू थ्रूपुट, हर आठ साइकल में एक निर्देश होता है.

    यहां दिए गए डायग्राम में, टेंसर कोर का ब्लॉक डायग्राम दिखाया गया है. इसमें एक्ज़ीक्यूशन यूनिट दिखाई गई हैं:

    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
    

    इनमें से हर एक्ज़ीक्यूशन यूनिट के बारे में ज़्यादा जानकारी के लिए, कृपया टीपीयू आर्किटेक्चर देखें.

  • डीएमए पाथ का इस्तेमाल, बैंडविड्थ का वह हिस्सा (बाइट/साइकल) होता है जिसका इस्तेमाल प्रोफ़ाइलिंग की अवधि के दौरान किया गया था. यह NF_CTRL काउंटर से मिलता है.

    इस इमेज में, डीएमए के सोर्स / डेस्टिनेशन दिखाने वाले सात नोड और एक टेंसर नोड में 14 डीएमए पाथ दिखाए गए हैं. इस इमेज में "BMem to VMem" और "Bmem to ICI" पाथ, असल में एक ही काउंटर से इकट्ठा किया गया शेयर किया गया पाथ है. इसे टूल में "BMem to ICI/VMem" के तौर पर दिखाया गया है. आईसीआई को भेजा गया डीएमए, रिमोट एचबीएम या वीएमईएम को भेजा गया डीएमए होता है. वहीं, एचआईबी से/को भेजा गया डीएमए, होस्ट मेमोरी से/को भेजा गया डीएमए होता है.

    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