Cuda:错误C2065:“threadIdx”:未声明的标识符

时间:2012-06-05 18:32:15

标签: visual-studio-2010 cuda

我正在尝试在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编译器可能存在一些问题,但我无法弄明白。

3 个答案:

答案 0 :(得分:4)

如果您对IDE错误(仍然让您的代码无错误地工作)感到恼火,就像我一样,尝试在SDK的include文件夹中进行纯文本搜索(貌似)未定义的符号,你会发现正确的标题立即包含在内。 例如,“threadIdx”驻留在“device_launch_parameters.h”头文件中。

答案 1 :(得分:1)

您最常得到的错误表明您没有使用NVCC编译CUDA来源。如果在安装工具包时安装了Visual Studio集成,请确保选择适当的项类型(CUDA C / C ++)。或者确保您已为源设置了适当的构建规则。

答案 2 :(得分:0)

  1. 有两种类型的错误 - 构建错误和IDE错误。检查构建是否成功(您可以忽略IDE错误)

  2. 尝试#include“cuda.h”(或使用尖括号)

  3. 重建有时可以解决问题