2012-07-20 97 views
13

Numpy可以針對不同的BLAS實現(MKL,ACML,ATLAS,GotoBlas等)進行「鏈接/編譯」。這並不總是直接配置,但它是可能的。Numpy,BLAS和CUBLAS

是否有可能針對NVIDIA的CUBLAS實現「鏈接/編譯」numpy?
我在網上找不到任何資源,在我花太多時間嘗試之前,我想確保它可能。

回答

15

總而言之:不,你不能這樣做。

有一個相當不錯的scikit,可以從scipy提供對CUBLAS的訪問,它叫做scikits.cuda,它建立在​​之上。 PyCUDA提供了類似於numpy.ndarray的類,它可以無縫地使用CUDA處理GPU內存中的numpy數組。所以你可以使用CUBLAS和CUDA,但是你不能直接鏈接到CUBLAS,並期望它可以工作。

還有一個商業圖書館提供numpy和cublas之類的功能,它有一個Python界面或綁定,但我會把它留給他們的一個願望來填補你的空白。

+1

感謝您的信息。我知道允許訪問CUDA的各種Python庫。不過,如果我可以配置Numpy來使用Cublas,我不需要改變現有代碼中的任何東西(目前它使用''numpy.dot()''和其他Linealg函數與MKL或GotoBlas2),我可以做性能比較。出於好奇:你是否偶然知道技術上的原因是爲什麼不可能將numpy與CUBLAS聯繫起來? – 2012-07-20 10:01:19

+1

這是因爲API不同,並且存在整個內存管理層,標準Blas應用程序一無所知。 – talonmies 2012-07-20 10:16:15

+1

這可能會改變這種情況:http://devblogs.nvidia.com/parallelforall/drop-in-acceleration-gnu-octave/雖然這適用於八度,它應該也適用於Numpy – 2014-09-16 21:05:37

4

這裏是另一種可能性:

http://www.cs.toronto.edu/~tijmen/gnumpy.html

這基本上是一個gnumpy + cudamat環境,其可用於利用一個GPU。也可以在沒有使用npmat的情況下運行相同的代碼。參考上面的鏈接下載所有這些文件。