Qu'est-ce qu'une bibliothèque BLAS / LAPACK gratuite (open source) pour .net (C #)?
J'ai un projet écrit en C#, où j'ai besoin de faire plusieurs linéaire algébrique opérations sur les matrices (comme LU-factorisation).
Depuis que le programme est principalement un prototype créé pour confirmer une théorie, une C# de mise en œuvre seront à la hauteur (par rapport à un peut plus rapide C++), mais je voudrais quand même une bonne BLAS ou de la bibliothèque LAPACK disponible pour me sauver certains de codage.
Longue histoire courte, quelqu'un peut-il recommander un libre/open source BLAS ou de la bibliothèque LAPACK pour une utilisation avec .net?
En ce qui concerne meilleur Egil.
Mise à jour: Trouvé Math.NET Numerics aujourd'hui, semble intéressant, quelqu'un a une expérience avec cela?
source d'informationauteur Egil Hansen
Vous devez vous connecter pour publier un commentaire.
AMD ACML est un gratuit de téléchargement, mais il est binaire uniquement, pas de open source et code natif, pas .NET.
Le rendement est généralement supérieure à la Netlib.org code, et généralement à peu près le même que Intel MKL-qui n'est pas libre IIRC.
Le téléchargement inclut un exemple qui montre comment le lier à C#. Pas du tout différent de l'appel tout autre C ou C++ de la bibliothèque à partir de C#.
Bibliothèque implémente BLAS, LAPACK, Fft, Rng.
http://developer.amd.com/cpu/Libraries/acml/downloads/pages/default.aspx
MODIFIER POUR RÉPONDRE À UN COMMENTAIRE:
Sur un PROCESSEUR Intel, AMD, ACML effectuera environ ainsi que d'Intel MKL, mais il dépend de l'algorithme, la matrice de tailles, nombre de coeurs, mémoire de la topologie et de la vitesse, etc. etc. etc. Votre kilométrage peut varier. La seule façon de savoir avec certitude est d'exécuter votre propre référence. Dans certains cas, ACML est plus rapide que la MKL même sur Itel matériel.
Soit on va être beaucoup plus rapide que n'importe quel "naïve" de la mise en œuvre de grand matrices. Les deux sont conçues pour l'utilisation de plusieurs threads sur les processeurs multicœurs, et avoir la main tordu langage d'assemblage des noyaux et beaucoup de réglage pour le cache des comportements sur les différentes machines.
Pour petit matrices, la performance est en général un n'est pas de soins, depuis toute moderne de l'uc peut aider à résoudre un petit matix en quelques millisecondes, même en utilisant le code le plus simple. Dans ce cas, vous êtes seulement en utilisant une bibliothèque d'éviter l'écriture et le débogage de code qui a été écrit des centaines de fois déjà.
La bibliothèque de mathématiques DotNumerics est libre et open-source du projet ecrit en C# et ne contient la traduction de Lapack, Blas, et Eispack en C#.
Lutz Roeder a un bon open source port Mapack.Net
Utilisé dans le passé pour divers projets et l'a trouvé eary de travailler avec