Efficient Matrix Inversion in CUDA

Ähnliche Dokumente
Algorithmen und Datenstrukturen (für ET/IT)

Algorithmen und Datenstrukturen (für ET/IT)

Lineare Gleichungssysteme: direkte Verfahren

3 Lineare Gleichungssysteme

4. Großübung. Lösung linearer Gleichungssysteme

Numerisches Programmieren, Übungen

LR Zerlegung. Michael Sagraloff

Numerisches Programmieren, Übungen

4. Übungsblatt zur Mathematik II für Inf, WInf

Matrixzerlegungen. 6. Vorlesung Numerische Methoden I. Clemens Brand. 2. April Nachträge und Wiederholung. Links-Rechts- Zerlegung

QR-Zerlegung Allgemeines. Householder-Spiegelung. Givens-Rotation. Gram-Schmidt-Orthogonalisierung. Fazit. QR-Zerlegung.

3 Matrizenrechnung. 3. November

Numerisches Programmieren, Übungen

Lineare Gleichungssysteme, LR-Zerlegung

bekannt: Eliminationsverfahren von Gauß Verfahren führt zu einer Zerlegung der Koeffizientenmatrix: A = LR A = LR

Numerische Lineare Algebra

Ökonometrische Analyse

2 Lineare Gleichungssysteme

2. Dezember Lineare Algebra II. Christian Ebert & Fritz Hamm. Skalarprodukt, Norm, Metrik. Matrizen. Lineare Abbildungen

Methode der kleinsten Quadrate

Kapitel 2: Lineare Gleichungssysteme

B - 8 Gauß - Elimination (1850) Lineare Systeme in zwei Variablen

Rechenaufwand der LR- und LDL T - Zerlegung

Numerik für Informatiker und Bioinformatiker. Daniel Weiß

Spezielle Matrixformen

Lineare Gleichungssysteme und Matrizen

Ferienkurs Mathematik für Physiker I Skript Teil 3 ( )

OpenCL (Cell B. E., PS3) Multicore Architectures and Programming

Lineares Gleichungssystem

Lineare Algebra 1. Roger Burkhardt

5 Lineare Gleichungssysteme und Determinanten

Matrizen. a12 a1. a11. a1n a 21. a 2 j. a 22. a 2n. A = (a i j ) (m, n) = i te Zeile. a i 1. a i 2. a i n. a i j. a m1 a m 2 a m j a m n] j te Spalte

In diesem Kapitel betrachten wir direkte Verfahren zur Lösung von linearen Gleichungssystemen.

Cramersche Regel. Satz Es sei A R n n eine quadratische Matrix mit det(a) 0. Für ein LGS Ax = b sei. A j := (a 1,...,a j 1,b,a j+1,...

D-INFK Lineare Algebra HS 2017 Özlem Imamoglu Olga Sorkine-Hornung. Serie 11

Basiswissen Matrizen

Lineare Gleichungssysteme

a ij i - te Gleichung (Zeile), i = 1, 2,3,..., m I) MATRIZEN Motivation: 1) Speichern geometrischer Daten: Punkte, Vektoren. 2) Lineare Gleichungen

I) MATRIZEN. 1) Speichern geometrischer Daten: Punkte, Vektoren. j - te Variable (Spalte), j = 1,2,3,..., n

1 Matrizenrechnung zweiter Teil

1 Einführung Gleichungen und 2 Unbekannte Gleichungen und 3 Unbekannte... 4

Dreiecksysteme und LR-Faktorzerlegung

4 Matrizenrechnung. Beide Operationen geschehen also koeffizientenweise. Daher übertragen sich die Rechenregeln von K(m n, k).

Matrizenoperationen mit FORTRAN

1 Lineare Algebra. 1.1 Matrizen und Vektoren. Slide 3. Matrizen. Eine Matrix ist ein rechteckiges Zahlenschema

Beginn der Vorlesung zur Numerik I (Wintersemester 2010/2011)

