我在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
时似乎发生错误。此错误与先前主题中显示的问题有相似之处:
cffi load failure when trying to import PyOpenCL
pyopencl import error cffi.so undefined symbol
然而,尽管安装完成(貌似)没有错误,我安装了AMD和Intel的OCL SDK:问题仍然存在。我还更新了我的grahics卡驱动程序。
我尝试使用Dependency Walker检查_cffi.pyd
的依赖关系,如以下主题中所述:
Python pyopencl DLL load failed even with latest drivers
这确实在opencl.dll
下出现了许多循环依赖项和缺少依赖项,名称以API-MS-WIN
和EXT-MS-WIN
开头。重新命名opencl.dll
中的/System32
并使用\Anaconda3\Library\bin
中的WITH et
AS (SELECT XMLType (
'<patent>
<applications>
<application code="U7">
<applicationId>
<number>351149</number>
</applicationId>
</application>
<application>
<applicationId>
<number>54632</number>
</applicationId>
</application>
<application code="A2">
<applicationId>
<number>DM090884</number>
</applicationId>
</application>
</applications>
</patent>
' ) xt
from dual
)
SELECT
ext.*
FROM
et,
XMLTABLE('/patent'
passing et.xt
Columns
APPLICATION_NUMBER VARCHAR (14)
PATH 'applications/application[(@code="A2" or @code="U2" )][1]/applicationId/number'
--PATH ' applications/application[1]/applicationId/number'
) ext
时依赖性错误仍然存在。
进行一些搜索我找到了这个帖子:
Dependency Walker: missing dlls
基本上说缺少的依赖项无需担心。
答案 0 :(得分: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
吗?
这应该对您有帮助
答案 1 :(得分:0)
我的Intel HD Graphics 4400 GPU遇到相同的问题。它以前曾奏效(我不记得确切地如何使它更早地起作用)。在某个时候,我得到了与Asker所述完全相同的pyopencl导入错误。
经过一番尝试后,我从此处https://software.intel.com/en-us/articles/opencl-drivers安装了Intel OpenCL驱动程序。在安装过程中,它表明我的常规Intel HD 4400驱动程序需要首先卸载,安装工具为我完成了该操作。然后安装了OpenCL驱动程序,我可以在我的GPU上再次使用OpenCL。 我的理论:可能是在Windows更新过程中,我的安装程序被破坏了,有时还会更新设备驱动程序。