सीयूडीए में हम मेजबान पर malloc के माध्यम से आवंटित डिफ़ॉल्ट मेमोरी की तुलना में मेजबान से GPU तक डेटा को अधिक कुशलतापूर्वक कॉपी करने के लिए पिन की गई मेमोरी का उपयोग कर सकते हैं। हालांकि दो प्रकार की पिन की यादें डिफ़ॉल्ट पिन की गई मेमोरी और शून्य-कॉपी पिन की गई स्मृति हैं।डिफ़ॉल्ट पिन किए गए मेमोरी बनाम ज़ीरो-कॉपी मेमोरी
डिफ़ॉल्ट होस्ट से GPU के लिए डेटा पिन की गई स्मृति प्रतियां दोगुनी गति से सामान्य स्थानान्तरण के रूप में है, इसलिए निश्चित रूप से एक फायदा (बशर्ते हम पेज लॉक करने के लिए पर्याप्त मेजबान स्मृति)
पिन किए गए के विभिन्न संस्करण में है स्मृति, यानी शून्य प्रतिलिपि स्मृति, हमें मेजबान से डेटा को GPU के DRAM पर पूरी तरह कॉपी करने की आवश्यकता नहीं है। कर्नेल सीधे होस्ट मेमोरी से डेटा पढ़ते हैं।
मेरा प्रश्न है: इनमें से कौन सा पिन-मेमोरी प्रकार बेहतर प्रोग्रामिंग अभ्यास है।
हां बिल्कुल। मुझे 'उदाहरण के द्वारा CUDA' पुस्तक में लगभग वही विवरण मिला। वे दावा करते हैं कि मैप किए गए मेमोरी सबसे अच्छे हैं जब ए) आपके कर्नल डेटा को एक बार पढ़ते और लिखते हैं b) जब आपके पास एक एकीकृत ग्राफिक्स होता है, जैसे आईओएन प्लेटफार्म जहां सीपीयू और जीपीयू एक ही मेमोरी साझा करते हैं। – jwdmsd