2010-10-31 35 views
11

我正在尋找一個很好的OpenCL wrapper \ library for Python,它有很好的文檔。我試圖搜索一些......但找不到一個足夠好的。OpenCL for Python

回答

11

最流行的和最好的文檔選項似乎是PyOpenCL。它聲稱是OpenCL的完整包裝,並且文檔看起來不錯。

+0

Ow。 TNX ..似乎我正在下載PyOpenCL不是從官方網站..這就是爲什麼我沒有找到它的文件... – 2010-10-31 18:17:09

+0

@Ai_boy:當然,沒問題。 – 2010-10-31 18:50:29

4

CLytherPyOpenCL都很好地記錄在我的記錄。

+0

雖然文檔看起來很棒,但CLyther比PyOpenCL還不成熟。這裏PyOpenCL作者是 – 2010-10-31 16:01:55

4

pycl是一個ctypes結合的OpenCL(託管on bitbucket

其主要目標是簡單的:以這樣一種方式,由於很多Python實現可以使用它作爲可行包裹的OpenCL。它目前在CPython 2. {5,6,7},3.2和PyPy 1.5上進行了測試。據瞭解,很大程度上不適用於Jython,它的ctypes庫還不成熟。

爲了達到這個目標,我們避開了擴展模塊和標準庫之外的依賴關係。理想情況下,像NumPy陣列和PIL圖像應該只是工作,但他們不應該被要求

它目前很新。我最近一直在玩它,它的工作很好。與PyOpenCL相比,沒有完成時序,但性能似乎是非常合理的

我沒有爲OS X 10.6的OpenCL 1.0(和AMD Radeon 5870,see here)工作,但完美工作在10.7以下,並且OpenCL 1.1

至於文檔,它是一個相當直接的綁定到C庫,所以任何文檔將適用。也"Adventures in PyOpenCL"是好的,並適用於幾乎所有的綁定

2

我們正在開發opencl4py,更高級別的綁定。這個項目使用CFFI,所以它在Pypy上工作。

我們遇到的pyopencl的主要問題是'import pyopencl'會執行OpenCL初始化並在NVIDIA驅動程序中佔用整個虛擬內存,從而阻止正確的分支並有效地禁用多處理(是的,我們聲稱使用pyopencl禁用多處理至少在NVIDIA中)。 opencl4py使用懶惰的OpenCL初始化,解決這個「導入地獄」。

後來,它獲得了一些不錯的功能,如超級簡單的二進制程序緩存等。不幸的是,文檔有點簡短。瞭解它如何工作的最好方法是通過測試。

+0

。我可以對你的陳述最有意義的是opencl4py在導入時不加載libOpenCL.so。如果這是一個問題(正如你聲稱的那樣),那麼爲什麼不直接將PyOpenCL導入需要的地方呢?不知道我在這裏理解你的動機。 – 2014-05-05 15:33:03

+0

作爲進一步的評論,PyOpenCL有一個[cffi分支](https://github.com/pyopencl/pyopencl/tree/cffi),可以啓動內核並在PyPy上運行。它尚未準備好黃金時段,但它已經到了。 – 2014-05-05 15:33:46

+0

我們的應用程序有幾十個使用OpenCL的模塊,並且延遲導入導致代碼非常容易出錯。每次有人導入pyOpenCL「比他早」導致很難調試和診斷錯誤...有時:)當然,它可以在開發人員的機器上使用非NVIDIA OpenCL設備。 – markhor 2014-05-05 16:01:13