仅供参考,我有 64 位版本的 Python 2.7 和
我跟着pycuda安装说明安装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;
}
""")
我收到错误消息
编译错误:nvcc 编译
c:\users\xxxx\appdata\local\temp\tmpaoxt97\kernel.cu 失败
[命令:nvcc --cubin -arch sm_21 -m64
-Ic:\python27\lib\site-packages\pycuda\cuda kernel.cu] [stderr: nvcc : 致命错误: nvcc 找不到受支持的 Microsoft Visual 版本
工作室。仅支持 2008、2010 和 2012 版本
但我在机器上安装了 VS 2008 和 VS 2010,并按照说明设置路径和 nvcc 配置文件。有人告诉我发生了什么事吗?
UPDATE1:正如 cgohike 指出的,在有问题的语句之前运行以下语句将解决问题。
import os
os.system("vcvarsamd64.bat")
好吧,现在说它是最终的还为时过早。即使使用 cgohike 的解决方案,当我运行其他这样的脚本时,我也遇到了同样的错误
import pycuda.gpuarray as gpuarray
import pycuda.driver as cuda
import pycuda.autoinit
import numpy
a_gpu = gpuarray.to_gpu(numpy.random.randn(4, 4))
print "a_gpu ="
print a_gpu
a_doubled = (2*a_gpu).get()
print
print "a_doubled ="
print a_doubled
然后我发现这个答案。所以就我而言,我在 nvcc.profile 中添加了以下行
COMPILER-BINDIR = C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
此后,我不再遇到编译器错误。希望它对其他人有帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)