सरणियों की संरचना बनाम संरचनाओं की सरणी
ऐसा लेआउट चुनें जिससे कोएलसिंग हो।
सरणियों की संरचना बनाम संरचनाओं की सरणी, CoddyKit पर CUDA Academy का एक निःशुल्क पाठ है। यह 4 में से 3वाँ पाठ है। आप नीचे पूरा पाठ निःशुल्क पढ़ सकते हैं—फिर अंतर्निहित कोड संपादक और 24/7 एआई ट्यूटर के साथ ब्राउज़र में इसका व्यावहारिक अभ्यास कर सकते हैं। यह CUDA Academy सीखने के मार्ग का हिस्सा है और आपकी प्रगति वेब तथा CoddyKit ऐप पर सिंक होती रहती है। CUDA Academy पाठ्यक्रम में कुल 4 पाठ शामिल हैं।
रिकॉर्ड संग्रहीत करने के दो तरीके
मान लीजिए कि प्रत्येक Particle में x, y और z हैं। आप इन्हें साथ रख सकते हैं या अलग-अलग बाँट सकते हैं, और यह चुनाव बदल देता है कि हर वार्प कैसे कोएलैस होता है।
स्ट्रक्चर की ऐरे
स्वाभाविक C++ विन्यास प्रत्येक रिकॉर्ड के फ़ील्ड को एक-दूसरे के पास रखता है। यह स्ट्रक्चर की ऐरे है, जिसे अक्सर AoS के संक्षिप्त रूप में लिखा जाता है।
struct Particle { float x, y, z; };
Particle p[N];AoS क्यों बिखरता है
जब कोई वार्प प्रत्येक रिकॉर्ड से केवल x पढ़ता है, तो x के मान 12 bytes की दूरी पर होते हैं। यह अंतर्निहित स्ट्राइड लाई जाने वाली प्रत्येक पंक्ति का अधिकांश भाग व्यर्थ कर देता है।
float xi = p[i].x; // x values are spaced by sizeof(Particle)ऐरे का स्ट्रक्चर
इसे उलट दें: सभी x मानों को साथ रखें, सभी y मानों को साथ रखें और सभी z मानों को साथ रखें। इसे ऐरे का स्ट्रक्चर, या SoA, कहते हैं।
float x[N];
float y[N];
float z[N];SoA क्यों कोएलैस होता है
अब 32 थ्रेडों के लिए x पढ़ने पर 32 सन्निहित floats छुई जाती हैं। यह एक संरेखित पंक्ति और प्रत्येक फ़ील्ड के लिए एक सुव्यवस्थित लेन-देन है।
float xi = x[i]; // neighbors land in one lineफ़ील्ड-अभिगम जाँच
देखें कि आपका kern डेटा कैसे पढ़ता है। यदि थ्रेड अनेक रिकॉर्डों में एक ही फ़ील्ड पर चलते हैं, तो GPU पर SoA लगभग हमेशा बेहतर होता है।
AoS कब ठीक है
यदि प्रत्येक थ्रेड किसी रिकॉर्ड के सभी फ़ील्ड को साथ-साथ उपयोग करता है, तो AoS उन्हें एक ही पंक्ति में रखता है और कैश के लिए अनुकूल बना रहता है।
सिर्फ शैली नहीं, बैंडविड्थ भी
यह पसंद का मामला नहीं है। AoS से SoA पर जाने से केवल व्यर्थ bytes घटाकर, उसी गणना के लिए वास्तविक प्रसंस्करण दर कई गुना बढ़ सकती है।
एक मिश्रित मध्य मार्ग
आप कुछ रिकॉर्डों को समूहित कर सकते हैं और फिर प्रत्येक समूह के भीतर फ़ील्ड अलग कर सकते हैं। यह AoSoA विन्यास कोएलैसिंग और कैश स्थानीयता के बीच संतुलन बनाता है।
अनुकूलन से पहले विन्यास तय करें
विन्यास को देर से बदलना कठिन होता है, क्योंकि इसका प्रभाव हर kern और कॉपी पर पड़ता है। अभिगम पैटर्न के आधार पर अपना SoA या AoS विन्यास पहले ही चुन लें। 🧩
मुख्य मानचित्रण
GPU का सामान्य नियम: फ़ील्ड को अलग-अलग ऐरे में रखें, ताकि प्रत्येक वार्प एक सन्निहित अनुक्रम पढ़े। फ़ील्ड-आधारित kern के लिए SoA को प्राथमिकता दें।
त्वरित जाँच
इस अभिगम के लिए कोएलैस होने वाला विन्यास चुनें।
पुनरावलोकन
आपने AoS और SoA की तुलना की: पूरे रिकॉर्ड का उपयोग हो तो फ़ील्ड को साथ रखें, लेकिन जब वार्प एक समय में एक फ़ील्ड पर चले, तो उन्हें ऐरे में अलग कर दें। 🎉
एआई शिक्षक के साथ 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 पाठ में एक अंतर्निर्मित कोड संपादक शामिल है, जिससे आप सीधे अपने ब्राउज़र में वास्तविक कोड लिख और चला सकते हैं और तुरंत एआई प्रतिक्रिया पा सकते हैं—स्थानीय सेटअप की आवश्यकता नहीं है।
इस पाठ्यक्रम के सभी पाठ
- मेमोरी लेन-देन क्या है
- कोएलस्ड बनाम स्ट्राइडेड रीड
- सरणियों की संरचना बनाम संरचनाओं की सरणी
- प्रभावी बैंडविड्थ मापें