CUDA 9.0和pycuda,错误:CompileError:nvcc编译... kernel.cu失败

时间:2017-09-27 17:43:33

标签: python visual-studio pycuda

import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import SourceModule
import numpy
a = numpy.random.randn(4,4)
a = a.astype(numpy.float32)
a_gpu = cuda.mem_alloc(a.nbytes)
cuda.memcpy_htod(a_gpu, a)
mod = SourceModule("""
__global__ void doublify(float *a)
{
int idx = threadIdx.x + threadIdx.y*4;
a[idx] *= 2;
}
""")

我刚刚安装了CUDA 9.0和pycuda,我正在按照教程运行第一个cuda程序。 但它总是证明错误:

CompileError:nvcc编译c:\ users \ rl74173 \ appdata \ local \ temp \ tmp6nww2c \ kernel.cu失败

我做了一些研究,之前找到了一些答案。所以我在运行之前添加了这个:

import os
os.system("vcvarsamd64.bat")

但它仍然是错误的。

我也看到有人通过在nvcc.profile

下面添加一行来解决这个问题
COMPILER-BINDIR = C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64

我安装了2017年的视觉工作室社区,所以在我的情况下,我尝试了

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

但它没有帮助。

1 个答案:

答案 0 :(得分:1)

好的,所以我为我修好了。问题是运行vcvars64.bat会在 sub shell中设置路径环境...然后关闭它,因此设置路径会再次消失。

您想要的是自己更改路径:添加cl.exe编译器文件的路径。为此,我引用了this post。在我的情况下,我必须在开始时将其添加到我的.py文件中:

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的Native Tools命令提示符运行nvcc.exe来尝试它是否有效。