अनुक्रमिक एड्रेसिंग
साझा मेमोरी में टकराव-मुक्त स्ट्राइड।
अनुक्रमिक एड्रेसिंग, CoddyKit पर CUDA Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह CUDA Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। CUDA Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
साझा मेमोरी में बैंक होते हैं
साझा मेमोरी को 32 बैंकों में बाँटा जाता है, वॉर्प की प्रत्येक लेन के लिए एक बैंक। जब 32 थ्रेड 32 अलग-अलग बैंकों तक पहुँचते हैं, तो सभी रीड एक ही तेज़ चक्र में हो जाते हैं।
बैंक टकराव आपकी गति घटाते हैं
यदि वॉर्प के दो थ्रेड एक ही बैंक तक पहुँचते हैं, तो इसे बैंक टकराव कहते हैं। हार्डवेयर इन पहुँचों को क्रम से करता है, जिससे अतिरिक्त चक्र लगते हैं।
इंटरलीव्ड एड्रेसिंग
पिछले रिडक्शन में इंटरलीव्ड एड्रेसिंग का उपयोग हुआ था: स्ट्राइड छोटा शुरू होता है और दोगुना होता जाता है, इसलिए पार्टनर साझा मेमोरी में पास-पास रहते हैं।
int index = 2 * s * tid;
data[index] += data[index + s];इंटरलीविंग में टकराव क्यों होता है
छोटे और दोगुने होते स्ट्राइड के साथ, वॉर्प की कई लेन एक ही बैंक पर मैप हो जाती हैं। इसलिए वे पहुँचें अब एक ही चक्र में नहीं हो सकतीं।
स्ट्राइड का क्रम उलटें
क्रमिक एड्रेसिंग में स्ट्राइड बड़ा शुरू होता है और हर चरण में आधा होता जाता है, जो इंटरलीविंग का उलटा है। यह एक बदलाव टकराव समाप्त कर देता है।
for (int s = blockDim.x / 2; s > 0; s >>= 1) {
if (tid < s)
data[tid] += data[tid + s];
__syncthreads();
}बड़ा स्ट्राइड, साफ़ बैंक
बड़ा स्ट्राइड पार्टनर एड्रेसों को काफी दूर-दूर रखता है, इसलिए प्रत्येक लेन अपने अलग बैंक पर पहुँचती है। वॉर्प बिना टकराव के एक ही चक्र में रीड करता है।
tid < s सुरक्षा जाँच
हर चरण में केवल थ्रेडों का निचला आधा भाग काम करता है, जिसे tid < s के रूप में लिखा जाता है। इससे सक्रिय थ्रेड लगातार क्रम में रहते हैं और वॉर्प में विचलन भी नहीं होता।
एक साथ दो लाभ
क्रमिक एड्रेसिंग एक ही कर्नेल में बैंक टकराव ठीक करती है और वॉर्प विचलन से बचाती है। लेआउट में एक बदलाव से प्रदर्शन की दो समस्याएँ हल हो जाती हैं।
हर चरण में अब भी सिंक करें
आपको हर चरण के बाद भी __syncthreads की आवश्यकता होती है। अगले स्तर के लिए रीड करने से पहले थ्रेडों को पिछले स्तर के लेखन दिखाई देने चाहिए।
परिणाम इंडेक्स 0 पर आता है
जैसे-जैसे स्ट्राइड घटकर शून्य की ओर जाता है, सभी आंशिक योग data[0] में मिल जाते हैं। फिर थ्रेड 0 उस ब्लॉक का परिणाम वैश्विक मेमोरी में लिखता है।
एक पारंपरिक अनुकूलन
यह तरीका NVIDIA की प्रसिद्ध रिडक्शन मार्गदर्शिका से सीधे लिया गया है। क्रमिक एड्रेसिंग टकराव-मुक्त कर्नेल की दिशा में पाठ्यपुस्तक वाला कदम है।
त्वरित जाँच
सोचिए कि बड़ा और आधा होता स्ट्राइड छोटे और दोगुने होते स्ट्राइड से बेहतर क्यों है।
पुनरावलोकन
आपने इंटरलीव्ड एड्रेसिंग की जगह क्रमिक एड्रेसिंग अपनाई: स्ट्राइड बड़ा शुरू होता है और आधा होता जाता है, जिससे बैंक टकराव और विचलन दोनों एक साथ समाप्त हो जाते हैं। अगला विषय: कई ब्लॉकों के योग। ✨
एआई शिक्षक के साथ C++ सीखें — निःशुल्क
अपने ब्राउज़र में वास्तविक कोड लिखें और चलाएँ, चौबीसों घंटे एआई शिक्षक से तुरंत सहायता पाएँ, और वेब या ऐप पर वहीं से शुरू करें जहाँ आपने छोड़ा था।
- पाठ्यक्रम
- 30
- पाठ
- 120
अक्सर पूछे जाने वाले प्रश्न
क्या “अनुक्रमिक एड्रेसिंग” पाठ निःशुल्क है?
हाँ—“अनुक्रमिक एड्रेसिंग” का पूरा पाठ यहाँ वेब पर निःशुल्क पढ़ा जा सकता है। इंटरैक्टिव अभ्यास (अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर) करने और CUDA Academy पाठ्यक्रम का बाकी हिस्सा अनलॉक करने के लिए CoddyKit PRO लें। CUDA Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
“अनुक्रमिक एड्रेसिंग” में मैं क्या सीखूँगा?
साझा मेमोरी में टकराव-मुक्त स्ट्राइड। आप ब्राउज़र में सीधे चलाए जाने वाले व्यावहारिक कोड के साथ CUDA Academy का अभ्यास करते हैं, और पाठ पूरा करते समय 24/7 एआई ट्यूटर आपके प्रश्नों के उत्तर देता है।
क्या CUDA Academy शुरू करने के लिए मुझे किसी अनुभव की आवश्यकता है?
पहले के अनुभव की आवश्यकता नहीं है। CoddyKit पर CUDA Academy शुरुआती से लेकर उन्नत शिक्षार्थियों तक सभी के लिए व्यवस्थित किया गया है, इसलिए आप यहीं से या शुरुआत से सीखना शुरू कर सकते हैं और अपनी गति से आगे बढ़ सकते हैं। यह 4 में से 3वाँ पाठ है।
“अनुक्रमिक एड्रेसिंग” पाठ पूरा करने में कितना समय लगता है?
CoddyKit का अधिकांश पाठ लगभग 5–10 मिनट में पूरा हो जाता है। हर पाठ छोटा और संवादात्मक है, इसलिए आप लगातार प्रगति करते हैं और वेब या ऐप पर वहीं से सीखना जारी रख सकते हैं जहाँ आपने छोड़ा था।
क्या मैं इस CUDA Academy पाठ में कोड लिख और चला सकता हूँ?
हाँ। हर CUDA Academy पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- रिडक्शन ट्री का विचार
- वार्प विचलन समाप्त करें
- अनुक्रमिक एड्रेसिंग
- बहु-ब्लॉक अंतिम रिडक्शन