在Windows 7 64位系统上安装pycuda-2013.1.1

5
FYI,我使用的是Python 2.7的64位版本,并按照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 失败 [command: nvcc --cubin -arch sm_21 -m64 -Ic:\python27\lib\site-packages\pycuda\cuda kernel.cu] [stderr: nvcc : fatal error : nvcc cannot find a supported version of Microsoft Visual Studio. Only the versions 2008, 2010, and 2012 are supported

但我已经在计算机上安装了 VS 2008 和 VS 2010,并按照指示设置了路径和 nvcc 配置文件。有人能告诉我发生了什么事情吗? 更新1: 正如 cgohike 指出的那样,在出错语句之前运行以下语句将解决该问题。
import os
os.system("vcvarsamd64.bat")

你是否已经安装了Visual Studio 2008或更高版本? - JohnnyHK
2个回答

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

然后我找到了这个答案。因此,在我的情况下,我在nvcc.profile中添加了以下行:

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

之后就没有再出现编译错误了。希望这能帮到其他人。


如何编辑 nvcc.profile 文件?在我的情况下,它根本不允许重写此文件。我尝试将文件复制到 C:\Program files 以外的另一个文件夹中进行编辑,然后再将其粘贴回 C:\Program files 中。但当保存后,输入的行会消失。你是否知道这方面的任何信息? - Kanmani

2

在使用Python或命令行时,请先调用"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或命令行中使用64位Visual Studio编译器。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接