2015-11-03 21 views
6

Tôi đã cài đặt CUDA và trình điều khiển mới nhất cho GPU của mình. Tôi đang sử dụng Python 2.7.10 trên Win7 64bit. Tôi đã thử cài đặt pyopencl từ:Python pyopencl DLL tải không thành công ngay cả với trình điều khiển mới nhất

a. các cửa sổ nhị phân không chính thức tại http://www.lfd.uci.edu/~gohlke/pythonlibs/#pyopencl

b. bằng cách biên dịch riêng của tôi sau khi nhận được nguồn tin từ https://pypi.python.org/pypi/pyopencl

Quá trình cài đặt đã thành công trên cả hai trường hợp, nhưng tôi nhận được thông báo lỗi tương tự khi tôi cố gắng nhập:

>>> 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. 
>>> 

Tôi có Visual C++ Redistributable cho Visual Studio 2015 được cài đặt từ https://www.microsoft.com/en-us/download/details.aspx?id=48145.

Tôi cũng đã thử với 2 phiên bản trình điều khiển GPU khác nhau (bao gồm mới nhất). Điều tương tự. Rất nhiều người dường như nhận được cùng một lỗi và trên một số diễn đàn tôi đọc rằng bằng cách cập nhật các trình điều khiển GPU mới nhất, nó hoạt động tốt. Nhưng không phải cho tôi.

Bất kỳ ai biết cách sửa lỗi này?

+0

bạn có đi theo liên kết này để cài đặt pyopencl: [cài đặt pyOpenCL trên Windows] (https: // wiki.tik er.net/PyOpenCL/Installation/Windows)? – Jon

Trả lời

1

Tôi e rằng không có một câu trả lời đúng cho vấn đề này. Mỗi trường hợp là khác nhau. Nó phụ thuộc vào những gì được cài đặt trong hệ điều hành. Để theo dõi các sự cố như vậy, tôi thường sử dụng Dependency Walker.

Trong trường hợp cụ thể này, tôi sẽ mở _cl.pyd (thường là trong C:\Python27\Lib\site-packages\pyopencl) trong Dependency Walker để kiểm tra nếu không có bất kỳ phụ thuộc thiếu hoặc nếu ví dụ OpenCL.dll thực sự là một trong đó nên được sử dụng. OpenCL.dll có thể được cài đặt bởi các chương trình khác và đường dẫn của chúng được thêm vào PATH. Ngoài ra OpenCL.dll trong System32 có thể quá cũ. Về cơ bản, thử và đổi tên lỗi tất cả trừ một số OpenCL.dll thành OpenCL.dll.bak và/hoặc xóa đường dẫn khỏi PATH có thể giúp bạn ở đó.

2

Tôi đã có cùng một vấn đề này và phát hiện ra nó là do AMD OpenCL.dll không có chức năng được giới thiệu trong OpenCL 2.1. Trang web Gohlke chỉ có OpenCL 2.1 và 1.2, trong khi trình điều khiển AMD hỗ trợ 2.0.

Vì tôi muốn 2.0, việc sửa chữa dễ dàng là thay thế bằng tay AMD System32/OpenCL.dll bằng phiên bản Intel SDK với hỗ trợ thử nghiệm 2.1.

+0

Wow, làm thế nào bạn biết tôi đã sử dụng libs của Gohlke? ;) Ngoài ra, cài đặt phiên bản pyOpenCL 1.2 hoạt động. –

0

Hãy thử cả phiên bản 1.2 và 2.1 mà tôi đã thử sau này và gặp sự cố này. Chuyển đổi whl và nó hoạt động nhưng sử dụng GPU Intel. NVidia OpenCL.dll là 2.0 và không hoạt động.

Chỉ cần kiểm tra các mảng cl.get_platforms và thấy họ 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
Các vấn đề liên quan