【问题标题】:pycuda.driver module not found找不到 pycuda.driver 模块
【发布时间】:2019-06-11 20:15:19
【问题描述】:

我已经安装了python 3.7.2 以及以下库:jupyterpandasnumpypytoolspycuda。我正在使用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 cudacuda.init(),那么python就退出了。

标签: python cuda pycuda


【解决方案1】:

如果您的代码在没有 AttributeErrors 的情况下运行,那么 Visual Studio 可能会给出误报。如果是这样,请忽略它们。发生这种情况是因为对动态代码进行静态分析并不总是正确的。

【讨论】:

  • 当你尝试运行 Python 时会说什么?什么是堆栈跟踪?
  • 我用一个更简单的测试用例编辑了这个问题。基本上,如果我尝试从 pycuda.driver 运行模块,VSCode 会停止执行并引发问题。
  • 很难回应“VScode 引发问题”。尝试从命令行运行您的程序并报告 Python 解释器所说的问题所在。
  • 如果我从命令提示符>>>操作并运行import pycuda.driver as cudacuda.init(),那么python就退出了。
  • 如果你从控制台命令提示符运行你的程序?换句话说,python.exe myprogram.py
【解决方案2】:

问题是安装问题。

我刚刚卸载了之前安装的pycuda 版本

python pip install pycuda

并从Christoph Golke 页面下载预编译的二进制文件,同时注意兼容性。对我来说,正确的文件是 pycuda-2018.1.1+cuda100-cp37-cp37m-win_amd64python 3.7.2 64bits

现在,一切正常。

【讨论】:

  • 如果您能接受这一点,以便将问题从 CUDA 标签的未回答列表中删除,那就太好了
猜你喜欢
  • 2022-12-15
  • 2018-02-21
  • 2021-07-23
  • 1970-01-01
相关资源
最近更新 更多