【发布时间】:2019-06-11 20:15:19
【问题描述】:
我已经安装了python 3.7.2 以及以下库:jupyter、pandas、numpy、pytools 和 pycuda。我正在使用Visual Studio Code。我正在尝试运行标准的pyCuda 示例:
# --- PyCuda initialization
import pycuda.driver as cuda
import pycuda.autoinit
from pycuda.compiler import SourceModule
# --- Create a 4x4 double precision array of random numbers
import numpy
a = numpy.random.randn(4,4)
# --- Demote array to single precision
a = a.astype(numpy.float32)
# --- Allocate GPU device memory
a_gpu = cuda.mem_alloc(a.nbytes)
# --- Memcopy from host to device
cuda.memcpy_htod(a_gpu, a)
# --- Define a device function that doubles the input device array
mod = SourceModule("""
__global__ void doublify(float *a)
{
int idx = threadIdx.x + threadIdx.y*4;
a[idx] *= 2;
}
""")
# --- Define a reference to the __global__ function and call it
func = mod.get_function("doublify")
func(a_gpu, block=(4,4,1))
# --- Copy results from device to host
a_doubled = numpy.empty_like(a)
cuda.memcpy_dtoh(a_doubled, a_gpu)
print(a_doubled)
print(a)
当我运行这段代码时,VSCode 会这样说
Module 'pycuda.driver' has no 'mem_alloc' member
Module 'pycuda.driver' has no 'memcpy_htod' member
Module 'pycuda.driver' has no 'memcpy_dtoh' member
但是,从下图看,该模块似乎存在
关于如何解决问题的任何建议?
编辑:简化的测试用例
如果我跑步
# --- PyCuda initialization
import pycuda.driver as cuda
print("test")
然后test 在控制台中发出。如果我跑
# --- PyCuda initialization
import pycuda.driver as cuda
# Initialize CUDA
cuda.init()
print("test")
控制台中没有发出任何内容,VSCode 发出以下problem
Module 'pycuda.driver' has no 'init' member
【问题讨论】:
-
我在这个问题中没有看到任何 python 运行时错误,只是 IDE 限制。代码真的运行了吗?如果没有,会发出什么 python 运行时错误?
-
@talonmies 感谢您对这个问题感兴趣。我用一个更简单的测试用例编辑了我的问题。如果我尝试从
pycuda.driver运行模块,则会出现问题。 -
如果我从命令提示符
>>>操作并运行import pycuda.driver as cuda和cuda.init(),那么python就退出了。