Teil I. Lineare Algebra I Vorlesung Sommersemester Olga Holtz. MA 378 Sprechstunde Fr und n.v.

Lineare Algebra. 5. Übungsstunde. Steven Battilana. battilana.uk/teaching

Inverse der Verwandtschaftsmatrix

a ij i - te Gleichung (Zeile), i = 1,2,3,..., m

Hilfsblätter Lineare Algebra

Kurzform. Choleskyzerlegung. Julia Hoeboer. 13. Mai 2011

= 9 10 k = 10

Rückwärts-Einsetzen. Bei einem linearen Gleichungssystem in oberer Dreiecksform, nacheinander bestimmt werden: r n,n x n = b n. = x n = b n /r n,n

Cramersche Regel. Satz 2.26

Lineare Gleichungen. Mathematik-Repetitorium. 3.1 Eine Unbekannte. 3.2 Zwei oder drei Unbekannte. 3.3 Allgemeine lineare Gleichungssysteme

Nur Matrizen gleicher Dimension können addiert oder subtrahiert werden. Zur Berechnung werden zwei Matrizen A und B in den Matrix-Editor eingegeben.

Gliederung. Links-Rechts-Zerlegung Elimination faktorisiert A = L R. Determinante Inverse. Kleinste Quadrate. Lösung durch. Links-Rechts- Zerlegung

Numerische Lineare Algebra Spezielle Systeme

CUDA. Jürgen Pröll. Multi-Core Architectures and Programming. Friedrich-Alexander-Universität Erlangen-Nürnberg Jürgen Pröll 1

Dreiecksmatrizen. Die Treppennormalform

Mathematik IT 2 (Lineare Algebra)

Numerik I. Universität zu Köln SS 2009 Mathematisches Institut Prof. Dr. C. Tischendorf Dr. M. Selva,

FH Gießen-Friedberg, FB 06 (MNI) Skript 8 Mathematik 1 für KMUB 5./7. November 2008 Prof. Dr. H.-R. Metz. Matrizen 1. a m1 a m2 a m3 a mn

Algorithmen für die Speicherhierarchie

Lineare Algebra I (WS 12/13)

4.6 Berechnung von Eigenwerten

Tutorium: Analysis und Lineare Algebra

BC 1.2 Mathematik WS 2016/17. BC 1.2 Mathematik Zusammenfassung Kapitel II: Vektoralgebra und lineare Algebra. b 2

Lineare Algebra. Teil III. Inhaltsangabe

Schriftlicher Test zu C (90 Minuten) VU Einführung ins Programmieren für TM. 1. Oktober 2012

Lösung 5: Gram-Schmidt Orthogonalisierung, adjungierte Abbildungen

Musterlösungen Blatt Mathematischer Vorkurs. Sommersemester Dr. O. Zobay. Matrizen

37 Gauß-Algorithmus und lineare Gleichungssysteme

Matrizen, Determinanten, lineare Gleichungssysteme

Einführung in numerische Methoden für Ingenieure (nach A. Quarteroni, F. Saleri: Wissenschaftliches Rechnen mit MATLAB)

3 Lineare Algebra Vektorräume

Corinne Schenka Vorkurs Mathematik WiSe 2012/13

Lineare Gleichungssysteme Seite 98. Spaltenorientiert. Zeilenorientiert. 1. Vorgegeben: 1 kg Mehl, 2 kg Zucker

Wirtschaftsmathematik Plus für International Management (BA) und Betriebswirtschaft (BA)

Lineare Algebra und Numerische Mathematik für D-BAUG. Serie 6

Matrix-Algorithmen Matrixmultiplikation Allgemeiner Matrizen

13. ABBILDUNGEN EUKLIDISCHEN VEKTORRÄUMEN

IV. Matrizenrechnung. Gliederung. I. Motivation. Lesen mathematischer Symbole. III. Wissenschaftliche Argumentation. i. Rechenoperationen mit Matrizen

