【问题标题】:Using nvcc with CUDA 6 and VS 2012 Express将 nvcc 与 CUDA 6 和 VS 2012 Express 一起使用
【发布时间】:2014-07-27 23:01:45
【问题描述】:

我正在尝试在 Windows 7 SP 1 上开始使用 CUDA 和 64 位编译器。最终,我希望编译 mex 文件以用于 Matlab (R2014a)。我有一台较旧的计算机,我已成功配置为使用较旧版本的 CUDA 和 VS C++ Express 执行此操作,但我似乎无法让它与较新的软件包一起使用。

我已经安装了 CUDA 6.0 和 Visual Studio C++ 2012 Express,网络阅读表明它们应该一起工作。我不确定我是否还需要 Microsoft SDK,它曾经是获得 64 位编译器所必需的;这些天似乎这些都包含在VS中。

我在“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\x86_amd64”中创建了一个 vcvars64.bat。我还将整个目录的副本重命名为“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64”。这些步骤过去对于旧版本是必需的 - 不确定它们是否仍然是。

但是,当我尝试编译时,出现以下错误:

nvcc:警告:“compute_10”和“sm_10”架构是 已弃用,可能会在未来的版本中删除。 nvcc:致命的 错误:nvcc 找不到受支持的 Microsoft Visual 版本 工作室。仅支持 2008、2010 和 2012 版本 发现编译错误:正在终止。

我编译如下:

nvcc --cuda myfile.cu --output-file myfile.cpp

在此之后,我将在 Matlab 中调用 mex 来构建 mex 文件。但我无法超越这第一步。有谁知道 nvcc 如何确定在哪里寻找编译器,以及如何让它识别受支持的编译器?请注意,“C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64\cl.exe”在系统路径上。

【问题讨论】:

  • 即使在正确安装了 VS 和 CUDA 的情况下,从 Windows 中的命令行编译也可能需要大量额外的系统路径设置以及 nvcc 的额外命令行开关。您的命令行还不够完整,您可能已经修改了一些 Windows 路径定义。你知道有 nvcc 的文档以及命令行帮助吗?
  • 谢谢罗伯特——我展示的那一行曾经在我的旧安装中工作,尽管它可能涉及到我现在已经忘记的各种路径定义。我可以查看 nvcc 的文档。但这有可能解决我遇到的具体问题吗?
  • 关于compute_10 和sm_10 的nvcc 警告可以通过在编译时指定较新的架构来消除,例如-arch=sm_20。根据我的经验,关于 nvcc 的错误找不到受支持的 MS Visual Studio 版本,需要正确使用 -ccbin 切换到 nvcc 以及我通常通过 START 输入的一组适当的系统 PATH 定义...(右键单击on)计算机...属性...高级系统设置...环境变量,然后创建或修改 PATH 环境变量以包含 VS 编译器和库的必要路径。

标签: c++ matlab visual-studio-2012 cuda nvcc


【解决方案1】:

尝试从命令行运行 vcvars64.bat 和 matlab。这使得 Matlab 和 nvcc 知道正确的 VS 环境变量。

【讨论】:

  • 我自己不直接运行 vcvars64.bat ——如果我没记错的话,我认为它会在编译过程中的某个时间被调用。我一直在通过 Matlab 的系统命令调用 nvcc。您是否建议在调用 nvcc 之前立即运行 vcvars64.bat 会有所帮助?你知道我关于 nvcc 如何决定是否安装受支持的编译器的问题的答案吗?
  • 我认识到您在 Matlab 缺乏对 VS 2012 express 支持的情况下描述的错误。 mex -setup 就是不认识 VS。我在没有 mex 工具的情况下使用手动编译:nvcc 生成目标代码,link 生成一个重命名为 mexw32/mexw64 的 dll。为此,我编写了一个批处理文件来运行 vcvars32/vcvars64,然后使用 matlab 来设置环境变量。如果没有在 matlab 之前明确运行 vcvars32/64,我会得到与您描述的相同的错误。我希望有一种涉及较少的方法,但这对我来说就像一种魅力。
猜你喜欢
  • 2015-12-18
  • 2014-04-26
  • 1970-01-01
  • 2014-02-03
  • 2012-03-15
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
相关资源
最近更新 更多