Bibliothèques pour la résolution de systèmes linéaires clairsemés

21

Il existe un certain nombre de bibliothèques différentes qui résolvent un système linéaire d'équations clairsemé, mais j'ai du mal à comprendre quelles sont les différences.

Pour autant que je sache , il existe trois principaux packages: Trilinos , PETSc et Intel MKL . Ils peuvent tous faire des résolutions matricielles clairsemées, ils sont tous rapides (pour autant que je sache, je n'ai pu trouver de repères solides sur aucun d'entre eux), et ils sont tous parallélisables. Ce que je ne trouve pas, ce sont les différences.

Alors, quelles sont les différences entre les différents solveurs de systèmes linéaires clairsemés?

Andrew Spott
la source

Réponses:

29

Il y en a beaucoup plus, tous avec des objectifs et des points de vue différents sur les problèmes. Cela dépend vraiment de ce que vous essayez de résoudre. Voici une liste incomplète de packages. N'hésitez pas à ajouter plus de détails.

Grands packages de solveurs itératifs distribués

  • PETSc - packages axés sur les méthodes du sous-espace de Krylov et la commutation facile entre les solveurs linéaires. Poids beaucoup plus léger que les autres de cette catégorie.
  • Trilinos - un grand ensemble de packages destinés aux applications FEM
  • Hypre - similaire aux deux ci-dessus. Notable en raison de ses très bons solveurs multigrilles (téléchargeables par PETSc).

Packages de résolution directe parallèle

Packages de résolution directe en série

Environnements interactifs (plus pour les très petits systèmes)

Autres listes

  • Liste de Jack Dongarra des logiciels disponibles gratuitement pour l'algèbre linéaire.
aterrel
la source
9

MKL ne fait pas de parallélisme distribué (par exemple MPI), et le support pour les solveurs clairsemés est rudimentaire, certainement pas au niveau des deux autres. Actuellement, il n'y a qu'une seule référence significative: les performances évolutives du produit Sparse Matrix-Vector (SpMV). Étant donné que la bande passante mémoire est limitée, vous ne pouvez que la visser. PETSc et Trilinos s'en sortent très bien.

La vraie différence est quel environnement de programmation vous rend plus productif.

Matt Knepley
la source
Donc, cela se résume à peu près si vous voulez travailler en C ou C ++?
Andrew Spott
C'est un peu plus ouvert que ça. Vous pourriez certainement appeler Trilinos ou PETSc à partir de la plupart des langages de calcul numérique (C, Python, C ++ et Fortran sont tous des options viables, et dans une certaine mesure, MATLAB).
Aron Ahmadia
PETSc gère correctement le tableau F90 :) et l'intégralité du modèle d'objet est disponible dans Matlab.
Matt Knepley
1
PETSc et Trilinos engagent également différentes communautés, dans une certaine mesure. Peut-être devriez-vous considérer d'abord le type de problèmes que vous souhaitez résoudre, et si des exemples existants de problèmes similaires sont déjà disponibles dans l'une ou l'autre boîte à outils?
Aron Ahmadia
1
Je recommanderais de regarder les exemples des différents projets puis de décider. Si vous avez un exemple spécifique de quel système serait le mieux pour un problème, ce serait une question plus répondable. Sinon, nous ne commencerons que la guerre de religion qui a traversé ma carrière de diplômé.
aterrel