带有 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 盘上同时安装了 CUDAVS 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

VS2015 及VS2013 CUDA8.0 配置

NV12格式转RGB的CUDA实现

使用cmake为vs2013配置cuda项目出现“invalid device function”错误

VS2013+CUDA7.0安装