即使在-arch = sm_20中,Cuda Hello World printf也不起作用>> [

问题描述 投票:6回答:3
我不认为我是Cuda的新手,但显然我是。

我最近将自己的cuda设备升级到了1.3至2.1(Geforce GT 630)。我还想对Cuda Toolkit 5.0进行全面升级。

我可以编译通用的cuda内核,但是即使设置了-arch = sm_20,printf也无法正常工作。

代码:

#include <stdio.h> #include <assert.h> #include <cuda.h> #include <cuda_runtime.h> __global__ void test(){ printf("Hi Cuda World"); } int main( int argc, char** argv ) { test<<<1,1>>>(); return 0; }

编译器:

Error 2 error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\bin\nvcc.exe" -gencode=arch=compute_10,code=\"sm_20,compute_10\" --use-local-env --cl-version 2010 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v5.0\include" -G --keep-dir "Debug" -maxrregcount=0 --machine 32 --compile -arch=sm_20 -g -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /Zi /RTC1 /MDd " -o "Debug\main.cu.obj" "d:\userstore\documents\visual studio 2010\Projects\testCuda\testCuda\main.cu"" exited with code 2. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 5.0.targets 592 10 testCuda Error 1 error : calling a __host__ function("printf") from a __global__ function("test") is not allowed d:\userstore\documents\visual studio 2010\Projects\testCuda\testCuda\main.cu 9 1 testCuda

由于这个问题,我要毕生...完成。请从屋顶向下讲我一个答案。

我不认为我是Cuda的新手,但显然我是。我最近将自己的cuda设备升级为一种具有功能的1.3至2.1(Geforce GT 630)。我想将其完全升级到Cuda ...

c++ cuda
3个回答
8
投票
在内核中,printf仅在计算能力2或更高版本的硬件中受支持。因为您的项目被设置为针对计算能力1.0和计算2.1进行构建,所以nvcc会多次编译代码并构建一个多体系结构的胖对象。因为在printf调用不受支持[[针对该体系结构

23
投票

0
投票
© www.soinside.com 2019 - 2024. All rights reserved.