CUDA Academy · पाठ

__shared__ सारणियाँ घोषित करें

प्रति ब्लॉक तेज़ अस्थायी मेमोरी।

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

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

प्रत्येक ब्लॉक के लिए एक स्क्रैचपैड

प्रत्येक ब्लॉक को ऑन-चिप स्मृति का एक छोटा, तेज़ पूल मिलता है, जिसे साझी स्मृति कहते हैं। इसे ऐसा स्क्रैचपैड समझें जिसे पूरा ब्लॉक मिलकर लिख और पढ़ सकता है।

यह इतनी तेज़ क्यों है

साझी स्मृति streaming multiprocessor पर ही स्थित होती है, इसलिए यह वैश्विक स्मृति की तुलना में लगभग 100x तेज़ होती है। धीमी ऑफ-चिप DRAM पर बार-बार निर्भरता से बचने के लिए इसका उपयोग करें। 🚀

__shared__ कीवर्ड

आप इसे kern के भीतर __shared__ qualifier से घोषित करते हैं। इसके बाद यह एक ऐरे ब्लॉक के प्रत्येक थ्रेड द्वारा साझा की जाती है।

__global__ void kern() {
    __shared__ float tile[256];
}

कम्पाइल समय पर निश्चित आकार

जब आप कोष्ठकों में आकार देते हैं, तो वह स्थिर साझा स्मृति होती है। कम्पाइलर को आकार पता होना चाहिए, इसलिए वह runtime मान नहीं, बल्कि एक स्थिरांक होना चाहिए।

__shared__ int counts[128];

एक प्रति, प्रत्येक थ्रेड के लिए नहीं

मुख्य विचार यह है: __shared__ ऐरे प्रति ब्लॉक केवल एक बार बनती है, प्रत्येक थ्रेड के लिए नहीं। सभी थ्रेड ठीक उसी ऐरे को देखते हैं।

थ्रेड इसके माध्यम से सहयोग करते हैं

क्योंकि प्रत्येक थ्रेड समान डेटा देखता है, साझा स्मृति थ्रेडों को सहयोग करने देती है। एक थ्रेड कोई मान रख सकता है और पड़ोसी थ्रेड उसे उठा सकता है।

ब्लॉक का क्षेत्र, उससे आगे नहीं

इसका जीवनकाल ब्लॉक के समान होता है। ऐरे ब्लॉक के शुरू होने पर बनती है और उसके समाप्त होने पर मिट जाती है, इसलिए इसका केवल ब्लॉक क्षेत्र होता है। 🧱

प्रत्येक थ्रेड का अपना स्लॉट

एक सामान्य पैटर्न है कि प्रत्येक थ्रेड के लिए एक स्लॉट हो और उसे threadIdx.x से इंडेक्स किया जाए। प्रत्येक थ्रेड अपना तत्व समानांतर रूप से साझा स्मृति में लोड करता है।

__shared__ float s[256];
s[threadIdx.x] = input[i];

छोटा, लेकिन मूल्यवान संसाधन

साझी स्मृति छोटी होती है, अक्सर प्रत्येक SM के लिए केवल 48 से 100 KB। प्रत्येक ब्लॉक के लिए बहुत अधिक माँग करने पर एक साथ चल सकने वाले ब्लॉकों की संख्या घट जाती है।

प्रमुख उपयोग: टाइल तैयार करना

सबसे सामान्य कार्य वैश्विक डेटा की एक टाइल तैयार करना है, ताकि ब्लॉक धीमी DRAM पर लौटे बिना उसका कई बार पुनः उपयोग कर सके।

अन्य ब्लॉकों को दिखाई नहीं देती

सीमा याद रखें: साझा स्मृति अपने ब्लॉक तक सीमित होती है। दो अलग-अलग ब्लॉकों को अपनी अलग-अलग प्रति मिलती है और वे एक-दूसरे में झाँक नहीं सकते।

त्वरित जाँच

आइए जाँचें कि साझा स्मृति का क्षेत्र कैसे निर्धारित होता है।

पुनरावलोकन

आपने सीखा कि __shared__ प्रत्येक ब्लॉक को एक तेज़ ऑन-चिप स्क्रैचपैड देता है, जो प्रति ब्लॉक एक बार बनता है और पुनः उपयोग योग्य डेटा तैयार करने के लिए आदर्श है। अगला विषय: थ्रेडों को तालमेल में रखना। 🎯

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

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

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

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

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

क्या “__shared__ सारणियाँ घोषित करें” पाठ निःशुल्क है?

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

“__shared__ सारणियाँ घोषित करें” में मैं क्या सीखूँगा?

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

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

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

“__shared__ सारणियाँ घोषित करें” पाठ पूरा करने में कितना समय लगता है?

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

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

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

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

  1. __shared__ सारणियाँ घोषित करें
  2. __syncthreads से समकालित करें
  3. बैंक टकराव से बचें
  4. गतिशील साझा मेमोरी
← CUDA Academy पर वापस जाएँ