Tôi đang viết một chương trình cuda và cố gắng in một cái gì đó bên trong hạt nhân cuda bằng cách sử dụng chức năng printf. Nhưng khi tôi đang biên soạn chương trình sau đó tôi nhận được một lỗiin từ hạt nhân cuda
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.
Tôi đang sử dụng ti thẻ GTX 560 có khả năng tính toán lớn hơn 2,0 và khi tôi đã tìm kiếm một chút thông tin về việc in ấn từ hạt nhân CUDA Tôi cũng thấy rằng tôi cần phải thay đổi trình biên dịch từ sm_10 sang sm_2.0 để tận dụng toàn bộ lợi thế của thẻ. Ngoài ra một số gợi ý cho cuPrintf để phục vụ mục đích. Tôi hơi bối rối những gì tôi nên làm và những gì nên là cách đơn giản nhất và nhanh nhất để có được bản in trên màn hình giao diện điều khiển của tôi. Nếu tôi cần thay đổi trình biên dịch nvcc từ 1.0 đến 2.0 thì tôi nên làm gì? Một điều nữa tôi muốn đề cập đến rằng tôi đang sử dụng Windows 7.0 và lập trình trong studio trực quan 2010. Cảm ơn tất cả sự giúp đỡ của bạn.
nó nên làm việc nếu (1) bạn biên dịch cho sm_21 kiến trúc đích và (2) đảm bảo '#include stdio.h'. Thời gian chạy CUDA bao gồm quá tải thiết bị của printf cho hạt nhân, nhưng thư viện I/O stardard C phải được bao gồm một cách rõ ràng cho cơ chế này hoạt động. – talonmies
HI! Tệp tiêu đề i/o tiêu chuẩn luôn được bao gồm và khả năng tính toán của thẻ của tôi là 2.1. Vì vậy, tôi nghĩ rằng nó nên được biên dịch với các tính năng sm_21 của trình biên dịch nvcc. Tuy nhiên tôi đã giải quyết được vấn đề của mình bằng cách sử dụng hàm cuPrintf. Nhưng tôi vẫn muốn biết làm thế nào tôi có thể thay đổi khả năng tính toán nvcc 1.0 mặc định của tôi thành 2.1 khả năng tính toán. – duttasankha
@RogerDahl: Điều đó hoàn hảo và hoạt động hoàn hảo. Bạn có thể chỉ gửi cho bạn câu trả lời để tôi có thể chấp nhận nó không. Bạn đã làm cho ngày của tôi. Cảm ơn một tấn. – duttasankha