带有 VS 2013 的 cuda v6.5 nvcc 失败,神秘的消息
Posted
技术标签:
【中文标题】带有 VS 2013 的 cuda v6.5 nvcc 失败,神秘的消息【英文标题】:cuda v6.5 nvcc with VS 2013 failed, mysterious msg 【发布时间】:2014-12-23 17:31:19 【问题描述】:刚刚升级到 CUDA v6.5 并在 Win 7 下安装了 Visual Studio 2013 Community。用于在 CUDA 6.0 和 VS 2008 中编译的一些代码现在失败并显示此神秘消息,
“文件名、目录名或卷标语法不正确。”
它甚至不是编译器错误消息。所以想知道怎么了?
编译命令是
nvcc -gencode arch=compute_30,code=sm_30 tt-log-limit.cu -lcublas -lcurand -o lgl
我的配置与通常的配置有点不同,我在 F 盘上同时安装了 CUDA
和 VS 2013 Community
,这可以在我的 PATH
中看到,
PATH=F:\Programs\NVIDIA GPU Computing Toolkit\CUDA\v6.5\bin;F:\Programs\NVIDIA GPU Computing Toolkit\CUDA\v6.5\libnvvp;;C:\Program Files\Haskell\bin;F:\Programs\Haskell\2014.2.0.0\lib\extralibs\bin;F:\Programs\Haskell\2014.2.0.0\bin;C:\Rtools\gcc-4.6.3\bin;C:\Rtools\bin;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Anaconda;C:\Anaconda\Scripts;C:\Program Files\MATLAB\R2011b\runtime\win64;C:\Program Files\MATLAB\R2011b\bin;F:\Chome;C:\Program Files (x86)\Java\jre7\bin;C:\ProgramData\Oracle\Java\javapath;F:\Programs\Haskell\2014.2.0.0\mingw\bin;C:\libgsl-1.8\lib;C:\libgsl-1.8\include;C:\libgsl-1.8\bin;C:\Program Files\Microsoft Windows Performance Toolkit\;C:\Program Files (x86)\Windows Kits\8.1\Windows Performance Toolkit\;C:\Program Files (x86)\Microsoft SDKs\TypeScript\1.0\;C:\Program Files\Microsoft SQL Server\120\Tools\Binn\;F:\Programs\nodejs\;F:\Programs\MSVS13\VC\bin\amd64;F:\Programs\MSVS13\VC\bin;C:\MikTex\miktex\bin\;C:\Users\rspace\AppData\Local\Programs\Git\cmd;C:\Users\rspace\AppData\Roaming\npm
nvcc和cl的版本如下:
nvcc:NVIDIA (R) Cuda 编译器驱动程序 版权所有 (c) 2005-2014 NVIDIA Corporation 建立于 Fri_Jul_25_06:28:08_CDT_2014 Cuda 编译工具,6.5 版,V6.5.13
Microsoft (R) C/C++ 优化编译器版本 18.00.31101 for x64 版权所有 (C) 微软公司。保留所有权利。
【问题讨论】:
从描述中不清楚是什么应用程序在什么时候发出这个错误,所以这可能与 CUDA 根本没有任何关系。此错误消息通常意味着路径规范中有多余的空格或不允许的字符。 可能是因为这里多余的第二个分号:F:\Programs\NVIDIA GPU Computing Toolkit\CUDA\v6.5\libnvvp;;
刚刚检查过,双 ;;不是罪魁祸首。
问题中提供的信息太少,无法诊断可能发生的情况,甚至不清楚这是否与 CUDA 相关(“甚至不是编译器错误消息”)。在没有可以重现该行为的 MCVE 的情况下,我将投票关闭。
我不明白为什么这个问题是-3。我有确切的问题(使用 Cuda v9.1 和 MSVS2017(15.4),并且会描述它相同。编译在 VS 下工作,但是在运行(正确的 vcvars)命令行时,我得到“文件名,目录名,或卷标语法不正确。”没有任何解释。
@JHBonarius *** 充满了纳粹分子。我一直遇到这种反对票。如果您不同意,请投票。
【参考方案1】:
经过几轮卸载和重新启动后,我找到了解决方法。正如在其他地方观察到的那样,CUDA 有一些硬编码的路径,因此 Visual Studio 的位置很重要。
我完全删除了 CUDA v6.5 和 VS 2013,然后重新安装了它们。这一次我让他们把他们的默认位置放在 C 盘上。所以,CUDA 安装在
C:\Program Files\NVIDIA GPU 计算工具包\CUDA\v6.5
VS 在
C:\Program Files (x86)\Microsoft Visual Studio 12.0
这解决了问题。我的 .cu 代码编译没有问题。
【讨论】:
所以对于 CUDA v9.1.85 和 MSVS2017/15.4.5,在 IDE 下似乎可以协同工作,这个修复不起作用。至少:我将它们安装在它们的默认目录中。 @JHBonarius 你做了什么来修复它?【参考方案2】:我在 Windows 10 中使用 cuda 9.1 时遇到了同样的问题。
当我打开快速环境编辑器时,我看到 9.1 的 cuda 路径以红色标记为无效。 (虽然当我复制粘贴有问题的路径时,它打开到正确的文件夹)。
我最终从 cuda 9.0 的(有效)路径复制粘贴,将 0 更改为 1。它有效。也许 Cuda 使用非法空白字符或其他东西创建了路径。
【讨论】:
以上是关于带有 VS 2013 的 cuda v6.5 nvcc 失败,神秘的消息的主要内容,如果未能解决你的问题,请参考以下文章
VS2013/Cuda7.0 中的 CUFFT 比 VS2010/Cuda4.2 慢 1000 倍
既找不到 .cubin 也找不到 .ptx 文件编译 CUDA