Große Matrix Inversion
Ich betrachte die Umkehrung einer großen Matrix mit einer üblichen Größe von 1000 x 1000, überschreite jedoch manchmal 100000 x 100000 (was derzeit aufgrund von Zeit und Speicher fehlschlägt). Ich weiß, dass das normale Gefühl lautet: "Nimm nicht das Gegenteil, finde einen anderen Weg, es zu tun", aber das ist im Moment nicht möglich. Der Grund dafür liegt in der Verwendung von Software, die bereits erstellt wurde und erwartet, dass die Matrix invers wird. (Hinweis: Ich suche nach Möglichkeiten, dies zu ändern, aber das wird lange dauern.)
Momentan verwenden wir eine LU-Zerlegungsmethode aus numerischen Kopien, und ich bin gerade dabei, die Eigenbibliothek zu testen. Die Eigenbibliothek scheint stabiler und etwas schneller zu sein, aber ich bin noch in der Testphase für die Genauigkeit. Ich habe einen kurzen Blick auf andere Bibliotheken wie ATLAS und LAPACK geworfen, aber noch keine wesentlichen Tests mit diesen durchgeführt.
Es scheint, als ob die Eigenbibliothek keine gleichzeitigen Methoden verwendet, um die Inverse zu berechnen (obwohl dies für die LU-Faktorisierung ein Teil der Inverse ist), und soweit ich feststellen kann, sind ATLAS und LAPACK in dieser Einschränkung ähnlich. (Ich teste gerade die Geschwindigkeitsdifferenz für Eigen mit und ohne openMP.)
Die erste Frage ist, ob jemand erklären kann, wie es möglich wäre, die Matrixinversion durch Parallelisierung zu optimieren. Ich habe einen Artikel gefundenHier das spricht von Matrix Inversion Parallel Algorithmen, aber ich habe es nicht verstanden. Es scheintdiese Artikel spricht über eine andere Methode? Ich bin mir auch nicht sicher, ob scaLAPACK oder PETSc nützlich sind?
Zweite Frage, las ichdiese Artikel über die Verwendung der GPUs zur Steigerung der Leistung, aber ich habe nie für GPUs codiert und habe daher keine Ahnung, was zu vermitteln ist, aber die Charts unten sahen ziemlich alarmierend aus. Wie ist das überhaupt möglich und wie beginne ich damit, so etwas zu implementieren, wenn es wahr sein soll?
Habe ich auch gefundendiese Artikel, hatte noch die Zeit, durchzulesen, um zu verstehen, aber es scheint vielversprechend, wie Speicher ein aktuelles Problem mit unserer Software ist.
Alle Informationen über diese Artikel oder die Probleme im Allgemeinen wären von großer Hilfe. Und ich entschuldige mich noch einmal, wenn diese Frage vage erscheint, werde ich versuchen, sie bei Bedarf zu erweitern.