Bibliotecas para resolver sistemas lineares esparsos

21

Existem várias bibliotecas diferentes que resolvem um sistema linear de equações esparsas, no entanto, estou achando difícil descobrir quais são as diferenças.

Até onde eu sei, existem três pacotes principais: Trilinos , PETSc e Intel MKL . Todos eles conseguem resolver matrizes esparsas, são todos rápidos (pelo que sei, não consegui encontrar referências sólidas em nenhum deles) e são paralelamente felizes. O que não consigo encontrar são as diferenças.

Então, quais são as diferenças entre os diferentes solucionadores de sistemas lineares esparsos?

Andrew Spott
fonte

Respostas:

29

Existem muitos outros por aí, todos com objetivos e visões diferentes dos problemas. Realmente depende do que você está tentando resolver. Aqui está uma lista incompleta de pacotes por aí. Sinta-se livre para adicionar mais detalhes.

Grandes Pacotes Solver Iterativos Distribuídos

  • PETSc - pacotes focados nos métodos do subespaço de Krylov e troca fácil entre solucionadores lineares. Peso muito mais leve do que outros nesta categoria.
  • Trilinos - um grande conjunto de pacotes voltados para aplicações FEM
  • Hypre - semelhante aos dois acima. Notável por seus excelentes solucionadores multigrid (que podem ser baixados pelo PETSc).

Pacotes Parallel Direct Solver

Pacotes de solucionador direto serial

Ambientes interativos (mais para sistemas muito pequenos)

Outras listas

aterrel
fonte
9

O MKL não faz paralelismo distribuído (por exemplo, MPI), e o suporte a solucionadores esparsos é rudimentar, definitivamente não no nível dos outros dois. Atualmente, existe apenas uma referência significativa: desempenho escalável do produto Sparse Matrix-Vector (SpMV). Como a largura de banda da memória é limitada, você pode estragar tudo. Tanto o PETSc quanto o Trilinos se saem bem nisso.

A diferença real é qual ambiente de programação o torna mais produtivo.

Matt Knepley
fonte
Então, tudo se resume a se você deseja trabalhar em C ou C ++?
Andrew Spott
É um pouco mais aberto do que isso. Você certamente poderia chamar Trilinos ou PETSc da maioria das linguagens de computação numéricas (C, Python, C ++ e Fortran são todas opções viáveis ​​e, até certo ponto, MATLAB).
Aron Ahmadia
O PETSc faz a matriz F90 manipular corretamente :), e todo o modelo de objeto está disponível no Matlab.
Matt Knepley
11
O PETSc e Trilinos também envolvem comunidades diferentes, até certo ponto. Talvez você deva considerar primeiro o tipo de problemas que gostaria de resolver e se algum exemplo existente de problemas semelhantes já está disponível em qualquer um dos kits de ferramentas?
Aron Ahmadia
11
Eu recomendaria olhar os exemplos dos diferentes projetos e decidir. Se você tiver um exemplo específico de qual sistema seria melhor para um problema, essa seria uma pergunta mais respondível. Caso contrário, apenas iniciaremos a guerra religiosa que levou a minha carreira de pós-graduação.
aterrel 30/11