【问题标题】:pyopencl Import Errorpyopencl 导入错误
【发布时间】:2017-11-07 15:38:56
【问题描述】:

我在 Windows 10 上通过 Anaconda 运行 python 3.5.4 和来自 conda-forge 的 pyopencl 2017.2,通过 Anaconda 安装。我的系统是 i5 4670K,运行 R9 290 驱动版本 17.11.1 与 OpenCL 版本 23.20.788.0.

尝试导入 pyopencl 模块时遇到以下错误

    >>> import pyopencl as cl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "[my home folder]\Anaconda3\lib\site-packages\pyopencl\__init__.py", line 37, in <module>
    import pyopencl.cffi_cl as _cl
  File "[my home folder]\Anaconda3\lib\site-packages\pyopencl\cffi_cl.py", line 39, in <module>
    from pyopencl._cffi import ffi as _ffi
ImportError: DLL load failed: The specified module could not be found.

加载_cffi.pyd 时出现错误。此错误与之前线程中显示的问题有相似之处:

Python pyopencl Import Error

cffi load failure when trying to import PyOpenCL

pyopencl import error cffi.so undefined symbol

但是,尽管安装完成(似乎)没有错误,但我从 AMD 和 Intel 安装了 OCL SDK:s,问题仍然存在。我还更新了我的显卡驱动程序。

我尝试使用 Dependency Walker 来检查 _cffi.pyd 的依赖关系,如以下线程中所述:

Python pyopencl DLL load failed even with latest drivers

这确实在opencl.dll 下出现了很多循环依赖项和缺失的依赖项,名称以API-MS-WINEXT-MS-WIN 开头。重命名 /System32 中的 opencl.dll 并改用 \Anaconda3\Library\bin 中的那个时,依赖性错误仍然存​​在。

搜索了一下,找到了这个帖子:

Dependency Walker: missing dlls

这基本上是说缺少的依赖项没什么好担心的。

【问题讨论】:

    标签: python dll opencl pyopencl


    【解决方案1】:

    我也遇到了这个问题,我的研究使我找到了帮助安装兼容版本的文档:https://media.readthedocs.org/pdf/mot/master/mot.pdf

    该错误是因为您没有兼容 AMD 或 Intel 的 pyopencl 和 opencl 驱动程序版本。

    引用:

    安装预编译的二进制轮 (.whl) 是最简单的方法 安装 PyOpenCL,但仅在为您编译轮子时才有效 具体的 Python 实现。在 Christoph Gohlke 网站 (http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl) 你可以找到一个 PyOpenCL 二进制包的范围。如果有一个兼容的 你的系统,下载那个版本。你可以看看它是否兼容 二进制名称中的 Python 版本和 OpenCl 版本匹配 您安装的 Python 和驱动程序支持的版本。请注意,许多 驱动程序,例如 nVIDIA 的仅支持 OpenCL 1.2,所以在这种情况下 使用名称中带有“+cl12”的轮子,而不是例如“+cl21”。为了 例如,如果您有带有 Python 3.5 和 GPU 的 64 位 Windows 系统 或 CPU 驱动程序支持 OpenCL 1.2 你需要下载轮子 名称中的“+cl12”、win-amd64 和 cp35m(注意格式, cpm,m 很重要)。 (检查您使用的 Python 版本 你可以在命令行中运行python --version吗)。

    这应该对你有帮助

    【讨论】:

      【解决方案2】:

      我在 Intel HD Graphics 4400 GPU 上遇到了同样的问题。它以前工作过(我不记得我之前是如何让它工作的)。在某些时候,我得到了与 Asker 描述的完全相同的 pyopencl 导入错误。

      经过一番尝试,我从这里安装了英特尔 OpenCL 驱动程序:https://software.intel.com/en-us/articles/opencl-drivers。在安装过程中,它显示我的常规 Intel HD 4400 驱动程序需要先卸载,安装工具为我做了。然后安装了 OpenCL 驱动程序,我可以再次在我的 GPU 上使用 OpenCL。 我的理论:可能,我的设置在 Windows 更新期间损坏了,有时也会更新设备驱动程序。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2018-10-13
        • 1970-01-01
        • 1970-01-01
        • 2019-08-10
        • 1970-01-01
        • 2013-01-06
        • 2023-04-09
        相关资源
        最近更新 更多