- GPU computing की बुनियादी समझ हर software engineer के लिए ज़रूरी है
- यह लेख मुख्य रूप से Nvidia GPU पर केंद्रित है और Nvidia की terminology का उपयोग करता है
- GPU को graphics, numerical computing, deep learning आदि में बड़े पैमाने की parallel processing और high throughput के लिए डिज़ाइन किया गया है
CPU और GPU की तुलना
- CPU को sequential instruction execution के लिए डिज़ाइन किया गया है, और इसमें instruction execution latency को कम करने के लिए कई तरह की सुविधाएँ शामिल होती हैं।
- GPU को बड़े पैमाने की parallel processing और high throughput के लिए डिज़ाइन किया गया है, और इसमें मध्यम से उच्च instruction execution latency होती है।
- GPU, CPU की तुलना में कहीं अधिक संख्या में operations को बहुत तेज़ी से प्रोसेस कर सकता है।
# GPU आर्किटेक्चर
GPU compute आर्किटेक्चर
- GPU, streaming multiprocessors (SM) की एक array से बना होता है।
- हर SM में कई streaming processors (cores या threads) शामिल होते हैं।
- SM में सीमित मात्रा की on-chip memory (shared memory या scratchpad) होती है, जिसे सभी cores साझा करते हैं।
GPU memory आर्किटेक्चर
- GPU में memory की कई परतों वाले अलग-अलग प्रकार होते हैं।
- हर SM में बड़ी मात्रा में registers होते हैं, जिन्हें cores के बीच साझा किया जाता है।
- constant cache का उपयोग code execution में इस्तेमाल होने वाले constant data को cache करने के लिए किया जाता है।
- shared memory तेज़ और low-latency on-chip programmable SRAM memory होती है।
- L1 cache, L2 cache से अक्सर एक्सेस किए जाने वाले data को cache करता है।
- L2 cache सभी SMs द्वारा साझा किया जाता है और global memory से अक्सर एक्सेस किए जाने वाले data को cache करता है।
- global memory उच्च क्षमता और high-bandwidth DRAM होती है, जो SMs से दूर होने के कारण high latency रखती है।
# GPU execution model को समझना
CUDA kernel और thread block का संक्षिप्त परिचय
- CUDA, Nvidia GPU के लिए programs लिखने का programming interface है।
- kernel, C/C++ function जैसे रूप में व्यक्त वह computation है जो GPU पर parallel रूप से चलती है।
- kernel execution के लिए threads की संख्या शुरू की जाती है, जिसे grid कहा जाता है।
GPU पर kernel execution के चरण
- host से device पर data copy करना
- SM पर thread blocks को schedule करना
- single instruction multiple thread (SIMT) और warp
- warp scheduling और latency hiding
- device से host memory में result data copy करना
# resource partitioning और occupancy की अवधारणा
- GPU resource utilization को "occupancy" नामक metric से मापा जाता है, जो SM द्वारा समर्थित अधिकतम warps की संख्या के मुकाबले allocated warps के अनुपात को दर्शाता है।
- occupancy, SM के execution resources, registers, shared memory, thread block slots और thread slots द्वारा सीमित होती है।
- code optimization के माध्यम से high occupancy बनाए रखते हुए latency को कम करना महत्वपूर्ण है।
# सारांश
- GPU कई SMs से मिलकर बना होता है, और हर SM में कई processing cores होते हैं।
- global memory chip से दूर होती है, इसलिए इसकी latency अधिक होती है।
- L1 और L2 cache, CPU के L1/L2 cache की तरह काम करते हैं।
- हर SM में shared memory होती है, जिसे cores के बीच साझा किया जाता है।
- GPU पर kernel चलाने के लिए threads की एक grid शुरू की जाती है।
- GPU, SM पर चलाने के लिए blocks allocate करता है, और सभी threads उसी SM पर execute होते हैं।
- SM को allocate किए गए threads को आगे 32 के समूहों में बाँटा जाता है, जिन्हें warp कहा जाता है।
- GPU, threads की आवश्यकताओं और SM की सीमाओं के आधार पर threads के बीच dynamic resource partitioning करता है।
# समापन
- GPU आज व्यापक रूप से उपयोग किए जाते हैं, और उनका architecture व execution model, CPU से बुनियादी रूप से अलग है।
- यह लेख GPU के विभिन्न पहलुओं को कवर करता है और यह समझ देता है कि GPU इतने व्यापक रूप से क्यों उपयोग किए जाते हैं और कैसे काम करते हैं।
GN⁺ की राय
- GPU, deep learning और जटिल numerical computing के लिए एक अनिवार्य तकनीक है, और यह लेख GPU के बुनियादी architecture तथा execution model को समझने में मदद करता है।
- इसमें parallel processing और high-performance computing में रुचि रखने वाले शुरुआती software engineers के लिए विशेष रूप से महत्वपूर्ण सामग्री शामिल है।
- यह लेख GPU programming का बुनियादी ज्ञान देता है और इस क्षेत्र के प्रति जिज्ञासा जगाने वाला एक रोचक संसाधन है।
1 टिप्पणियां
Hacker News राय