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:c:\users\rl74173\appdata\local\temp\tmp6nww2c\kernel.cu的nvcc编译失败
我之前做了一些研究,并找到了一些解决方法。所以在运行之前我添加了以下内容:
import os
os.system("vcvarsamd64.bat")
但是仍然存在错误。
我还看到有人通过在nvcc.profile下添加以下行来解决问题。
COMPILER-BINDIR = C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
我安装了Visual Studio Community 2017,所以在我的情况下,我尝试了:
COMPILER-BINDIR = C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\atlmfc\lib\amd64
但这并没有帮助。
nvcc.profiles
在哪里?另外,这不应该是"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\Hostx64\amd64"或者更近期的"C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827\bin\Hostx64\x64"吗? - JHBonariusprint(cmdline)
。我在Windows cmd窗口中(使用vcvars64运行)运行了确切的命令:nvcc --cubin -arch sm_50 -m64 -Ic:\programdata\anaconda3\lib\site-packages\pycuda\cuda kernel.cu
...它可以工作!为什么PyCuda就不能工作呢... - JHBonariusprint(stdout)
。输出为:"nvcc fatal : Cannot find compiler 'cl.exe' in PATH"
。因此,似乎对vcvars[...].bat
的调用未正确更改 PATH。 - JHBonarius