首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PyCuda:可以导入模块,然后我不能...(PyCUDA示例)

PyCuda:可以导入模块,然后我不能...(PyCUDA示例)
EN

Stack Overflow用户
提问于 2011-04-08 20:51:31
回答 3查看 6K关注 0票数 1

示例代码:

代码语言:javascript
复制
import pycuda.autoinit
import pycuda.driver as drv
import numpy

from pycuda.compiler import SourceModule
mod = SourceModule("""
__global__ void multiply_them(float *dest, float *a, float *b)
{
  const int i = threadIdx.x;
  dest[i] = a[i] * b[i];
}
""")

multiply_them = mod.get_function("multiply_them")

a = numpy.random.randn(400).astype(numpy.float32)
b = numpy.random.randn(400).astype(numpy.float32)

dest = numpy.zeros_like(a)
multiply_them(
        drv.Out(dest), drv.In(a), drv.In(b),
        block=(400,1,1), grid=(1,1))

print dest-a*b

结果:

代码语言:javascript
复制
Traceback (most recent call last):
  File "test.py", line 12, in <module>
    """)
  File "build/bdist.linux-x86_64/egg/pycuda/compiler.py", line 238, in __init__
  File "build/bdist.linux-x86_64/egg/pycuda/compiler.py", line 223, in compile
  File "build/bdist.linux-x86_64/egg/pycuda/compiler.py", line 149, in _find_pycuda_include_path
ImportError: No module named pycuda

听起来很简单,所以让我们来测试一下。

代码语言:javascript
复制
Python 2.7.1 (r271:86832, Feb 17 2011, 14:13:40) 
[GCC 4.3.4] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import pycuda
>>> pycuda
<module 'pycuda' from '/home/abolster/lib/python2.7/site-packages/pycuda-0.94.2-py2.7-linux-x86_64.egg/pycuda/__init__.pyc'>
>>> 

好吧,这很奇怪……

长话短说,即使逐行遍历文件进入python控制台,在实际执行mod=SourceModule()行之前也不会出错。

(最后一次回溯,我保证)

代码语言:javascript
复制
/home/abolster/lib/python2.7/site-packages/pycuda-0.94.2-py2.7-linux-x86_64.egg/pycuda/compiler.pyc in _find_pycuda_include_path()
    147 def _find_pycuda_include_path():
    148     from imp import find_module
--> 149     file, pathname, descr = find_module("pycuda")
    150 
    151     # Who knew Python installation is so uniform and predictable?

ImportError: No module named pycuda

因此,看起来pycuda与运行时python的包含目录不同,这是不应该发生的(据我所知)

有什么想法吗?(很抱歉问题太长了)

Talonmies提出了一个关于nvcc没有被发现的观点;除非python是从我想不到的地方得到它的敌人,否则它没有理由不被发现:

代码语言:javascript
复制
[bolster@dellgpu src]$ which nvcc
~/cuda/bin/nvcc
EN

回答 3

Stack Overflow用户

发布于 2012-09-07 10:50:14

更改到Python 2.6并重新安装相关模块修复了OP的问题。

票数 3
EN

Stack Overflow用户

发布于 2011-04-09 18:49:46

您正在尝试运行的代码没有任何错误-它应该可以工作。我的猜测是找不到nvcc。在尝试使用pycuda.compiler之前,请确保已在您的环境中设置了nvcc可执行文件的路径。

票数 1
EN

Stack Overflow用户

发布于 2011-04-09 15:58:12

我认为您没有安装nvidia的CUDA工具包,并添加了

/usr/local/cuda/lib/

LD_LIBRARY_PATH

找到pycuda模块的.so,并给出以下输出:

代码语言:javascript
复制
>lld pycuda.so 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5595298

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档