Je dois résoudre le même système linéaire clairsemé (300x300 à 1000x1000) avec de nombreux côtés droits (300 à 1000). En plus de ce premier problème, je voudrais également résoudre différents systèmes, mais avec les mêmes éléments non nuls (juste des valeurs différentes), c'est-à-dire de nombreux systèmes clairsemés avec un motif de rareté constant. Mes matrices sont indéfinies.
Les performances de la factorisation et de l'initialisation ne sont pas importantes, mais les performances de l'étape de résolution le sont. Actuellement, j'envisage PaStiX ou Umfpack, et je vais probablement jouer avec Petsc (qui prend en charge les deux solveurs) Existe-t-il des bibliothèques capables de tirer parti de mes besoins spécifiques (vectorisation, multi-threading) ou devrais-je compter sur des solveurs généraux, et peut-être les modifier légèrement pour mes besoins?
Et si la matrice clairsemée est plus grande, jusqu'à ?
la source
Vous n'êtes pas tout à fait clair dans votre énoncé du problème lorsque vous parlez des "mêmes éléments non nuls (juste des valeurs différentes)". Êtes-vous en train de dire que la matrice a un modèle de densité constante mais que les valeurs réelles changent? Ou, dites-vous que la matrice est en fait constante?
Pour plusieurs côtés droits et systèmes d'équations de cette taille, les méthodes itératives ne valent généralement pas la peine.
Tous les packages que vous avez mentionnés proposent des méthodes de factorisation directe (bien que PetSc soit surtout connu pour ses solveurs itératifs.) Cependant, vos systèmes sont si petits qu'il est peu probable que vous puissiez obtenir des accélérations parallèles substantielles, en particulier dans un environnement de mémoire distribuée.
Je suggère d'utiliser Umfpack pour ce travail - PaStix et PetSc sont exagérés.
la source