Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在CUDA C for VS2010中编译Compute Capability 2.x_C_Cuda_Gpu - Fatal编程技术网

在CUDA C for VS2010中编译Compute Capability 2.x

在CUDA C for VS2010中编译Compute Capability 2.x,c,cuda,gpu,C,Cuda,Gpu,我是这样说的: 但它仍然无法编译 error : calling a host function("_malloc_dbg") from a __device__/__global__ function("kernel") is not allowed error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA \v4.1\bin\nvcc.exe" -gencode=arch=comp

我是这样说的:

但它仍然无法编译

error : calling a host function("_malloc_dbg") from a __device__/__global__  
function("kernel") is not allowed

error MSB3721: The command ""C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA  
\v4.1\bin\nvcc.exe" -gencode=arch=compute_20,code=\"sm_20,compute_20\"  
--use-local-env --cl-version 2010 -ccbin "c:\Program Files (x86)\Microsoft Visual  
Studio 10.0\VC\bin\x86_amd64" -I"..\..\..\Source\Include" -G0  --keep-dir   
"x64\Debug" -maxrregcount=0  --machine 64 --compile  -g  -Xcompiler "/EHsc /nologo 
/Od /Zi  /MDd " -o "x64\Debug\move.cu.obj"  "C:\Source\scene\move.cu"" exited with  
code 2. C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA  
4.1.targets     361 10  
正如建议的那样,我添加了
#if uu CUDA_ARCH_uu>=200
,它返回false

还有什么问题?我用的是GTX480


编辑:我也有这个警告:
#警告C4005:'u malloca':宏重新定义

我知道您解决了主要问题,但还有一个问题:

我添加了
#if uuu CUDA_ARCH_uuu>=200
,它返回false

CUDA代码至少编译两次。在一个编译过程中生成CPU代码,在另一个编译过程中生成设备代码<代码>\uuuu CUDA\u ARCH\uuuuu仅为设备代码生成而定义。 可以进行更多的编译过程,并为几种体系结构生成GPU代码。CPU的代码不会改变,但GPU会改变


我怀疑您在生成CPU代码时正在测试
#if uuu CUDA_ARCH_uuu>=200

在不调试设置的情况下尝试编译,看看是否有任何区别。@Talonmes,我仍然有错误。警告(请参见编辑)可能是一个问题源吗?该错误消息中有一个可疑的v4.0和v4.1混合版本。您确定没有安装多个版本的CUDA工具包吗?(很抱歉,我不使用VS,因此我无法真正帮助处理它的内部结构)。这两个错误都是由宏重新定义引起的,一旦我删除了导致警告的头文件,程序就完全遵守并运行了
#如果uuu CUDA_ARCH_uuu>=200
仍返回false。不知道为什么,但现在没关系了。是的,4.0和4.1的混合非常可疑,但我肯定只安装了4.1。谢谢你的帮助。