我正在尝试在VisualStudio 2010中创建一个Cuda项目。我创建了一个简单的测试.cu文件,它接受一个数组并将其所有元素加1并将结果发送回主机。
我已将cudart.lib文件添加到链接器。
在.cu代码中,我添加了#include cuda_runtime.h
标题。
但是当我尝试编译它时,它会给出两个错误。
错误C2065:'threadIdx':未声明的标识符
错误C2059:语法错误:'<'
安装Nvidia Nsight Visual Studio版本并将.cu文件的项目类型设置为CUDA C / C ++之后,它开始提供两个额外的错误:
错误D8003:缺少源文件名
错误MSB3721:命令“”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 2010 -ccbin“C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ bin”-I“C:\ ProgramData \ NVIDIA Corporation \ NVIDIA GPU Computing SDK 4.2 \ C \ common \ inc“-I”C:\ ProgramData \ NVIDIA Corporation \ NVIDIA GPU Computing SDK 4.2 \ shared \ 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”“\ ucigrad .local \ Users \ AGill \ My Documents \ Visual Studio 2010 \ Projects \ cudatest \ cudatest \ test.cu“”退出代码2。
请帮我解决一下。我认为VS2010中的nvcc编译器可能存在一些问题,但我无法弄明白。
答案 0 :(得分:4)
如果您对IDE错误(仍然让您的代码无错误地工作)感到恼火,就像我一样,尝试在SDK的include文件夹中进行纯文本搜索(貌似)未定义的符号,你会发现正确的标题立即包含在内。 例如,“threadIdx”驻留在“device_launch_parameters.h”头文件中。
答案 1 :(得分:1)
您最常得到的错误表明您没有使用NVCC编译CUDA来源。如果在安装工具包时安装了Visual Studio集成,请确保选择适当的项类型(CUDA C / C ++)。或者确保您已为源设置了适当的构建规则。
答案 2 :(得分:0)
有两种类型的错误 - 构建错误和IDE错误。检查构建是否成功(您可以忽略IDE错误)
尝试#include“cuda.h”(或使用尖括号)
重建有时可以解决问题