Frage

Ich habe ein Projekt in C # geschrieben, wo ich verschiedene lineare algebraische Operationen auf Matrizen (wie LU-Faktorisierung).

tun muß

Da das Programm ist in erster Linie ein Prototyp erstellt, eine Theorie zu bestätigen, eine C # -Implementierung genügt (im Vergleich zu einem möglicherweise schnellerer C ++ ein), aber ich würde immer noch wie eine gute BLAS oder LAPACK-Bibliothek verfügbar mir einige Codierung zu speichern.

Lange Rede kurzer Sinn, kann jemand eine freien / Open-Source-BLAS oder LAPACK-Bibliothek für die Verwendung mit .net empfehlen?

Mit freundlichen Grüßen Egil.

Update: Gefunden Math.NET Numerik heute, sieht interessant, jemand mit, dass keine Erfahrung

War es hilfreich?

Lösung

AMDs ACML ist ein kostenlos herunterladen, aber es ist binär, nicht nur Open Source, und nativen Code, nicht .NET.

Die Leistung ist im Allgemeinen besser als die Netlib.org Code, und in der Regel in etwa die gleiche wie Intels MKL -., Die nicht frei IIRC ist

Der Download enthält ein Beispiel, das zeigt, wie es in C # zu binden. Nicht anders als andere C oder C ++ Bibliothek von C # aufrufen.

In der Bibliothek implementiert BLAS, LAPACK, FFTs und RNGs.

http://developer.amd.com/cpu/ Bibliotheken / ACML / downloads / pages / default.aspx

EDIT reagieren KOMMENTAR:

Auf einem Intel-CPU, AMD ACML wird durchführen ungefähr sowie Intels MKL, aber es hängt von dem Algorithmus, Matrixgrößen, Anzahl der Kerne, Speichertopologie und Geschwindigkeit, etc. etc. etc. variieren. Leistung kann. Der einzige Weg, um sicher zu sagen, ist Ihre eigene Benchmark laufen. In einigen Fällen ist ACML schneller als MKL auch auf Itel Hardware.

Entweder man wird deutlich schneller als jede „naive“ Implementierung für groß Matrices. Beide sind architected mehrere Threads auf Multicore-Prozessoren zu verwenden, und haben hand gezwickt Assemblersprache Kerne und eine Menge Tuning für die Cache-Verhalten auf verschiedenen Maschinen.

klein Matrizes, die Leistung ist in der Regel ein unbeacht, da jede moderne CPU eine kleine matix in nur wenige Millisekunden lösen kann, selbst den einfachsten Code. In diesem Fall verwenden Sie nur eine Bibliothek Schreiben und Debugging-Code zu vermeiden, die bereits mehrere hundert Mal geschrieben wurde.

Andere Tipps

Die Mathematik-Bibliothek DotNumerics ist frei / Open-Source-Projekt in C # geschrieben und enthält die Übersetzung von Lapack, Blas, und EISPACK zu C #.

Die BLIS-like-Bibliothek Instanziierung Software (BLIS) ist der derzeitige Goldstandard für Open-Source-Bibliotheken BLAS. https://github.com/flame/blis Es ist nicht so schnell wie MKL (obwohl in der Nähe) aber schneller als OpenBLAS, eine Gabel des legendären GotoBLAS, auf im wesentlichen all CPUs (und viel schneller auf den neuesten Architekturen wie Intel, AMD und ARM). Es ist sehr gepflegt.

ACML, in einer anderen Antwort erwähnt, nicht mehr existiert. AMD nutzt nun Open-Source-Software als Teil ihrer ACL (AMD Compute Library) Software-Stack. BLIS ist das, was Teil dieser Software-Stack ist: https: //developer.amd .com / AMD-CPU-Bibliotheken / blas-Bibliothek / .

Caviat: Plakat Teil des BLIS-Projekts. Die oben genannten Ansprüche sind gut dokumentiert.

(Kommentar hinzugefügt später:.. Hat das ".NET" nicht bemerkt Leider ist BLIS noch nicht gut unterstützt für Windows)

Lutz Roeder hat eine gute Open-Source-Port Mapack.Net

In der Vergangenheit für verschiedene Projekte und fand es eary mit arbeiten

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top