【发布时间】: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