如何在Visual Studio 2010中编译CUDA应用程序?

4

如何在Visual Studio 2010中编译CUDA应用程序?

以下是我的步骤: 1. 创建一个没有预编译头文件的空C++项目 2. 添加main.cpp文件

int main()
{
 return 0;
}
  1. 添加 kernels.cu 文件

    我参考了示例项目 MatrixMul 并逐步复制了其设置。现在可以编译它了。

#include "cuda.h"

__global__ void VecAdd(float* A, float* B, float* C)
{
 int i = threadId.x;
 C[i] = A[i] + B[i];
}
  1. 右键单击项目->生成自定义->勾选CUDA 3.2
  2. kernels.cu -> 属性 -> 使用CUDA C/C++编译
  3. 尝试编译:出现错误:

错误37: 此版本的CUDA工具包不支持v100编译器。 请验证项目属性的常规节点下的平台工具集属性设置为v90。C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 3.1.targets 157 4 dfdfs

  1. 将平台工具集更改为v90
  2. 尝试编译:出现错误:

错误38:错误MSB3721:命令““C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.1\bin\nvcc.exe” -gencode=arch=compute_10,code=\"sm_10,compute_10\" --use-local-env --cl-version 2008 -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\bin" -I"C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v3.1\include" -G0 --keep-dir "Debug\" -maxrregcount=32 --machine 32 --compile -D_NEXUS_DEBUG -g -Xcompiler "/EHsc /nologo /Od /Zi /MDd " -o "Debug\kernels.obj" "E:\Projects!Probing\dfdfs\kernels.cu"" 已退出,代码为2。C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations\CUDA 3.1.targets 272 4 dfdfs

错误37:标识符“threadId”未定义 E:\Projects!Probing\dfdfs\kernels.cu 5 1 dfdfs

请帮我解决这个问题。

谢谢,Ilya


请查看此链接。我已经跟随此链接并成功运行,建议您也试试。链接为:http://www.ademiller.com/blogs/tech/2011/05/visual-studio-2010-and-cuda-easier-with-rc2/。祝好! - user1230876
4个回答

5

是的,我做到了,并且它正在运行。

  1. 创建C++项目

  2. 项目(右键)->构建自定义检查“Cuda 3.2编译器”*

  3. 将 cudart.lib 添加到属性 ->链接器 ->输入 ->其他依赖项中

  4. 添加 main.cu -> 属性 项目类型 = CUDA C/C++*

  5. 项目 -> 属性 ->配置属性 ->常规 -> v90工具集**

*) 安装Nvidia Parallel Nsight后将出现。请注意,您需要特殊的驱动程序,有关NSight主页的更多信息。

**) 您需要安装Visual C++ 2008 Express。

无论如何,示例项目仍应在我的Nvidia论坛帖子中可用。我在那里抱怨的问题只是过时的驱动程序。


1

我在nVidia的cuda论坛上找到了这篇帖子。其中一位版主说(11月09日:我们还不支持VS2010)。

也许现在情况已经改变了,但是你的错误信息表明你正在使用的CUDA工具包版本不支持V100编译器,这意味着你可能需要升级你的CUDA工具包。

如果你已经有了最新版本,请检查一下CUDA工具包是否已经支持VS2010。

v90是指随VS2008提供的编译器,因此我认为VS2010是编译器v100。

也许你有MSDN订阅,可以退回到VS2008。

这篇SO帖子似乎也表明CUDA还不支持VS2010编译器(但是!)


我并没有说它不被支持,我只是发现了一些旧帖子说它还没有被支持。 - user206705
2
他们是关于RC的。我已经解决了问题(请看我的回答)。 - Ilya Smagin
很棒的东西。你报告的错误信息提示检查最新版本。 - user206705
我所做的任何CUDA相关工作都是在VS2008上完成的,我还没有机会尝试使用VS2010... - user206705

0

Visual Studio 2010 绝对支持 -- 确保使用最近发布的 nSight 1.5(而不是 beta 版本)。我还没有更新我提出的问题,但是 @portland,你已经按照所有正确的步骤进行了操作。你只是在你的内核中打错了一个字。

你引用了 threadId.x 而不是 threadIdx.x -- 注意 x 的位置。


我已经修复了这个问题,但仍然出现退出代码2的情况。无论如何,我参考了示例项目MAtrixMul,并逐步复制了它的设置。它成功了! - Ilya Smagin
这个路径:"E:\Projects!Probing\dfdfs\kernels.cu"中有一个感叹号,看起来很可疑。 - M. Tibbits
@M. Tibbits,谢谢,但这并不重要。我已经找出了问题所在。我现在只是无法关闭讨论。 - Ilya Smagin

0

我参考了样例项目MAtrixMul,并逐步复制了它的设置。现在可以编译,但是没有进行任何计算。问题在这里详细描述

您可以从nvidia论坛上我的帖子中查看我的项目(2.7 kb)及其所需的所有内容。

谢谢,Ilya


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接