का आउटपुट आउटपुट आउटपुट मैं हाथ से लिखित कर्नेल के लिए अपने प्रत्येक CUDA थ्रेड के लिए संसाधन उपयोग को समझने की कोशिश कर रहा हूं।--ptxas-options = -v
मैं nvcc -arch=sm_20 -ptxas-options=-v
के साथ एक kernel.o
फाइल करने के लिए मेरी kernel.cu
फ़ाइल संकलित और मैं निम्नलिखित उत्पादन
ptxas info : Compiling entry function '_Z12searchkernel6octreePidiPdS1_S1_' for 'sm_20'
ptxas info : Function properties for _Z12searchkernel6octreePidiPdS1_S1_
72 bytes stack frame, 0 bytes spill stores, 0 bytes spill loads
ptxas info : Used 46 registers, 176 bytes cmem[0], 16 bytes cmem[14]
ऊपर उत्पादन को देखते हुए मिल गया, यह कहना सही है कि
- प्रत्येक CUDA धागा 46 रजिस्टरों का उपयोग कर रहा है?
- स्थानीय मेमोरी में कोई पंजीकरण नहीं है?
मुझे आउटपुट को समझने के साथ कुछ समस्याएं भी हैं।
मेरे गिरी
__device__
कार्यों की एक पूरी बहुत कुछ बुला रहा है।__global__
और__device__
फ़ंक्शंस के स्टैक फ्रेम के लिए मेमोरी के 7212 बाइट्स योग-कुल है?0 byte spill stores
और0 bytes spill loads
बीच क्या अंतर है क्यों
cmem
के लिए जानकारी विभिन्न आंकड़ों के साथ दो बार दोहराए गए (जो मैं यह सोचते हैं रहा हूँ निरंतर स्मृति है) है? कर्नेल के भीतर मैं किसी निरंतर मेमोरी का उपयोग नहीं कर रहा हूं। क्या इसका मतलब यह है कि संकलक हुड के तहत, कुछ स्थिर स्मृति का उपयोग करने के लिए GPU को बताने जा रहा है?
'प्रयुक्त 46 रजिस्टरों' इंगित करता है संकलक संकलित कर्नेल के लिए धागा प्रति 46 रजिस्टरों आरक्षित किया गया है और अन्य रजिस्टरों गिरा रहे हैं। आप कर्नेल के पीटीएक्स में इस्तेमाल किए गए रजिस्टर की कुल संख्या से इस नंबर (46) को घटाकर स्पिल्ल्ड रजिस्टरों की संख्या पा सकते हैं। – ahmad
@ अहमद: आप पहली वाक्य सही है, लेकिन दूसरा नहीं है। एक कर्नेल प्रति थ्रेड अधिकतम स्वीकार्य रजिस्टरों से कम उपयोग कर सकता है और स्थानीय मेमोरी में कोई स्पिल नहीं है। – talonmies
talonmies उत्तर पर विस्तृत करने के लिए, पीटीएक्स अनंत रजिस्टरों के साथ एक उच्च स्तरीय अमूर्त है। ऐसा इसलिए है क्योंकि इसे जीपीयू की कई पीढ़ियों के लिए संकलित किया जा सकता है और रजिस्टरों की संख्या अलग हो सकती है। यह तभी होता है जब आप मशीन विशिष्ट कोड पर संकलित करते हैं जिसे आप वास्तव में रजिस्टर उपयोग को देख सकते हैं। किसी भी मामले में, ptxas (मशीन-विशिष्ट कोड में पीटीएक्स संकलित) आपको स्पिल की मात्रा बताता है। – Tom