2013-01-28 23 views
6

Devo implementare una moltiplicazione di matrici su GPU con CUDA per matrici di grandi dimensioni. La dimensione di ciascuna matrice è maggiore della memoria della GPU. Quindi penso di aver bisogno di un algoritmo per farlo in modo efficiente. Sono andato in giro per internet ma non sono riuscito a trovarne. Qualcuno può darmi il nome o il collegamento di tali algoritmi.Grande moltiplicazione matrice su gpu

Grazie

+1

Che dire semplicemente dividere le matrici come '[A0; A1] * [B0 B1] = [A0 * B0 A0 * B1; A1 * B0 A1 * B1] '? Quello potrebbe essere un buon inizio. – kangshiyin

risposta

13

non c'è davvero un algoritmo formale per questo; in generale, questi tipi di operazioni di algebra lineare in cui l'intero problema non è memorizzato simultaneamente nella memoria sono indicati come operazioni "fuori dal core".

Per risolverlo, non è necessario un algoritmo particolarmente elaborato, solo la libreria CUBLAS e una matita e carta. Ad esempio, è possibile scomporre il prodotto questa matrice:

enter image description here

che vi dà quattro operazioni indipendenti moltiplicazione sub-matrice. Questi possono essere calcolati usando quattro chiamate a gemm CUBLAS usando un codice host molto semplice. È possibile estendere l'idea a tutte le sottomatrici necessarie per far corrispondere la dimensione del problema e la capacità della GPU. Lo stesso principio può essere utilizzato anche per implementare problemi di moltiplicazione della matrice su più GPU (vedere this question per un esempio). In alternativa, è possibile trovare un'implementazione funzionante di questa idea precisa nella base di codici sviluppata da Harvard SciGPU-GEMM e nell'implementazione di linpack HPL-CUDA (dichiarazione di non responsabilità: sono affiliato con quest'ultima base di codice).

+0

+1. Da dove viene la decomposizione? Ottima risposta ovviamente! – Rekin

+1

@Rekin: Non capisco cosa stai chiedendo. La matematica per questo è venuta dalla mia testa e l'immagine che vedete è stata renderizzata in LaTeX in una gif da me e caricata nel servizio di hosting di immagini SO. – talonmies

+0

Scusa, mi riferivo alla formula matematica. Ho preso una lezione di algebra qualche tempo fa e il grande argomento multiplo della matrice è stato presentato come uno dei più problematici da risolvere computazionalmente. Mi ha lasciato la falsa sensazione che non fosse possibile. – Rekin

Problemi correlati