控制台下用nvcc编译出现的问题

在控制台下输入 “nvcc -cuda x.cu -keep"命令后出现
c1xx: fatal error C1083 无法打开源文件 “x.cu” No such file or directory
请问可能是什么原因?

楼主您好。

请确定您当前目录下存在一个叫x.cu的文件。

谢谢。

嗯,我确定它是在C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\src目录下。换做vectorAdd.cu文件(C:\ProgramData\NVIDIA Corporation\NVIDIA GPU Computing SDK 4.0\C\src\vectorAdd)依然会有上述错误提示

您明白什么是“当前目录”么?

您在src目录下,.cu在vectorAdd目录下,您直接nvcc 你的.cu是不行的。

您可以指定相对路径"./path/…"或者您可以使用cd命令切换工作目录。

以及,我还是建议您使用VS吧。在windows上用它挺好。节省您自己的时间,也避免您学习更多概念。

哦,新手入门,什么都不懂:$,因为我需要安装rCUDA,而它又需要nvcc编译器编译……还恳请版主不辞辛劳给我解释一下吧!多谢啦!!!!

好吧。

任何进程都存在一个“当前工作目录的概念”。当您给出一个文件,却没有给出它的路径(无论是绝对的还是相对的),这将会从当前目录寻找。此时如果找不到则会提示你“找不到文件”。

而此时,您可以使用绝对路径,例如: c:/dog/cat/wolf/girl.cu
或者使用相对路径:
例如您的当前目录是cat, 您可以使用wolf/girl.cu表明此文件。而无需绝对路径。

对于您来说,
如果有个vectorAdd目录,里面有个vectorAdd.cu, 而您是在它的上一级目录,您可以:
nvcc … vectorAdd/vectorAdd.cu这样指定。

(以及,在windows上,您需要使用开始菜单里面的Visual Studio Command Prompt而不是普通的cmd窗口,这将会自动设置VC相关环境变量)
(以及,在windows上,您可以使用反斜杠代替斜杠,均可)

你的帖子是空白的。请修正。

[attach]3130[/attach]“nvcc -cuda C:\program files\……\vectorAdd.cu -keep"后显示access denied
您好。经过您的提示之后,我在vs2008命令提示符上输入如图所示的命令,可是还是不正确,麻烦您能再指点指点吗?

后来找了nvcc的手册看了一下。按照里面的提示输入“nvcc -cuda vectorAdd.cu --compiler-bindir=C:\……\cl.exe -keep -dryrun”
后显示在cl.exe路径里找不到vsvars32.bat的文件。我将该文件拷贝到cl.exe路径下,运行了一下,再重新输入“nvcc -cuda vectorAdd.cu --compiler-bindir=C:\……\cl.exe -keep -dryrun”到vs2008命令提示里面,结果还是一样的:找不到vsvars32.bat
请问我哪里输错了吗?还是设置也有问题?

楼主您好,
您已经处于VS command prompt下,
您无需单独指定–compiler-bin-dir参数了,
您也需要使用vcvars32.bat了。

我在上面楼层给出的建议已经是充分考虑过的,请不要乱猜乱想。

你的问题是你的当前用户无法写入你的Program Files(x86)文件夹导致的。
你可以这样解决:
在Visual Studio Command Prompt点击右键,选择“run as administrator",然后点击“同意”。

然后重新进行上述过程即可。

问题已经解决,谢谢您!

您客气了。服务您是我的荣幸。