Lineares Gleichungssystem lösen
-
Ich suche eine Bibliothek, welche es mir ermöglicht, größere lineare Gleichungssysteme schnell zu lösen (600*600).
Da die Matrizen symmetrisch und positiv definit sind, würde ich mir eine Cholesky-Zerlegung wünschen.
Was ich mir bereits angesehen habe:
Lapack++ : Soll recht schlecht implementiert sein und ich bin auch nicht sicher ob
das noch entwickelt wird. Hier steht nocvh ein wenig darüber http://www.crystalclearsoftware.com/cgi-bin/boost_wiki/wiki.pl?Linear_Algebra_With_UBLASEigen : Sieht recht vernünftig aus, bin aber durch http://forum.kde.org/viewtopic.php?f=74&t=33741
etwas verunsichert.Boost.uBlas:- Bindings:
Im ersten Link steht ja schon, dass es gewisse Bindings für boost gibt. Das klingt sehr interessant. Leider finde ich nichts "offizielles" dazu.
Wenn jmd Erfahrung damit hat, würde ich diese gerne teilen.Zu den Bedingungen: Mein Chef möchte wenn möglich, dass Lapack verwendet wird. Ich möchte eine Bibliothek nutzen, welche stabil ist, möglichst verfügbar ist (zB Debian-Repositories) und gut gepflegt wird.
Meine Bibliothek der Wahl muss also im Vergleich zu Lapack++ halbwegs gut abschneiden, sonst akzeptiert die Chefetage das nicht.Danke, Gerolf
-
Wie wär's mit eigen?
-
gerolf h schrieb:
Eigen : Sieht recht vernünftig aus, bin aber durch http://forum.kde.org/viewtopic.php?f=74&t=33741
etwas verunsichert.Das ist von 2009, vielleicht hat sich ja bis jetzt etwas getan.
-
Bei der Cholesky-Zerlegung hat sich ne Menge getan
http://eigen.tuxfamily.org/index.php?title=Benchmark
Eigen ist performancemäßig momentan wohl schwer zu schlagen. Aber beim Lösen von linearen Gleichungssystemen sind alle optimierten Bibliotheken ähnlich gut.
-
gerolf h schrieb:
Zu den Bedingungen: Mein Chef möchte wenn möglich, dass Lapack verwendet wird.
Das ist am sinnvollsten, und zwar die Version mit C Interface und nicht die C++ Version verwenden. Von Intel gibt es die MKL, welche eine hoch effiziente Implementierung enthält. Die ist momentan am schnellsten und unterstützt auch OpenMP Multithreading.