जब हम xptxas का उपयोग करके रजिस्टर के उपयोग की जांच हम कुछ इस तरह देखें:CUDA निरंतर स्मृति बैंकों
ptxas info : Used 63 registers, 244 bytes cmem[0], 51220 bytes cmem[2], 24 bytes cmem[14], 20 bytes cmem[16]
मुझे आश्चर्य है कि वर्तमान में वहाँ किसी भी प्रलेखन कि स्पष्ट रूप से cmem बताते हैं [x] है यदि। निरंतर स्मृति को कई बैंकों में अलग करने का क्या मतलब है, कुल में कितने बैंक हैं, और 0, 2, 14, 16 के अलावा अन्य बैंक क्या हैं?
एक तरफ ध्यान दें, @njuffa (आप के लिए विशेष धन्यवाद) के रूप में पहले से NVIDIA के मंच पर समझाया बैंक 0,2,14,16 है क्या:
प्रयुक्त निरंतर स्मृति लगातार कार्यक्रम 'चर' में विभाजित है (बैंक 1), प्लस कंपाइलर उत्पन्न स्थिरांक (बैंक 14)।
cmem [0]: कर्नेल तर्क
cmem [2]: उपयोगकर्ता परिभाषित निरंतर वस्तुओं
cmem [16]: (जिनमें से कुछ संकलक उत्पन्न स्थिरांक शाब्दिक के अनुरूप हो सकती स्रोत कोड में स्थिरांक)
आपका स्वागत है। मुझे लगता है कि मैंने एनवीआईडीआईए मंचों में अपनी पोस्ट में उल्लेख किया है कि बैंक बैंक असाइनमेंट के रूप में निरंतर बैंकों की संख्या जीपीयू आर्किटेक्चर के बीच भिन्न होती है।दूसरे शब्दों में, ये कार्यान्वयन विस्तार हैं कि प्रोग्रामर को चिंता नहीं करना चाहिए क्योंकि वे प्रोग्रामिंग मॉडल का हिस्सा नहीं हैं। एकाधिक बैंकों का उपयोग करने का एक कारण निरंतर स्मृति के विरोधाभासी उपयोगों की संभावना को कम करना है, विशेष रूप से प्रोग्रामर-दृश्यमान निरंतर बैंक उपयोगकर्ता कोड के लिए उपलब्ध है। – njuffa
@njuffa मुझे लगता है कि (ऊपर दिए गए आपके मंचों के उद्धरण के साथ) को उत्तर में परिवर्तित किया जाना चाहिए। :) – harrism
@njuffa मेरे पास एक फॉलो-अप प्रश्न है। प्रोग्रामिंग गाइड कहता है _ निष्पादन कॉन्फ़िगरेशन के तर्कों का मूल्यांकन वास्तविक फ़ंक्शन तर्कों और फ़ंक्शन तर्कों से पहले किया जाता है, वर्तमान में साझा स्मृति के माध्यम से डिवाइस पर पास किया जाता है ._ मेरी समझ संकलन-समय पर होती है, तर्कों को cmem [0 पर कॉपी किया जाता है ], लेकिन रन-टाइम पर वे एक नए ब्लॉक शुरू होने से पहले cmem से smem करने के लिए कॉपी कर रहे हैं। क्या वो सही है? –