2013-01-28 10 views
6

Ich muss eine Matrix-Multiplikation auf GPU mit CUDA für große Matrizen implementieren. Die Größe jeder einzelnen Matrix ist größer als der GPU-Speicher. Also ich denke, ich brauche einen Algorithmus, um das effizient zu machen. Ich ging im Internet herum, konnte aber keine finden. Kann jemand mir den Namen oder die Verbindung solcher Algorithmen geben.Große Matrix-Multiplikation auf GPU

Danke

+1

Wie wäre es, die Matrizen einfach zu teilen? '[A0; A1] * [B0 B1] = [A0 * B0 A0 * B1; A1 * B0 A1 * B1] '? Das ist vielleicht ein guter Anfang. – kangshiyin

Antwort

13

Es ist nicht wirklich ein formaler Algorithmus dafür ist; Im Allgemeinen werden diese Arten von Operationen der linearen Algebra, bei denen das gesamte Problem nicht gleichzeitig im Speicher gespeichert wird, als "out of core" -Operationen bezeichnet.

Um es zu lösen, brauchen Sie keinen besonders aufwendigen Algorithmus, nur die CUBLAS-Bibliothek und einen Stift und Papier. Zum Beispiel können Sie die Matrix Produkt wie dieses zersetzen:

enter image description here

, die Sie vier unabhängige Untermatrixmultiplikation Operationen gibt. Diese können mit vier Aufrufen von CUBLAS gemm unter Verwendung eines sehr einfachen Host-Codes berechnet werden. Sie können die Idee auf so viele Submatrizen erweitern, wie Sie benötigen, um die Problemgröße und die GPU-Kapazität zu erreichen. Das gleiche Prinzip kann auch verwendet werden, um Matrixmultiplikationsprobleme auf mehreren GPUs zu implementieren (siehe this question als Beispiel).

Als Alternative können Sie eine funktionierende Umsetzung dieser genauen Vorstellung in dem Harvard entwickelte SciGPU-GEMM Code-Basis und in dem HPL-CUDA linpack Implementierung finden (Disclaimer: Ich mit dieser Code-Basis angeschlossen bin).

+0

+1. Woher kam die Zersetzung? Große Antwort natürlich! – Rekin

+1

@Rekin: Ich verstehe nicht, was Sie fragen. Die Mathematik dafür kam von meinem Kopf und das Bild, das du siehst, wurde in LaTeX zu einem Gif von mir gerendert und auf den SO-Image-Hosting-Service hochgeladen. – talonmies

+0

Entschuldigung, ich bezog mich auf die mathematische Formel. Ich nahm vor einiger Zeit eine Algebra-Klasse und das Thema der großen Matrix-Multiplikation wurde als eines der am schwierigsten zu lösenden Probleme dargestellt. Es hat mich mit dem falschen Gefühl verlassen, dass es nicht möglich war. – Rekin