Python 2.7 如何控制nvcc生成的cl.exe命令

Python 2.7 如何控制nvcc生成的cl.exe命令,python-2.7,visual-studio-2013,cuda,nvcc,Python 2.7,Visual Studio 2013,Cuda,Nvcc,我刚刚安装了CUDA 6.5、VS2013社区版和pyCUDA。我已经安装了python 2.7.8。我不熟悉CUDA和VS2013开发,但不熟悉python。我通过构建一些32位和64位的CUDA VS2013示例解决方案,验证了我的CUDA安装,因此到目前为止一切正常 现在我正试图通过运行这个测试程序来验证我的pyCUDA安装 ### from: http://documen.tician.de/pycuda/tutorial.html import pycuda.gpuarray as g

我刚刚安装了CUDA 6.5、VS2013社区版和pyCUDA。我已经安装了python 2.7.8。我不熟悉CUDA和VS2013开发,但不熟悉python。我通过构建一些32位和64位的CUDA VS2013示例解决方案,验证了我的CUDA安装,因此到目前为止一切正常

现在我正试图通过运行这个测试程序来验证我的pyCUDA安装

### from: http://documen.tician.de/pycuda/tutorial.html
import pycuda.gpuarray as gpuarray
import pycuda.driver as cuda
import pycuda.autoinit
import numpy as np

# copy to gpu
a_gpu = gpuarray.to_gpu(np.random.randn(4,4).astype(np.float32))

# double it
a_doubled = (2 * a_gpu).get()
print('a_doubled', a_doubled)
运行时,会产生以下错误:

[snip]
  File "B:\Anaconda2\lib\site-packages\pycuda-2014.1-py2.7-win-amd64.egg\pycuda\compiler.py", line 250, in do_compile
    return compile_plain(source, options, keep, nvcc, cache_dir)
  File "B:\Anaconda2\lib\site-packages\pycuda-2014.1-py2.7-win-amd64.egg\pycuda\compiler.py", line 132, in compile_plain
    stderr=stderr.decode("utf-8", "replace"))
CompileError: nvcc compilation of e:\temp\cb4\tmpadhjeh\kernel.cu failed
[command: nvcc -cubin -keep -cudart shared -arch sm_52 -m64 -Ib:\anaconda2\lib\site-packages\pycuda-2014.1-py2.7-win-amd64.egg\pycuda\cuda -keep kernel.cu]
[stdout:kernel.cu]
[stderr:
'B:\VisualStudioCom2013\VC\bin\amd64"\cl.exe @kernel.cpp1.ii.res > "kernel.cpp1.ii' is not recognized as an internal or external command,
operable program or batch file.]
请注意,cl.exe命令中的多余双引号导致了错误。没有它们,我可以手动运行
B:\VisualStudioCom2013\VC\bin\amd64\cl.exe@kernel.cpp1.ii.res>kernel.cpp1.ii
。它完成得很好,生成了一个有效的kernel.cpp1.ii

有没有办法控制nvcc生成的cl.exe命令?nvcc手册中的任何内容都没有让我感到意外,但有了这些选项,我肯定会错过它


也发布了。

这是针对CUDA 6.5的nvcc中的一个错误。在遵循@Talonmes的建议查看nvcc.profile之后,我开始尝试配置文件设置和命令行选项的组合。我把范围缩小到:当--keep在命令行上并且编译器bindir在nvcc.profile中时,会生成包含双引号的格式错误的cl.exe compile命令。保留中间文件的解决方案是将cl.exe放在路径中,并从nvcc.profile中删除编译器bindir。作为错误记录到NVIDIA

更新:
该问题在CUDA 7.0中没有表现出来。

如果手动运行nvcc编译命令,会发生什么情况?它会产生同样的错误吗?我会得到同样的错误。还尝试删除了除
-Ib:\anaconda2\lib\site packages\pycuda-2014.1-py2.7-win-amd64.egg\pycuda\cuda
之外的所有选项,但没有任何帮助。请查看您的
nvcc.profile
文件,查看它是否包含格式错误的路径。nvcc手册中有一个关于该文件如何工作的讨论。问题不在这里-我使用的是nvcc手册中的默认配置文件。当您在多个论坛上提出相同问题时,最好提供指向现有讨论的链接: