gpt4 book ai didi

在 VS2010 的 CUDA C 中编译计算能力 2.x

转载 作者:行者123 更新时间:2023-11-30 18:02:37 24 4
gpt4 key购买 nike

我正在关注这个:Dynamically allocating memory inside __device/global__ CUDA kernel

但是仍然无法编译。

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 __CUDA_ARCH__ >= 200 并且它返回 false。

还有什么问题?我在 GTX480 上运行。

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

最佳答案

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

I added #if __CUDA_ARCH__ >= 200 and it returns false.

CUDA 代码至少编译两次。在一个编译过程中生成 CPU 代码,在另一过程中生成设备代码。 __CUDA_ARCH__ 仅针对设备代码生成而定义。可以进行更多的编译并为多种架构生成 GPU 代码。 CPU 的代码不会改变,但 GPU 会改变。

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

关于在 VS2010 的 CUDA C 中编译计算能力 2.x,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9056183/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com