CUDA Academy · पाठ

एक कर्नेल से कर्नेल लॉन्च करना

डिवाइस-पक्षीय पुनरावृत्ति और परिष्करण

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

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

Kernels द्वारा kernels लॉन्च करना

dynamic parallelism के साथ चल रहा GPU kernel स्वयं दूसरा kernel लॉन्च कर सकता है; CPU पर वापस जाने की आवश्यकता नहीं होती। 🚀

वही syntax, device side पर

Launch host launch जैसा ही दिखता है: परिचित triple angle brackets सीधे device code के अंदर काम करते हैं।

__global__ void child(int* d);
__global__ void parent(int* d) {
    child<<<1, 32>>>(d);
}

भविष्य की गणना runtime पर कीजिए

एक parent thread runtime पर तय करता है कि कितना काम आवश्यक है और फिर उसके लिए ठीक उतने आकार का child kernel शुरू करता है।

child<<<blocks, threads>>>(buf);

अनियमित आकारों के लिए बना

जब काम data पर निर्भर हो, तब यह विशेष रूप से उपयोगी है: अधिक काम मिलने पर कोई thread तुरंत और threads लॉन्च कर सकता है।

Device-side recursion

कोई kernel स्वयं को भी लॉन्च कर सकता है, जिससे GPU पर divide-and-conquer समस्याओं के लिए वास्तविक recursion संभव हो जाती है।

__global__ void solve(int lo, int hi) {
    if (hi - lo > 1) solve<<<1, 2>>>(lo, mid);
}

Parent और child streams

हर child launch किसी stream में जुड़ता है। Default रूप से children parent thread block की stream का उपयोग करते हैं, लेकिन आप अपनी stream का नाम दे सकते हैं।

child<<<g, b, 0, myStream>>>(d);

Kernel के भीतर synchronization

एक parent device code से cudaDeviceSynchronize कॉल करके अपने children के लिए प्रतीक्षा कर सकता है और फिर उनके परिणाम पढ़ सकता है।

child<<<1, 64>>>(d);
cudaDeviceSynchronize();

Child के पूरा होने की implicit गारंटी

Manual wait के बिना भी, लॉन्च किए गए सभी children के पूरा होने की गारंटी होती है, इससे पहले कि स्वयं parent kernel वापस लौटे।

वह memory जिसे दोनों देख सकते हैं

Parent और child global memory साझा करते हैं, इसलिए नीचे पास किए गए pointers valid रहते हैं। लेकिन local और shared data launch के पार नहीं जाते।

Device launch के लिए compile कीजिए

आपको relocatable device code के साथ compile करना होगा और device runtime को link करना होगा, तभी nested launches वास्तव में काम करेंगे।

nvcc -rdc=true -lcudadevrt prog.cu

Launch की एक कठिन सीमा

Nesting की सीमा होती है: एक अधिकतम launch depth निर्धारित है, और बहुत गहराई तक जाने पर नए kernels के बजाय error लौटता है।

त्वरित जाँच

Dynamically launched kernel कहाँ से शुरू होता है?

पुनरावलोकन: Device launches

एक kernel उसी triple-bracket syntax से अन्य kernels, यहाँ तक कि स्वयं को भी, लॉन्च कर सकता है। Global memory साझा कीजिए और -rdc=true के साथ compile कीजिए। बहुत अच्छा! 🎉

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

एआई शिक्षक के साथ 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. डायनेमिक पैरेललिज़्म कब लाभ देता है
  3. कार्य को ग्राफ में कैप्चर करना
  4. ओवरहेड घटाने के लिए ग्राफ को फिर चलाना
← CUDA Academy पर वापस जाएँ