5
votes

FYI, I have 64 bit version of Python 2.7 and I followed the pycuda installation instruction to install pycuda.

And I don't have any problem running following script.

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)

But after that, when executing this statement,

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

I got the error messages

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

But I have VS 2008 and VS 2010 installed on the machine and set path and nvcc profile as instructed. Anybody tell me what's going on?

UPDATE1: As cgohike pointed out, running following statements before the problematic statement will solve the problem.

import os
os.system("vcvarsamd64.bat")
2
Do you have Visual Studio 2008 or higher installed?JohnnyHK

2 Answers

2
votes

Call "C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" amd64 or "C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\vcvarsall.bat" amd64 before python.exe. That will set all the necessary environment variables to use the 64 bit Visual Studio compiler from Python or the command line.

3
votes

Well, it was too early to call it final. Even with resolution from cgohike, I got the same error when I ran other script like this

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

And then I found this answer. So in my case, I added following line in nvcc.profile

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

After this, no more compiler error I got. Hope it helps others.