Serie 5. Lineare Algebra D-MATH, HS Prof. Richard Pink. 1. [Aufgabe] Invertieren Sie folgende Matrizen über Q:

Erweiterungen der LR-Zerlegung

Matrix- Algorithmen Householder- und Givens- Matrizen

a 11 a 12 a 1(m 1) a 1m a n1 a n2 a n(m 1) a nm Matrizen Betrachten wir das nachfolgende Rechteckschema:

Lineare Algebra I (WS 12/13)

Entwurf eines FPGA-Cores zur Simulationsbeschleunigung zeitkontinuierlicher Modelle im HiL Kontext

3 Matrizen und Lineare Gleichungssysteme

Lineare Algebra für D-ITET, D-MATL, RW. Beispiellösung für Serie 10. Aufgabe ETH Zürich D-MATH. Herbstsemester Dr. V. Gradinaru D.

Kapitel 2. Matrixalgebra. Josef Leydold Mathematik für VW WS 2017/18 2 Matrixalgebra 1 / 49

Kapitel 2. Matrixalgebra. Josef Leydold Mathematik für VW WS 2017/18 2 Matrixalgebra 1 / 49

Matrixalgebra. Kapitel 2. Ein sehr einfaches Leontief-Modell. Matrix. Ein sehr einfaches Leontief-Modell. Vektor. Spezielle Matrizen I

Lektion 3. 1 Theorie. NTS1-P Natur, Technik und Systeme 1 Praktikum Herbstsemester 2012

Blockmatrizen und -Algorithmen

VF-2: 2. Es seien x = 1 3 und y = π Bei der Berechnung von sin(x) sin(y) in M(10, 12, 99, 99) tritt. Auslöschung auf.

Transkript:

Seminar Multicore Architectures and Programming 08 am Lehrstuhl Informatik 12, Hardware-Software-Co-Design Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider Friedrich-Alexander Universität Erlangen-Nürnberg 11.07.2008 Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 1 / 34

Outline Outline 1 Motivation Problemstellung 2 Ansätze Gauss-Elimination Bordering Cholesky-Zerlegung QR-Zerlegung SART 3 Fazit Zusammenfassung Alternativen Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 2 / 34

Outline Motivation 1 Motivation Problemstellung 2 Ansätze 3 Fazit Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 3 / 34

Matrixinversion Motivation Problemstellung Das Problem Zu lösen: Mehrere Gleichungssysteme der Form A x = b mit verschiedenen rechten Seiten Idee: Berechne Inverse A 1 : danach nur noch Matrix-Vektor-Multiplikation: x = A 1 b. Allgemein: Berechnung von Matrix-Inversen numerisch sehr bedenklich - für uns aber nebensächlich. Beschränkung auf relativ kleine Matrizen (A C 64 64...256 256 ). Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 4 / 34

Outline Ansätze 1 Motivation 2 Ansätze Gauss-Elimination Bordering Cholesky-Zerlegung QR-Zerlegung SART 3 Fazit Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 5 / 34

Ansätze Gauss-Eliminationsverfahren Gauss-Elimination Eliminationsverfahren von Gauss-Jordan Schema zu Beginn: (A I), nach Gauss-Verfahren: ( I A 1). a 1,1 a 1,2... a 1,n A = a 2,1 a 2,2........ a n,1... a n,n Durch Operationen auf ganzen Zeilen: Für alle Spalten: jeweils nur Diagonaleintrag belassen, in allen anderen Zeilen 0en erzeugen Rechenaufwand O(n 3 ), Operationen auf Zeilen der Breite 128 - sollte sich doch super eignen? keine Pivotisierung (verbessert zwar numerische Stabilität, aber schwerer parallelisierbar) Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 6 / 34

Ansätze Gauss-Eliminationsverfahren Gauss-Elimination Naive Implementierung Nur global memory Nur ein thread block - jeder der 128 threads für eine Spalte zuständig: 1 Iteriere über alle Zeilen: 2 Teile alle Einträge der aktuellen Zeile i durch das Diagonalelement a i,i (Normalisierung) 3 Iteriere über alle Zeilen j i: 4 Subtrahiere das a j,i -fache der Zeile i von Zeile j, um in der Spalte i eine 0 zu erzeugen Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 7 / 34

