2010-10-31 27 views
11

Tôi đang tìm thư viện OpenCL wrapper tốt cho Python, với tài liệu tốt. Tôi đã cố gắng tìm kiếm một số ... nhưng không thể tìm thấy một đủ tốt.OpenCL cho Python

Trả lời

11

Tùy chọn được tài liệu phổ biến nhất và tốt nhất có vẻ là PyOpenCL. Nó tuyên bố là một trình bao bọc hoàn chỉnh cho OpenCL và tài liệu có vẻ tốt.

+0

Ow. tnx .. có vẻ như tôi đã tải PyOpenCL không phải từ trang web chính thức .. và đó là lý do tại sao tôi không tìm thấy tài liệu cho nó ... –

+0

@Ai_boy: chắc chắn, không có vấn đề gì. –

4

Cả hai CLytherPyOpenCL đều được xem xét tài liệu đẹp.

+0

CLyther còn non nớt hơn PyOpenCL, mặc dù tài liệu có vẻ tuyệt vời. –

4

pycl là một ctypes ràng buộc để OpenCL (lưu trữ on bitbucket)

mục tiêu chính của nó là đơn giản: quấn OpenCL theo cách như vậy mà như việc triển khai nhiều Python có thể sử dụng nó như là khả thi. Nó hiện đang được thử nghiệm trên CPython 2. {5,6,7}, 3,2 và PyPy 1.5. Nó được biết là phần lớn không hoạt động trên Jython, có thư viện ctypes vẫn chưa trưởng thành.

Để đạt được điều này, chúng tôi tránh các mô-đun mở rộng và phụ thuộc bên ngoài thư viện chuẩn. Lý tưởng nhất là những thứ như mảng NumPy và hình ảnh PIL chỉ nên hoạt động, nhưng chúng không được yêu cầu

Hiện tại, nó mới. Tôi đã chơi với nó gần đây và nó hoạt động tốt. Thời gian không thực hiện so với PyOpenCL, nhưng hiệu suất dường như hoàn toàn hợp lý

Tôi không làm việc cho tôi với OpenCL 1.0 OS X 10.6 (và AMD Radeon 5870, see here), nhưng hoạt động hoàn hảo dưới 10.7 và OpenCL 1.1

Đối với tài liệu, đó là một liên kết khá trực tiếp với các thư viện C, vì vậy mọi tài liệu sẽ áp dụng. Ngoài ra "Adventures in PyOpenCL" là tốt và áp dụng cho hầu như tất cả các ràng buộc

2

Chúng tôi đang phát triển opencl4py, các mức ràng buộc cấp cao hơn. Dự án này sử dụng CFFI, vì vậy nó hoạt động trên Pypy.

Vấn đề chính mà chúng tôi gặp phải với pyopencl là 'import pyopencl' không khởi tạo OpenCL và chiếm toàn bộ bộ nhớ ảo trong trường hợp trình điều khiển NVIDIA, ngăn chặn lỗi chính xác và vô hiệu hóa khả năng đa xử lý (vâng, chúng tôi cho rằng việc sử dụng pyopencl vô hiệu hóa đa xử lý ít nhất là với NVIDIA). opencl4py sử dụng khởi tạo OpenCL lười biếng, giải quyết "địa ngục nhập" này.

Sau đó, nó đã đạt được một số tính năng đẹp như bộ nhớ đệm chương trình nhị phân siêu dễ dàng, v.v. Thật không may, tài liệu hơi ngắn gọn. Cách tốt nhất để tìm hiểu cách hoạt động của nó là trải qua các bài kiểm tra.

+0

PyOpenCL tác giả ở đây. Ý nghĩa nhất tôi có thể làm cho tuyên bố của bạn là opencl4py không tải libOpenCL.so tại thời gian nhập. Nếu đó là một vấn đề (như bạn đang tuyên bố), thì tại sao không nhập khẩu PyOpenCL chính xác nơi nó cần thiết? Không chắc tôi hiểu động lực của bạn ở đây. –

+0

Như một bình luận thêm, PyOpenCL có một nhánh [cffi] (https://github.com/pyopencl/pyopencl/tree/cffi) có thể khởi động hạt nhân và làm việc trên PyPy. Nó không hoàn toàn sẵn sàng cho thời gian đầu, nhưng nó đang đến đó. –

+0

Ứng dụng của chúng tôi có hàng tá mô-đun sử dụng OpenCL và trì hoãn quá trình nhập khiến mã dễ bị lỗi. Mỗi lần ai đó nhập khẩu pyOpenCL "sớm hơn anh ta nên" dẫn đến rất khó để gỡ lỗi và chẩn đoán lỗi ...đôi khi :) Và tất nhiên nó có thể hoạt động với các thiết bị không phải của NVIDIA OpenCL trên máy của nhà phát triển. – markhor

Các vấn đề liên quan