2013-09-26 243 views
4

僅供參考,我有64位版本的Python 2.7和 我跟着the pycuda installation instruction安裝pycuda。在Windows 7上安裝pycuda-2013.1.1 64位

而且我在運行下面的腳本時沒有任何問題。

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 compilation of c:\users\xxxx\appdata\local\temp\tmpaoxt97\kernel.cu failed [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配置文件按照指示。有人告訴我發生了什麼事?

UPDATE1:正如cgohike指出的那樣,在有問題的陳述之前運行以下語句將解決問題。

import os 
os.system("vcvarsamd64.bat") 
+0

您是否安裝了Visual Studio 2008或更高版本? – JohnnyHK

回答

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編譯器。

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 

在此之後,我沒有更多的編譯器錯誤。希望它能幫助別人。

+0

如何編輯nvcc.profile?在我的情況下,它根本不允許重寫這個文件。我在將文件複製到C:\ Program文件位置以外的其他文件夾中,然後再將其粘貼到C:\ Program文件中後嘗試對其進行編輯。當它被保存在輸入行消失。你有沒有可能對此有所瞭解? – Kanmani