2012-07-20 7 views
13

Numpy può essere "collegato/compilato" con diverse implementazioni BLAS (MKL, ACML, ATLAS, GotoBlas, ecc.). Non è sempre semplice da configurare, ma è possibile.Numpy, BLAS e CUBLAS

È anche possibile "collegare/compilare" numpy con l'implementazione CUBLAS di NVIDIA?
Non sono riuscito a trovare alcuna risorsa nel web e prima di passare troppo tempo a provarlo volevo assicurarmi che fosse possibile.

risposta

15

In una parola: no, non puoi farlo.

C'è uno scikit piuttosto buono che fornisce l'accesso a CUBLAS da scipy chiamato scikits.cuda che viene costruito sopra PyCUDA. PyCUDA fornisce una classe simile a numpy.ndarray che consente senza problemi la manipolazione di array di numpy nella memoria della GPU con CUDA. Quindi puoi usare CUBLAS e CUDA con numpy, ma non puoi semplicemente collegarti a CUBLAS e aspettarti che funzioni.

Esiste anche una libreria commerciale che fornisce funzionalità di tipo numpy e cublas e che ha un'interfaccia o collegamenti Python, ma lascerò ad uno dei loro scatti per riempirvi di quello.

+1

Grazie per le informazioni. Conosco le varie librerie Python che consentono l'accesso a CUDA. Tuttavia, se potessi semplicemente configurare Numpy per usare Cublas, non dovrei cambiare nulla nel codice esistente (al momento usa '' numpy.dot() '' e altre funzioni di Linealg con MKL o GotoBlas2) e potrei fare confronti delle prestazioni. Solo per curiosità: sai per caso quali sono le ragioni tecniche per cui non è possibile collegare numpy a CUBLAS? –

+1

È perché l'API non è la stessa, e c'è un intero livello di gestione della memoria che un'applicazione standard blas non sa nulla. – talonmies

+1

Questo potrebbe cambiare la situazione: http://devblogs.nvidia.com/parallelforall/drop-in-acceleration-gnu-octave/ anche se questo vale per l'ottava dovrebbe funzionare anche per Numpy –

4

ecco un'altra possibilità:

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

questo è fondamentalmente un ambiente gnumpy + cudamat che può essere utilizzato per sfruttare una GPU. anche lo stesso codice può essere eseguito senza gpu usando npmat. fare riferimento al link sopra per scaricare tutti questi file.