Ich habe ein Problem, bei dem ich alle positiven (wie im Eigenwert positiv ist) Eigenpaare einer kleinen (normalerweise kleiner als 60x60) unsymmetrischen Matrix finden muss. Ich kann aufhören zu berechnen, wenn der Eigenwert kleiner als ein bestimmter Schwellenwert ist. Ich weiß, dass die Eigenwerte real sind. Irgendwelche Vorschläge zu Algorithmen, mit denen ich versuchen könnte, die beste Leistung herauszuholen? Ich muss mehrere tausend dieser Zerlegungen durchführen, daher ist Geschwindigkeit wichtig.
Danke im Voraus.
EDIT: Ich muss dies auf der GPU im Shared Memory tun. Die Matrizen sind auch nicht unbedingt gleich groß. Im Moment sind mir keine Bibliotheken bekannt, die dies tun. Vorschläge von Algorithmen, die für das Problem gut geeignet wären, wären willkommen.
quelle
Antworten:
Ohne viel zu suchen empfehle ich Ihnen, sich die MAGMA- Bibliothek anzusehen . Frei verfügbarer Code mit kontinuierlicher Unterstützung. NVIDIA erkannte MAGMA als "Durchbruch bei Lösern für Eigenwertprobleme" an.
Es gibt auch eine CULA- Bibliothek, bei der es sich im Allgemeinen um ein kommerzielles Produkt handelt, obwohl sie kürzlich für den akademischen Gebrauch kostenlos zur Verfügung gestellt wurde (siehe Details hier ).
quelle
Verwenden Sie die Funktionen in LAPACK. Es ist unwahrscheinlich, dass Sie sie in Ihrer eigenen Implementierung übertreffen können.
quelle