2012-07-20 12 views
13

Numpy można "połączyć/skompilować" z różnymi implementacjami BLAS (MKL, ACML, ATLAS, GotoBlas, itp.). Konfiguracja nie zawsze jest łatwa, ale jest to możliwe.Numpy, BLAS i CUBLAS

Czy można również "połączyć/skompilować" numpy z implementacją NVIDII CUBLAS?
Nie mogłem znaleźć żadnych zasobów w Internecie i zanim spędziłem za dużo czasu na próbie, chciałem się upewnić, że jest to w ogóle możliwe.

Odpowiedz

15

Jednym słowem: nie, nie możesz tego zrobić.

Jest to dość dobry scikit który zapewnia dostęp do CUBLAS z scipy zwanego scikits.cuda która zbudowana jest na górze PyCUDA. PyCUDA zapewnia klasę podobną do numpy.ndarray, która bezproblemowo umożliwia manipulowanie numpy tablicami w pamięci GPU za pomocą CUDA. Możesz więc używać CUBLAS i CUDA z numpy, ale nie możesz po prostu połączyć się z CUBLAS i oczekiwać, że zadziała.

Istnieje również komercyjna biblioteka udostępniająca funkcje typu numpy i cublas, która ma interfejs lub powiązania Pythona, ale pozostawię go jednemu z nich, aby Cię o tym poinformować.

+1

Dzięki za informacje. Wiem o różnych bibliotekach Pythona, które umożliwiają dostęp do CUDA. Jednak, gdybym mógł po prostu skonfigurować Numpy do korzystania z Cublas, nie musiałbym niczego zmieniać w istniejącym kodzie (obecnie używa on '' numpy.dot() '' i innych funkcji Linealg z MKL lub GotoBlas2) i mógłbym to zrobić porównanie wydajności. Z czystej ciekawości: Czy przez przypadek wiesz, z przyczyn technicznych, dlaczego nie można połączyć numpy z CUBLAS? –

+1

Dzieje się tak dlatego, że interfejs API nie jest taki sam i istnieje cała warstwa zarządzania pamięcią, o której standardowa aplikacja blas nic nie wie. – talonmies

+1

To może zmienić sytuację: http://devblogs.nvidia.com/parallelforall/drop-in-acceleration-gnu-octave/ chociaż dotyczy to oktawy, to powinno działać również dla Numpy –

4

tutaj jest inna możliwość:

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

to w zasadzie środowisko gnumpy + cudamat które mogą być wykorzystane w celu wykorzystania GPU. również ten sam kod może być uruchamiany bez użycia gpu za pomocą npm. odnośnik powyżej, aby pobrać wszystkie te pliki.