【问题标题】:pyopencl errror : undefined symbol: clCreateSubDevicespyopencl 错误:未定义符号:clCreateSubDevices
【发布时间】:2023-04-09 10:24:02
【问题描述】:

我已经安装了 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/A N/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

【问题讨论】:

    标签: ubuntu opencl x86-64 pyopencl ubuntu-13.10


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      找到了 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
      

      【讨论】:

      • 如果有人偶然发现这个并且想知道在哪里可以找到 siteconf.py。您必须获取 pyopencl 源代码(从 gi​​thub 克隆 pyopencl),然后在存储库中运行 python configure.py 并创建 siteconf.py。编辑完成后,您可以运行pip install . 来安装它。 ImportError 是由于 6 的过时版本,只需更新它即可修复 pip install --upgrade six
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-10-10
      • 2013-10-22
      • 2014-06-01
      • 2015-11-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多