Python pyopencl DLL load failed even with latest drivers

旧街凉风 提交于 2019-12-21 04:14:32

问题


I've installed the latest CUDA and driver for my GPU. I'm using Python 2.7.10 on Win7 64bit. I tried installing pyopencl from:

a. the unofficial windows binaries at http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl

b. by compiling my own after getting the sources from https://pypi.python.org/pypi/pyopencl

The installation was successful on both cases but I get the same error message once I try to import it:

>>> import pyopencl
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "C:\Python27\lib\site-packages\pyopencl-2015.1-py2.7-win-amd64.egg\pyope
cl\__init__.py", line 30, in <module>
    import pyopencl._cl as _cl
ImportError: DLL load failed: The specified procedure could not be found.
>>>

I have Visual C++ Redistributable for Visual Studio 2015 installed from https://www.microsoft.com/en-us/download/details.aspx?id=48145 .

I also tried with 2 different versions of the GPU driver (including latest). Same thing. A lot of people seem to get the same error and on some forums I read that by updating the GPU drivers to latest, it works fine. But not for me.

Anyone knows how to fix this?


回答1:


I'm affraid there isn't one right answer to this problem. Each case is different. It depends on what is installed in the OS. To track down such problems I normally use Dependency Walker.

In this specific case I would open _cl.pyd (usually in C:\Python27\Lib\site-packages\pyopencl) in Dependency Walker to check if there aren't any missing dependencies or if for example OpenCL.dll is actually the one which should be used. OpenCL.dll may be installed by other programs and their path added to PATH. Also OpenCL.dll in System32 may be too old. Basically trial and error renaming all but one OpenCL.dll into OpenCL.dll.bak and/or removing paths from PATH may get you there.




回答2:


I had this same problem and discovered it was caused by AMD OpenCL.dll not having a function introduced in OpenCL 2.1. The Gohlke site only has OpenCL 2.1 and 1.2, while AMD drivers support 2.0.

Because I wanted 2.0, the easy fix was to manually replace the AMD System32/OpenCL.dll with the one from Intel SDK with experimental 2.1 support.




回答3:


Try both the versions 1.2 and 2.1 I was trying with later and got this issue. Switched the whl and it works but used the Intel GPU. NVidia OpenCL.dll is 2.0 and that is not working still.

Just checked the cl.get_platforms array and found them 0. Intel 1. NVidia

  1. pyopencl.Platform Intel(R) OpenCL & pyopencl.Device Intel(R) Core(TM) ... Intel(R) OpenCL
  2. pyopencl.Platform NVIDIA CUDA & pyopencl.Device Quadro ... NVIDIA CUDA


来源:https://stackoverflow.com/questions/33491911/python-pyopencl-dll-load-failed-even-with-latest-drivers

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!