CUDA Academy · पाठ

कोएलस्ड बनाम स्ट्राइडेड रीड

थ्रेड से एड्रेस का मानचित्रण क्यों महत्वपूर्ण है।

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

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

सब कुछ मैपिंग पर निर्भर है

कोएलैसिंग इस बात पर निर्भर करती है कि प्रत्येक थ्रेड किस पते को छूता है। थ्रेड से पते का मानचित्र तय करता है कि क्या पूरा वार्प एक ही लेन-देन से काम चला सकता है।

कोएलैस्ड पैटर्न

जब पड़ोसी थ्रेड पड़ोसी पतों को पढ़ते हैं, तो वार्प एक सन्निहित अनुक्रम को कवर करता है। यह सुव्यवस्थित विन्यास कोएलैस्ड अभिगम कहलाता है।

int i = blockIdx.x * blockDim.x + threadIdx.x;
float v = data[i];

यह क्यों बेहतर है

थ्रेड 0 इंडेक्स 0 को, थ्रेड 1 इंडेक्स 1 को और इसी तरह आगे पढ़ता है। सभी 32 पते एक संरेखित पंक्ति में आते हैं, इसलिए GPU को केवल एक लेन-देन की आवश्यकता होती है।

स्ट्राइड का प्रवेश

स्ट्राइड उन पतों के बीच का निश्चित अंतर है जिन्हें क्रमिक थ्रेड छूते हैं। जैसे ही यह अंतर एक अवयव से अधिक होता है, कोएलैसिंग टूटने लगती है।

float v = data[i * stride];

स्ट्राइड वाले पठन फैल जाते हैं

2 के स्ट्राइड में, थ्रेड 0, 0 पढ़ता है; थ्रेड 1, 2 पढ़ता है; और थ्रेड 2, 4 पढ़ता है। अब वार्प दोगुनी स्मृति में फैल जाता है, इसलिए उसे अधिक लेन-देन चाहिए।

लागत बढ़ती जाती है

स्ट्राइड को दोगुना करने पर छुई जाने वाली पंक्तियों की संख्या भी लगभग दोगुनी हो जाती है। बड़े स्ट्राइड वार्प को बहुत-से लेन-देन की ओर धकेल सकते हैं, जबकि प्रत्येक पंक्ति के केवल छोटे-से हिस्से का उपयोग होता है।

एक आम जाल

पंक्ति-प्रमुख मैट्रिक्स का पूरा कॉलम प्रत्येक थ्रेड को देने से बहुत बड़ा स्ट्राइड बनता है। कोड में यह सुव्यवस्थित दिखता है, लेकिन चुपचाप हर वार्प को बिखेर देता है।

float v = matrix[threadIdx.x * width + row];

मानचित्रण का ट्रांसपोज़ करें

अक्सर समाधान केवल यह बदलना होता है कि कौन-सा इंडेक्स थ्रेड के साथ सबसे तेज़ी से बदलता है। क्रमिक थ्रेडों को क्रमिक स्मृति पर चलने दें और पठन फिर से कोएलैस्ड हो जाएगा।

float v = matrix[row * width + threadIdx.x];

ऑफ़सेट भी नुकसान पहुँचाते हैं

यदि कोएलैस्ड पैटर्न पंक्ति के बीच से शुरू हो, तो उसे भी नुकसान होता है। गलत-संरेखित ऑफ़सेट वार्प को सीमा के आर-पार ले जाता है और एक पठन को दो भागों में बाँट देता है।

वार्प के अनुसार सोचें

किसी पैटर्न का मूल्यांकन करते समय केवल एक थ्रेड की कल्पना न करें। सभी 32 लेनों को एक साथ देखें और पूछें कि उनके पते मिलकर कितनी पंक्तियों को कवर करते हैं। 🔍

सामान्य नियम

सबसे तेज़ी से बदलने वाले इंडेक्स को threadIdx.x के अनुसार चलाएँ। यह एक आदत आपकी अधिकांश वैश्विक रीड को बिना अतिरिक्त प्रयास के कोएलैस्ड बनाए रखती है।

त्वरित जाँच

वह अभिगम पैटर्न चुनें जो सबसे अच्छी तरह कोएलैस होता है।

पुनरावलोकन

आपने देखा कि कोएलैस्ड रीड पड़ोसी तत्वों को साथ रखती हैं, जबकि स्ट्राइड उन्हें पंक्तियों में बिखेर देता है। सबसे तेज़ इंडेक्स को चलाने का काम threadIdx.x को दें। 🎉

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

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

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

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

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

क्या “कोएलस्ड बनाम स्ट्राइडेड रीड” पाठ निःशुल्क है?

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

“कोएलस्ड बनाम स्ट्राइडेड रीड” में मैं क्या सीखूँगा?

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

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

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

“कोएलस्ड बनाम स्ट्राइडेड रीड” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. मेमोरी लेन-देन क्या है
  2. कोएलस्ड बनाम स्ट्राइडेड रीड
  3. सरणियों की संरचना बनाम संरचनाओं की सरणी
  4. प्रभावी बैंडविड्थ मापें
← CUDA Academy पर वापस जाएँ