2012-07-20 12 views
13

Numpy se puede "enlazar/compilar" contra diferentes implementaciones de BLAS (MKL, ACML, ATLAS, GotoBlas, etc.). No siempre es fácil de configurar, pero es posible.Numpy, BLAS y CUBLAS

¿También es posible "vincular/compilar" numpy contra la implementación CUBLAS de NVIDIA?
No pude encontrar ningún recurso en la web y antes de pasar demasiado tiempo probándolo, quería asegurarme de que fuera posible.

Respuesta

15

En una palabra: no, no puedes hacer eso.

Hay un scikit bastante bueno que proporciona acceso a CUBLAS desde scipy llamado scikits.cuda que está construido en la parte superior de PyCUDA. PyCUDA proporciona una clase similar a numpy.ndarray que permite la manipulación de matrices numpy en la memoria de la GPU con CUDA. Entonces puedes usar CUBLAS y CUDA con numpy, pero no puedes simplemente unir contra CUBLAS y esperar que funcione.

También hay una biblioteca comercial que proporciona la funcionalidad numpy y cublas y que tiene una interfaz de Python o enlaces, pero dejaré que uno de sus cómplices lo cuente.

+1

Gracias por la información. Sé sobre las diversas bibliotecas de Python que permiten el acceso a CUDA. Sin embargo, pensé que si solo pudiera configurar Numpy para usar Cublas, no tendría que cambiar nada en el código existente (actualmente usa '' numpy.dot() '' y otras funciones de Linealg con MKL o GotoBlas2) y podría hacerlo comparaciones de rendimiento. Solo por curiosidad: ¿sabes por casualidad cuáles son las razones técnicas por las que no es posible vincular el numpy con CUBLAS? –

+1

Se debe a que la API no es la misma, y ​​hay una capa completa de administración de memoria de la que una aplicación estándar de blas no sabe nada. – talonmies

+1

Esto podría cambiar la situación: http://devblogs.nvidia.com/parallelforall/drop-in-acceleration-gnu-octave/ aunque esto se aplica a la octava también debería funcionar para Numpy –

4

aquí es otra posibilidad:

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

esto es básicamente un entorno gnumpy + cudamat que se puede utilizar para aprovechar una GPU. también se puede ejecutar el mismo código sin el gpu usando npmat. consulte el enlace de arriba para descargar todos estos archivos.