2017-02-16 31 views
5

我刚刚安装pyCuda,当我尝试编译: 进口pycuda.autoinit 进口pycuda.driver为DRV 进口numpy的pycuda:kernel.cu的NVCC compitalation失败

from pycuda.compiler import SourceModule 
mod = SourceModule(""" 
__global__ void multiply_them(float *dest, float *a, float *b) 
{ 
    const int i = threadIdx.x; 
    dest[i] = a[i] * b[i]; 
} 
""") 

这是结果:

Traceback (most recent call last): 
    File "<stdin>", line 7, in <module> 
    File "C:\Program Files\Anaconda3\lib\site-packages\pycuda\compiler.py", line 265, in __init__ 
    arch, code, cache_dir, include_dirs) 
     File "C:\Program Files\Anaconda3\lib\site-packages\pycuda\compiler.py", line 255, in compile 
    return compile_plain(source, options, keep, nvcc, cache_dir, target) 
    File "C:\Program Files\Anaconda3\lib\site-packages\pycuda\compiler.py", line 137, in compile_plain 
    stderr=stderr.decode("utf-8", "replace")) 
pycuda.driver.CompileError: nvcc compilation of C:\Users\whyno\AppData\Local\Temp\tmpkv6oyxif\kernel.cu failed 
[command: nvcc --cubin -arch sm_50 -m64 -Ic:\program files\anaconda3\lib\site-packages\pycuda\cuda kernel.cu] 

我已经在anaconda shell中使用pip安装了pyCuda,我使用的是Microsoft Visual Studio 14.0。按照these我添加ollowing线nvcc.profile:

COMPILER-BINDIR = C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64 

,但它总是返回相同的错误。

感谢。

回答

1

不要更改nvcc.profile。你可能有同样的问题,我有。我编辑了compiler.py来输出命令调用的stdout。我得到了"nvcc fatal : Cannot find compiler 'cl.exe' in PATH"

因此,如果对您来说这是相同的情况,您需要在您的python文件中添加cl.exe的路径。在我的情况下,我需要在我的代码开始处添加以下行。

import os 
if os.system("cl.exe"): 
    os.environ['PATH'] += ';'+r"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503\bin\HostX64\x64" 
if os.system("cl.exe"): 
    raise RuntimeError("cl.exe still not found, path probably incorrect") 

编辑:你需要运行与CUDA兼容的MSVS版本。即CUDA v9.0不支持MSVS2017,CUDA v9.1仅支持版本15.4,不支持更高版本。通过从Visual Studio的本地工具命令提示符运行nvcc.exe,尝试它是否工作。