मैं एक क्यूडा प्रोग्राम लिख रहा हूं और प्रिंटफ फ़ंक्शन का उपयोग कर कुडा कर्नेल के अंदर कुछ प्रिंट करने की कोशिश कर रहा हूं। लेकिन जब मैं कार्यक्रम तो संकलन कर रहा हूँ मैं एक त्रुटिकूडा कर्नेल से प्रिंटिंग
error : calling a host function("printf") from a __device__/__global__ function("agent_movement_top") is not allowed
error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2008 -ccbin "c:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin" -I"C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.2\C\common\inc" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.2\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug\test.cu.obj" "C:\Users\umdutta\Desktop\SANKHA_ALL_MATERIALS\PROGRAMMING_FOLDER\ABM_MODELLING_2D_3D\TRY_NUM_2\test_proj_test\test_proj\test_proj\test.cu"" exited with code 2.
मैं कार्ड GTX 560 ti उपयोग कर रहा हूँ एक गणना क्षमता 2.0 से अधिक होने और हो रही है जब मैं CUDA कर्नेल मैं भी से मुद्रण के बारे में थोड़ा खोज की है मैंने देखा कि कार्ड का पूरा लाभ लेने के लिए मुझे कंपाइलर को sm_10 से sm_2.0 में बदलने की जरूरत है। इसके अलावा कुछ ने उद्देश्य प्रदान करने के लिए cuPrintf के लिए सुझाव दिया। मैं थोड़ा उलझन में हूं कि मुझे क्या करना चाहिए और मेरे कंसोल स्क्रीन पर प्रिंटआउट प्राप्त करने का सबसे सरल और तेज़ तरीका क्या होना चाहिए। अगर मुझे एनवीसीसी कंपाइलर को 1.0 से 2.0 में बदलना है तो मुझे क्या करना चाहिए? एक और बात मैं उल्लेख करना चाहूंगा कि मैं विंडोज़ 7.0 का उपयोग कर रहा हूं और विजुअल स्टूडियो 2010 में प्रोग्रामिंग कर रहा हूं। आपकी सभी मदद के लिए धन्यवाद।
अगर (1) आप sm_21 लक्ष्य वास्तुकला के लिए संकलन यह काम करना चाहिए और (2) सुनिश्चित करें कि 'stdio.h शामिल करें'। CUDA रनटाइम में कर्नेल के लिए printf के डिवाइस ओवरलोडिंग शामिल हैं, लेकिन सी तंत्रर्ड I/O लाइब्रेरी को इस तंत्र के लिए काम करने के लिए स्पष्ट रूप से शामिल किया जाना चाहिए। – talonmies
HI! मानक i/o हेडर फ़ाइल हमेशा शामिल थी और मेरे कार्ड की गणना क्षमता 2.1 है। तो मुझे लगता है कि इसे एनवीसीसी कंपाइलर की sm_21 सुविधाओं के साथ संकलित किया जाना चाहिए। हालांकि मैंने cuPrintf फ़ंक्शन का उपयोग कर अपने मुद्दों को हल किया। लेकिन मैं अभी भी जानना चाहता हूं कि मैं अपनी डिफ़ॉल्ट एनवीसीसी 1.0 गणना क्षमता को 2.1 गणना क्षमता में कैसे बदल सकता हूं। – duttasankha
@RogerDahl: यह सही है और यह पूरी तरह से अच्छी तरह से काम करता है। क्या आप सिर्फ उत्तर के रूप में पोस्ट कर सकते हैं ताकि मैं इसे भी स्वीकार कर सकूं। आपने मेरा दिन बना दिया। अनेक अनेक धन्यवाद। – duttasankha