CUDA v6.5 NVCC 与 VS 2013 失败,神秘味精

cuda v6.5 nvcc with VS 2013 failed, mysterious msg

本文关键字:失败 2013 v6 NVCC VS CUDA      更新时间:2023-10-16

刚刚升级到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:ProgramsNVIDIA GPU Computing ToolkitCUDAv6.5bin;F:ProgramsNVIDIA GPU Computing ToolkitCUDAv6.5libnvvp;;C:Program FilesHaskellbin;F:ProgramsHaskell2014.2.0.0libextralibsbin;F:ProgramsHaskell2014.2.0.0bin;C:Rtoolsgcc-4.6.3bin;C:Rtoolsbin;C:Program Files (x86)NVIDIA CorporationPhysXCommon;C:Windowssystem32;C:Windows;C:WindowsSystem32Wbem;C:WindowsSystem32WindowsPowerShellv1.0;C:Anaconda;C:AnacondaScripts;C:Program FilesMATLABR2011bruntimewin64;C:Program FilesMATLABR2011bbin;F:Chome;C:Program Files (x86)Javajre7bin;C:ProgramDataOracleJavajavapath;F:ProgramsHaskell2014.2.0.0mingwbin;C:libgsl-1.8lib;C:libgsl-1.8include;C:libgsl-1.8bin;C:Program FilesMicrosoft Windows Performance Toolkit;C:Program Files (x86)Windows Kits8.1Windows Performance Toolkit;C:Program Files (x86)Microsoft SDKsTypeScript1.0;C:Program FilesMicrosoft SQL Server120ToolsBinn;F:Programsnodejs;F:ProgramsMSVS13VCbinamd64;F:ProgramsMSVS13VCbin;C:MikTexmiktexbin;C:UsersrspaceAppDataLocalProgramsGitcmd;C:UsersrspaceAppDataRoamingnpm

nvcc 和 cl 的版本如下所示:

nvcc: NVIDIA (R) Cuda 编译器驱动程序版权所有 (c) 2005-2014 英伟达公司构建于 Fri_Jul_25_06:28:08_CDT_2014Cuda 编译工具,版本 6.5,V6.5.13

Microsoft (R) C/C++ 优化编译器版本 18.00.31101 for x64版权所有 (C) Microsoft 公司。 保留所有权利。

经过几轮卸载和重新启动后,我找到了修复程序。正如在其他地方观察到的那样,CUDA有一些硬编码的路径,因此Visual Studio的位置很重要。

我完全删除了 CUDA v6.5 和 VS 2013,然后重新安装了它们。这次我让他们在C盘上占据默认位置。所以,CUDA 安装在

C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v6.5

和 VS 在

C:\Program Files (x86)\Microsoft Visual Studio 12.0

这解决了问题。我的 .cu 代码编译没有故障。

我在 Windows 9.1 中的 cuda 10 中遇到了同样的问题。

当我打开快速环境编辑器时,我看到 9.1 的 cuda 路径被标记为红色无效。(尽管当我复制粘贴有问题的路径时,它打开了正确的文件夹)。

我最终从 cuda 9.0 的(有效)路径复制粘贴,将 0 更改为 1。成功了。也许 Cuda 用非法的空格字符或其他东西创建了路径。