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
但它没有帮助。
答案 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
来尝试它是否有效。