在Windows 7 64位上安装pycuda-2013.1.1

时间:2013-09-26 17:05:51

标签: python pycuda

仅供参考,我有64位版本的Python 2.7和 我跟着the pycuda installation instruction安装了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;
}
""")

我收到了错误消息

  

CompileError: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")

2 个答案:

答案 0 :(得分:3)

嗯,现在称它为最终还为时过早。即使使用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

然后我发现this answer.所以在我的情况下,我在nvcc.profile中添加了以下行

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

在此之后,我没有再遇到编译器错误。希望它能帮助别人。

答案 1 :(得分:2)

"C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" amd64之前致电"C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64python.exe。这将设置所有必要的环境变量,以使用Python或命令行中的64位Visual Studio编译器。