Naive Implementierung Ansätze Gauss-Elimination Performance Natürlich extrem langsam Speicherzugriffe zwar coalesced, aber pro Spaltenupdate muss die komplette Matrix eingelesen und wieder in den Speicher geschrieben werden. Lösung: na klar, Shared Memory! Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 8 / 34

Ansätze Gauss-Eliminationsverfahren Gauss-Elimination Bessere Implementierung Implementierung mit Shared Memory Speicherbedarf: 128 128 Komplexzahlen (2 4 Byte). viel zu viel :( Dann laden wir eben nur eine Kachel oder wenige Zeilen/Spalten und diagonalisieren erstmal die. Und wann werden die 0en in den anderen Zeilen erzeugt? Dafür braucht man die (normalisierte) Referenz-Zeile bzw. Koeffizienten der Subtraktion. Keine Möglichkeit zu inter-block Synchronisation bzw. Broadcast Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 9 / 34

Ansätze Gauss-Eliminationsverfahren Gauss-Elimination Bessere Implementierung Implementierung mit Shared Memory Speicherbedarf: 128 128 Komplexzahlen (2 4 Byte). viel zu viel :( Dann laden wir eben nur eine Kachel oder wenige Zeilen/Spalten und diagonalisieren erstmal die. Und wann werden die 0en in den anderen Zeilen erzeugt? Dafür braucht man die (normalisierte) Referenz-Zeile bzw. Koeffizienten der Subtraktion. Keine Möglichkeit zu inter-block Synchronisation bzw. Broadcast Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 9 / 34

Ansätze Gauss-Eliminationsverfahren Gauss-Elimination Bessere Implementierung Implementierung mit Shared Memory Speicherbedarf: 128 128 Komplexzahlen (2 4 Byte). viel zu viel :( Dann laden wir eben nur eine Kachel oder wenige Zeilen/Spalten und diagonalisieren erstmal die. Und wann werden die 0en in den anderen Zeilen erzeugt? Dafür braucht man die (normalisierte) Referenz-Zeile bzw. Koeffizienten der Subtraktion. Keine Möglichkeit zu inter-block Synchronisation bzw. Broadcast Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 9 / 34

Ansätze Gauss-Eliminationsverfahren Gauss-Elimination Bessere Implementierung Implementierung mit Shared Memory Speicherbedarf: 128 128 Komplexzahlen (2 4 Byte). viel zu viel :( Dann laden wir eben nur eine Kachel oder wenige Zeilen/Spalten und diagonalisieren erstmal die. Und wann werden die 0en in den anderen Zeilen erzeugt? Dafür braucht man die (normalisierte) Referenz-Zeile bzw. Koeffizienten der Subtraktion. Keine Möglichkeit zu inter-block Synchronisation bzw. Broadcast Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 9 / 34

Ansätze Gauss-Eliminationsverfahren Gauss-Elimination Bessere Implementierung Shared Memory nur eingeschränkt nutzbar: 1 Lade Source -Zeile i in Shared Memory R (1 KB) 2 Teile Zeile i durch a i,i 3 Lade nacheinander alle Target -Zeilen j, j i in Shared Memory S (1 KB) 4 Subtrahiere a j,i -faches der Zeile R von S 5 Schreibe S wieder zurück in globalen Speicher Optimierung: in-place, daher Speicherbedarf für eine Matrix-Zeile nur 128, aber benötigt aber eine zusätzliche Spalte mit Koeffizienten im Shared Memory. Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 10 / 34

Ansätze Elimination mit Shared Memory Gauss-Elimination Performance Nur geringfügig besser als naiver Ansatz Für 100 parallele Inversionen gleichzeitig: Knapp 5mal langsamer als unoptimierte Elimination auf CPU. Praktisch keine Kommunikation zwischen den Threads innerhalb eines Blocks Berechnung von 1 a i,i, mit dem jeder Thread seinen Wert multipliziert: Müsste eigentlich nicht jeder Thread selbst machen, aber branch würde sonst divergieren. Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 11 / 34

Bordering Methode Ansätze Bordering Konzept Angenommen, die Inverse einer (k 1) (k 1) Matrix A k 1 ist bekannt Dann lässt sich daraus die Inverse der k k Matrix A k berechnen, die man erhält, wenn man A k 1 um eine Zeile/Spalte ergänzt. Beginne mit k = 1: A 1 = ( ) ( a 1,1 ; A 1 1 = 1 a 1,1 ). Konstruiere daraus A 1 2, usw. bis A 1 k. Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 12 / 34

Bordering Schema Ansätze Bordering Rekursive bzw. iterative Rechenvorschrift A k 1 A k = v T u ; a k,k A 1 k = A 1 k 1 0 T 0 0 + p k 1 u ( v T A 1 k 1 1 ), 1 A 1 mit p = p k = (a kk v T A 1 k 1 u) 1. Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 13 / 34

Bordering Ansätze Bordering Analyse A 1 k = A 1 k 1 0 T 0 0 + p k 1 u ( v T A 1 k 1 1 ) 1 A 1 p = p k = (a kk v T A 1 k 1 u) 1. Eigentlich nur lineare Algebra (Matrix-Addition, Matrix-Vektor / Vektor-Vektor Multiplikationen) - lässt sich i.a. gut parallelisieren Problem: Dimensionen zwischen 1 und 128 - da lohnt sich kein CUBLAS-Aufruf. Operationen mit Vektoren, deren Länge nicht ein Vielfaches von 32 ist, meist ineffizient. Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 14 / 34

Cholesky-Zerlegung Ansätze Cholesky-Zerlegung Übersicht Spezialfall der LU-Zerlegung Faktorisierungsmethode für symmetrisch positiv definite Matrizen A = L L H L: untere Dreiecksmatrix Lösung von A x = b erhält man durch je einmal vorwärts (1) und rückwärts (2) einsetzen 1 L y = b 2 L H x = y (ohne explizite Berechnung der Inversen!) Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 15 / 34

Cholesky-Zerlegung Ansätze Cholesky-Zerlegung Input: X C n n transponiert komplexe Matrix // i n i t L w i t h l o w e r l e f t p a r t o f X L=z e r o s ( n ) ; f o r i =1:n L ( i : n, i )=X( i : n, i ) ; end f o r k=1:n // n o r m a l i z e k$ ˆ{\ t e x t i t { th }}$ column $$L ( k : n, k)=l ( k : n, k )/ s q r t ( L ( k, k ) ) ; // o u t e r p r o d u c t i t e r a t i o n f o r i =(k +1): n L ( i : n, i )=L ( i : n, i ) L ( i, k ) L ( i : n, k ) ; end end Output: L C n n untere Dreiecksmatrix mit X = L L H Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 16 / 34

Cholesky-Zerlegung Ansätze Cholesky-Zerlegung Feststellungen & Probleme: Äußeres Produkt in k-ter Iteration verändert alle Einträge des unteren Dreiecks in den verbleibenden Spalte k + 1 - n Berechnung des äußeren Produkts benötigt normalisierte Einträge der k-ten Spalte Äußere for-schleife lässt sich also nicht parallelisieren Lösung: Parallelisierung der Normalisierung und des äußeren Produkts mit Kernel auf 1 1-Grid Multiprozessoren der Hardware alles andere als ausgelastet Schlechte Lösung Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 17 / 34

Cholesky-Zerlegung Ansätze Cholesky-Zerlegung Feststellungen & Probleme: Äußeres Produkt in k-ter Iteration verändert alle Einträge des unteren Dreiecks in den verbleibenden Spalte k + 1 - n Berechnung des äußeren Produkts benötigt normalisierte Einträge der k-ten Spalte Äußere for-schleife lässt sich also nicht parallelisieren Lösung: Parallelisierung der Normalisierung und des äußeren Produkts mit Kernel auf 1 1-Grid Multiprozessoren der Hardware alles andere als ausgelastet Schlechte Lösung Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 17 / 34

QR-Zerlegung Ansätze QR-Zerlegung Übersicht Faktorisierungsmethode A = Q R Q: orthonormale Matrix, R: obere Dreiecksmatrix Lösung von A x = b erhält man durch rückwärts einsetzen R x = Q T b (ohne explizite Berechnung der Inversen!) Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 18 / 34

QR-Zerlegung Ansätze QR-Zerlegung Der Weg zur Faktorisierung (Numerical Recipes) Sukzessive Erzeugung von Nulleinträgen unterhalb der Diagonale durch geeignete Householderspiegelungen A (0) = A C m n A (k+1) = Q (k) A (k) A (k) besitzt in den ersten k Spalten nur Nulleinträge unterhalb der Diagonale (i, j) : j < k j < i = a (k) i,j = 0 A (n) ist also obere Dreiecksmatrix mit A (n) }{{} R = Q (n 1)... Q (1) Q }{{ (0) A } Q T Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 19 / 34

QR-Zerlegung Ansätze QR-Zerlegung Die Q-Matrix erhält man also als Produkt von insgesamt n Matrizen Q (i) : A (n) }{{} R = Q (n 1)... Q (1) Q }{{ (0) A } Q T Problem: Berechnung der Matrixprodukte übersteigt Berechnungszeit für vollständige Invertierung auf CPU Berechnungszeiten für das Aufstellen der Q (i) und das rückwärts einsetzen dabei noch vollkommen unberücksichtigt Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 20 / 34

Ansätze SART Simultaneous Algebraic Reconstruction (SART) Gleichungssysteme mal anders... Verfahren zum Lösen von Gleichungssystem A x = b Jede Gleichung definiert Hyperebene H i mit Normale a i : a i x = b i Lösung = Schnitt der Hyperebenen ˆx = N a 1 i=0 H i Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 21 / 34

Ansätze SART Simultaneous Algebraic Reconstruction (SART) Lösungsansatz 1 Initialisierung des Lösungsvektors ˆx (0) 2 Orthogonale Projektion auf alle Hyperebenen 3 Berechnung der neuen Schätzung aus projizierten Vektoren (z.b. Mittelwert) N a 1 ˆx (k+1) = ˆx (k) + λ k N a 1 i=0 i=0 u k,i = 1 u k,i bi ai T ˆx (k) ai T a i a i λ k : Relaxationsparameter Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 22 / 34

Ansätze SART Simultaneous Algebraic Reconstruction (SART) Abbildung: SART-Iterationsschema mit u i,k = 1/N a und λ = 1. Quelle: Skript zur Vorlesung Digital Medical Image Processing (LME) Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 23 / 34

Ansätze SART Simultaneous Algebraic Reconstruction (SART) Vereinfachtes Schema: ˆx (k+1) = ˆx (k) + 1 N a 1 N a i=0 b i a T i ˆx (k) a T i a i a i Parallelisierung (Versuch 1) 1 Jeder Thread berechnet die Projektion von x (k) auf eine Hyperebene H TID. 2 Synchronisation 3 Berechnung des neuen Schätzwertes x (k+1) aus Projektionen 4 Wiederholen der Schritte 1 bis 3 bis Konvergenz bzw. maximale Iterationsanzahl erreicht Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 24 / 34

Ansätze SART Simultaneous Algebraic Reconstruction (SART) Vereinfachtes Schema: ˆx (k+1) = ˆx (k) + 1 N a 1 N a i=0 b i a T i ˆx (k) a T i a i a i Parallelisierung (Versuch 1) Probleme: nur ein aktiver Block (VIEL zu wenig) Threads vollkommen überlastet (Skalarprodukte als for-loop) Lösung: Verteilung der Arbeit auf mehrere Blöcke Skalarprodukte parallel mit mehreren Threads berechnen Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 25 / 34

Ansätze SART Simultaneous Algebraic Reconstruction (SART) Vereinfachtes Schema: ˆx (k+1) = ˆx (k) + 1 N a 1 N a i=0 b i a T i ˆx (k) a T i a i a i Parallelisierung (Versuch 2) Jeder Block berechnet die Projektion von x (k) auf eine Hyperebene H BID. Synchronisation Berechnung des neuen Schätzwerts x (k+1) aus Projektionen Wiederholen der Schritte 1 bis 3 bis Konvergenz bzw. maximale Iterationsanzahl erreicht Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 26 / 34

Ansätze SART Simultaneous Algebraic Reconstruction (SART) Vereinfachtes Schema: ˆx (k+1) = ˆx (k) + 1 N a 1 N a i=0 b i a T i ˆx (k) a T i a i a i Parallelisierung (Versuch 2) Problem: Synchronisation über Blockgrenzen hinweg nicht möglich Lösung: Manuelle Synchronisation über Kernelaufrufe Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 27 / 34

Ansätze SART Simultaneous Algebraic Reconstruction (SART) Zu früh gefreut: Auch nichts tun kostet Zeit... Problem: Lösung: Jede Iteration erfordert mindestens zwei Kernelaufrufe Mehrere hundert Iterationen benötigt für akzeptable Lösung Aufrufzeit von sinnfreien, leeren Kernels (leerer Rumpf, keine Argumente, kein shared memory) übersteigt bereits die Zeit für komplette Invertierung auf CPU CPU-Ansatz =) Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 28 / 34

Outline Fazit 1 Motivation 2 Ansätze 3 Fazit Zusammenfassung Alternativen Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 29 / 34

Fazit Zusammenfassung Das hätten wir gebraucht Gauss-Elimination: Schnellerer / breiterer globaler Speicherbus Mehr Shared Memory Globale Synchronisation Bordering: Effiziente lineare Algebra mit kleinen Vektoren beliebiger Länge SART: Schnellerer / breiterer globaler Speicherbus Globale Synchronisation Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 30 / 34

Alternativen Fazit Alternativen Matrix-Invertierung allgemein kleinere Matrizen: passen in den Shared Memory grössere Matrizen: Aufwand für Zerlegung lohnt sich (Cholesky auf Tesla: ca. 75 GFLOPs bei 5000 5000) in der Literatur: Matrix-Dimensionen in Timing-Diagrammen beginnen meist erst bei 500-1000... [3, 1] LU-Zerlegung: Bei ausreichenden Dimensionen 2x schneller als auf CPU [3], Pivotisierung bremst etwas Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 31 / 34

Fragen? Vielen Dank für die Aufmerksamkeit! Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 32 / 34

Literatur & Quellen M. C. Pease, Matrix Inversion Using Parallel Processing, Journal of the Association for Computing Machinery, Vol. 13, No. 4, October 1967, pp. 757-764 Press, W.H., S.A. Teukolsky, W.T. Vetterling, and B.P. Flannery, Numerical Recipes in C: The Art of Scientific Computing, 2nd ed., Cambridge Univ. Press, New York, 1992, pp.98-102. N. Galoppo, N. K. Govindaraju, M. Henson, D. Manocha, LU-GPU: Efficient Algorithms for Solving Dense Linear Systems on Graphics Hardware, November 2005, SC 05: Proceedings of the 2005 ACM/IEEE conference on Supercomputing Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 33 / 34

Literatur & Quellen M. Castillo et al., Making Programming Synonymous with Programming for Linear Algebra Libraries, SC08, Austin, Texas, November 2008. G. H. Golub and Ch. F. Van Loan, Matrix Computations, The Johns Hopkins University Press, Baltimore and London, 3 edition, 1996. A.C. Kak and M. Slaney, Principles of Computerized Tomographic Imaging, IEEE Press, 1988. Efficient Matrix Inversion in CUDA Robert Grimm, Matthias Schneider 34 / 34