在 Windows 7 64 位上安装 pycuda-2013.1.1

Tae*_*hin 5 python pycuda

仅供参考,我有 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)
Run Code Online (Sandbox Code Playgroud)

但在那之后,当执行这条语句时,

mod = SourceModule("""
__global__ void doublify(float *a)
{
int idx = threadIdx.x + threadIdx.y * 4;
a[idx] *= 2;
}
""")
Run Code Online (Sandbox Code Playgroud)

我收到错误消息

CompileError: nvcc 编译 c:\users\xxxx\appdata\local\temp\tmpaoxt97\kernel.cu 失败 [command: nvcc --cubin -arch sm_21 -m64 -Ic:\python27\lib\site-packages\pycuda\ cuda kernel.cu] [标准错误:nvcc:致命错误:nvcc 找不到受支持的 Microsoft Visual Studio 版本。仅支持 2008、2010 和 2012 版本

但是我在机器上安装了 VS 2008 和 VS 2010,并按照说明设置了路径和 nvcc 配置文件。有人告诉我这是怎么回事吗?

UPDATE1:正如 cgohike 所指出的,在有问题的语句之前运行以下语句将解决问题。

import os
os.system("vcvarsamd64.bat")
Run Code Online (Sandbox Code Playgroud)

cgo*_*lke 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" amd64之前python.exe。这将设置所有必要的环境变量,以便从 Python 或命令行使用 64 位 Visual Studio 编译器。