2013-10-10 9 views
7

विफल रहता है मैं सीयूडीए 5.5 और एनवीडीआईए जेफफोर्स जीटीएक्स 780 का उपयोग करके गतिशील समांतरता प्रोग्रामिंग कर रहा हूं जिसका गणना क्षमता 3.5 है। मैं कर्नेल फ़ंक्शन को कर्नेल फ़ंक्शन के अंदर बुला रहा हूं लेकिन यह मुझे एक त्रुटि दे रहा है:डायनामिक समांतरता युक्त संकलन कोड

error : calling a __global__ function("kernel_6") from a __global__ function("kernel_5") is only allowed on the compute_35 architecture or above

मैं क्या गलत कर रहा हूं?

उत्तर

3

आपको अपने डिवाइस के लिए एनवीसीसी सीसी 3.5 कोड उत्पन्न करने की आवश्यकता है। यह विकल्प nvcc कमांड लाइन में जोड़कर किया जा सकता है।

-gencode arch=compute_35,code=sm_35 

आप अधिक विस्तार के लिए गतिशील समांतरता पर CUDA नमूने पा सकते हैं। उनमें सभी समर्थित ओएस के लिए कमांड लाइन विकल्प और प्रोजेक्ट सेटिंग्स दोनों शामिल हैं।

http://docs.nvidia.com/cuda/cuda-samples/index.html#simple-quicksort--cuda-dynamic-parallelism-

+5

गतिशील समानांतरवाद उपयोग करने के लिए' -rdc' भी जरूरी है आगे की त्रुटियों को रोकने के लिए cudadevrt लाइब्रेरी के खिलाफ लिंक करना न भूलें। –

11

आप की तरह इस

nvcc -arch=sm_35 -rdc=true simple1.cu -o simple1 -lcudadevrt 

या

आप 2 फ़ाइलें हैं, तो simple1.cu और test.c तो आप नीचे के रूप में कुछ कर सकते हैं कुछ कर सकते हैं। इसे पृथक संकलन कहा जाता है।

nvcc -arch=sm_35 -dc simple1.cu 
nvcc -arch=sm_35 -dlink simple1.o -o link.o -lcudadevrt 
g++ -c test.c 
g++ link.o simple1.o test.o -o simple -L/usr/local/cuda/lib64/ -lcudart 

एक ही दृश्य स्टूडियो 2010 से cuda programming guide

+0

उत्तर के लिए हाय धन्यवाद मैं यह कर रहा हूं लेकिन यह त्रुटि प्राप्त कर रहा हूं घातक त्रुटि: nvcc '--relocatable-device-code = true (-rdc = true)', '--device-c (-dc)' का समर्थन करता है, और '--device-link (-dlink)' केवल sm_20 या उच्चतर को लक्षित करते समय – user2865500

+0

क्या आप कृपया संलग्न कर सकते हैं कि आप वास्तव में क्या कर रहे हैं? सरल कार्यक्रम और आप जिस आदेश को चला रहे हैं? क्योंकि मैंने अभी एक सरल कार्यक्रम [http://pastebin.com/3Z2aGa4F) –

+0

के लिए उपरोक्त आदेश की कोशिश की है और कृपया उत्तर के रूप में अपनी टिप्पणियां न जोड़ें .. –

5

में समझाया गया है: `--relocatable-डिवाइस-कोड = TRUE` या कम

1) View -> Property Pages 
2) Configuration Properties -> CUDA C/C++ -> Common -> Generate Relocatable Device Code -> Yes (-rdc=true) 
3) Configuration Properties -> CUDA C/C++ -> Device -> Code Generation -> compute_35,sm_35 
4) Configuration Properties -> Linker -> Input -> Additional Dependencies -> cudadevrt.lib 
+0

मैं आपकी मदद के लिए बहुत आभारी हूं .. मैंने यह किया है अब मुझे यह त्रुटि मिल रही है। कृपया डोनोट परेशान न करें ... nvcc: घातक त्रुटि: nvcc '--relocatable-device-code = true (-rdc = सच) ',' --device-c (-dc) ', और' --device-link (-dlink) 'केवल sm_20 या उच्चतर – user2865500

+0

को लक्षित करते समय सुनिश्चित करें कि आपने सही ढंग से चरण 3 पूरा किया है। क्या आप सफलतापूर्वक संकलित करने में सक्षम हैं cdpLUDecomposition CUDA उदाहरण? यह LU अपघटन की गणना करने के लिए गतिशील समांतरता का उपयोग करता है। – JackOLantern

+0

हां महोदय। मैं cdpLUDeomposition CUDA उदाहरण का निर्माण। यह कोई त्रुटि नहीं देता है। लेकिन मुझे यह मूल 'कोड 0 (0x0) से बाहर निकला है। मैंने सभी चरणों को सफलतापूर्वक किया है। – user2865500

संबंधित मुद्दे