3

我已经安装了 pyopencl。当我尝试:

 python /home/a/pyopencl/examples/benchmark.py

然后我有一个错误:

 Traceback (most recent call last):
 File "/home/a/pyopencl/examples/benchmark.py", line 6, in <module>
 import pyopencl as cl
 File "/usr/local/lib/python2.7/dist-packages/pyopencl-2013.3-py2.7-linux-   
 x86_64.egg/pyopencl/__init__.py", line 28, in <module>
 import pyopencl._cl as _cl
 ImportError: /usr/local/lib/python2.7/dist-packages/pyopencl-2013.3-py2.7-linux-     
 x86_64.egg/pyopencl/_cl.so: undefined symbol: clCreateSubDevices

我该如何解决?

TIA

 Python 2.7.5+ (default, Sep 19 2013, 13:48:49) 
 [GCC 4.8.1] on linux2
 Linux zalman 3.11.0-15-generic #23-Ubuntu SMP Mon Dec 9 18:17:04 UTC 2013 x86_64   
 x86_64 x86_64 GNU/Linux
+-------------------------------------------------- -----+                       
| NVIDIA-SMI 4.304.88 驱动程序版本:304.88 |                       
|-------------------------------+----------------- -----+-----------+
| GPU 名称 | 总线 ID 显示。| 挥发性的 Uncorr。纠错 |
| Fan Temp Perf Pwr:Usage/Cap| 内存使用 | GPU-Util Compute M. |
|=================================+================= =====+========================|
| 0 GeForce GTX 770 | 0000:01:00.0 不适用 | 不适用 |
| 25% 29C N/AN/A / N/A | 7% 149MB / 2047MB | 不适用 默认 |
+-------------------------------+------------------ -----+-----------+

+-------------------------------------------------- --------------------------------------------+
| 计算进程:GPU 内存 |
| GPU PID 进程名称
|=================================================== =============================|
| 0 不支持 |
+-------------------------------------------------- --------------------------------------------+
 ls /etc/OpenCL/vendors
 nvidia.icd



 locate libOpenCL.so


 /etc/alternatives/x86_64-linux-gnu_libOpenCL.so
 /etc/alternatives/x86_64-linux-gnu_libOpenCL.so_lib32
 /usr/lib/libOpenCL.so
 /usr/lib/x86_64-linux-gnu/libOpenCL.so
 /usr/lib32/libOpenCL.so

  nvcc --version
  nvcc: NVIDIA (R) Cuda compiler driver
  Copyright (c) 2005-2012 NVIDIA Corporation
  Built on Fri_Sep_21_17:28:58_PDT_2012
  Cuda compilation tools, release 5.0, V0.2.1221
4

2 回答 2

2

clCreateSubDevices 是在 OCL 1.2 中引入的。上次我检查 NVIDIA 仍然不支持 OCL 1.2。也许它最近改变了......更好的检查。

您可以使用class pyopencl.Device查询您可以使用哪个版本的 OCL。文档在这里

于 2014-01-19T11:17:15.053 回答
1

找到了 pyopencl 人自己发布的这个解决方案:

解决方案:添加

CL_PRETEND_VERSION = "1.1"

到 siteconf.py。

问题:如果您为 CL 1.2 提供 PyOpenCL 标头,然后针对不实现 1.2 功能的 ICD 加载器(例如 clCreateSubDevice)进行编译,那么您会遇到这种损坏。以上通过强制 PyOpenCL 忽略 1.2 解决了这个问题。

安德烈亚斯

http://comments.gmane.org/gmane.comp.python.opencl/1328

但现在我也遇到了另一个错误:

  File "/usr/local/lib/python2.7/dist-packages/pytools-2014.3.5-py2.7.egg/pytools/__init__.py", line 5, in <module>
from six.moves import range, zip, intern, input
ImportError: cannot import name intern
于 2015-01-01T05:02:47.377 回答