CUDA Academy · पाठ

निर्देश-स्तरीय समानांतरता

हर थ्रेड को अधिक स्वतंत्र कार्य दें।

पाठ 1, कुल 4 में से13 चरण

निर्देश-स्तरीय समानांतरता, CoddyKit पर CUDA Academy का एक निःशुल्क पाठ है। यह 4 में से 1वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह CUDA Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। CUDA Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

एक समय में एक से अधिक काम

एक ही thread के भीतर GPU कई स्वतंत्र instructions को एक साथ चलती अवस्था में रख सकता है। इस overlap को instruction-level parallelism, या ILP, कहा जाता है।

ILP क्यों महत्वपूर्ण है

Memory और math operations को पूरा होने में कई cycles लगते हैं। हर thread में पर्याप्त स्वतंत्र काम होने पर hardware stall होने के बजाय उस latency को छिपा देता है।

Dependencies Overlap रोकती हैं

यदि हर line को उससे पिछली line के परिणाम की आवश्यकता हो, तो कुछ भी overlap नहीं कर सकता। लंबी dependency chain thread को हर चरण पर प्रतीक्षा करने के लिए बाध्य करती है।

float a = x * 2.0f;
float b = a + 1.0f; // waits on a
float c = b * b;    // waits on b

स्वतंत्र काम सहजता से चलता है

जब operations एक-दूसरे पर निर्भर नहीं होते, तो scheduler उन्हें लगातार issue कर सकता है। Chains को स्वतंत्र हिस्सों में तोड़ना ILP का मूल है।

float a = x * 2.0f;
float b = y * 2.0f; // does not need a

एक Thread, कई Elements

ILP बढ़ाने का सरल तरीका है कि हर thread कई elements को process करे। अलग-अलग sums ऐसा स्वतंत्र काम बन जाते हैं जिसे hardware overlap कर सकता है।

out[i]     = in[i]     + 1.0f;
out[i + n] = in[i + n] + 1.0f;

कई Accumulators का उपयोग करें

एक variable में sum करने से chain बनती है। इसे कई accumulators में बाँटने पर स्वतंत्र additions parallel में चल सकते हैं और बाद में उन्हें मिलाया जा सकता है।

float s0 = 0, s1 = 0;
s0 += a[i];
s1 += a[i + 1];

अंत में मिलाएँ

लूप के बाद अपने आंशिक accumulators को अंतिम उत्तर में मिलाएँ। अब single dependency हर iteration में नहीं, केवल एक बार आती है।

float total = s0 + s1;

ILP के बदले Registers

हर thread में अधिक values रखने के लिए अधिक registers लगते हैं। थोड़ी अतिरिक्त register pressure आम तौर पर छिपाई गई latency के योग्य होती है, लेकिन spills पर नज़र रखें।

Latency छिपाने के दो तरीके

GPUs कई resident threads के साथ-साथ हर thread के भीतर ILP से stalls छिपाते हैं। मजबूत ILP occupancy कम होने पर भी SM को व्यस्त रख सकता है।

लंबी Chains खोजें

ILP बढ़ाने के लिए अपने inner loop में सबसे लंबी dependency chain खोजें। उसे छोटे, स्वतंत्र हिस्सों में पुनर्गठित करने से अधिक parallelism सामने आता है।

अति न करें

बहुत अधिक स्वतंत्र values registers को spill कर सकती हैं और गति घटा सकती हैं। ILP को धीरे-धीरे tune करें और हर चरण के वास्तव में लाभकारी होने की पुष्टि profiler से करें।

त्वरित जाँच

आपका reduction हर iteration में एक ही variable में sum करता है। आप ILP कैसे बढ़ाएँगे?

पुनरावलोकन: Thread के भीतर Overlap

आपने देखा कि ILP स्वतंत्र instructions को साथ चलाकर latency छिपाता है। Dependency chains तोड़ें और कई accumulators का उपयोग करें, लेकिन register pressure का ध्यान रखें। 🚀

शुरुआत निःशुल्क

एआई शिक्षक के साथ C++ सीखें — निःशुल्क

अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।

पाठ्यक्रम
30
पाठ
120

अक्सर पूछे जाने वाले प्रश्न

क्या “निर्देश-स्तरीय समानांतरता” पाठ निःशुल्क है?

हाँ—“निर्देश-स्तरीय समानांतरता” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और CUDA Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। CUDA Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।

“निर्देश-स्तरीय समानांतरता” में मैं क्या सीखूँगा?

हर थ्रेड को अधिक स्वतंत्र कार्य दें। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ CUDA Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।

क्या CUDA Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?

पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर CUDA Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 1वाँ पाठ है।

“निर्देश-स्तरीय समानांतरता” पाठ पूरा करने में कितना समय लगता है?

CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।

क्या मैं इस CUDA Academy पाठ में कोड लिख और चला सकता हूँ?

हाँ। हर CUDA Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।

इस पाठ्यक्रम के सभी पाठ

  1. निर्देश-स्तरीय समानांतरता
  2. #pragma unroll से लूप अनरोलिंग
  3. float4 से वेक्टरयुक्त लोड
  4. रजिस्टर दबाव और स्पिल
← CUDA Academy पर वापस जाएँ