Bibliotecas para resolver sistemas lineales dispersos

21

Existen varias bibliotecas diferentes que resuelven un sistema lineal de ecuaciones disperso, sin embargo, me resulta difícil descubrir cuáles son las diferencias.

Por lo que puedo decir, hay tres paquetes principales: Trilinos , PETSc e Intel MKL . Todos pueden hacer soluciones de matriz dispersas, todos son rápidos (por lo que puedo decir, no he podido encontrar puntos de referencia sólidos en ninguno de ellos), y todos son paralelizables. Lo que no puedo encontrar son las diferencias.

Entonces, ¿cuáles son las diferencias entre los diferentes solucionadores de sistemas lineales dispersos?

Andrew Spott
fuente

Respuestas:

29

Hay muchos más por ahí, todos con diferentes objetivos y puntos de vista de los problemas. Realmente depende de lo que intente resolver. Aquí hay una lista incompleta de paquetes por ahí. Siéntase libre de agregar más detalles.

Grandes paquetes de solucionadores iterativos distribuidos

  • PETSc : paquetes centrados en los métodos del subespacio de Krylov y el cambio fácil entre solucionadores lineales. Mucho más ligero que otros en esta categoría.
  • Trilinos : un gran conjunto de paquetes destinados a aplicaciones FEM
  • Hypre : similar a los dos anteriores. Destaca por sus muy buenos solucionadores multirredes (que PETSc puede descargar).

Paquetes de solución directa en paralelo

Paquetes de solución directa en serie

Entornos interactivos (más para sistemas muy pequeños)

Otras listas

aterrel
fuente
9

MKL no hace paralelismo distribuido (por ejemplo, MPI), y el soporte para solucionadores dispersos es rudimentario, definitivamente no al nivel de los otros dos. Actualmente, solo hay un punto de referencia significativo: el rendimiento escalable del producto Sparse Matrix-Vector (SpMV). Dado que este es el ancho de banda de memoria limitado, solo puede arruinarlo. Tanto PETSc como Trilinos hacen bien en esto.

La verdadera diferencia es qué entorno de programación te hace más productivo.

Matt Knepley
fuente
¿Entonces todo se reduce a si quieres trabajar en C o C ++?
Andrew Spott
Es un poco más abierto que eso. Ciertamente, podría llamar a Trilinos o PETSc desde la mayoría de los lenguajes de computación numérica (C, Python, C ++ y Fortran son opciones viables y, en cierta medida, MATLAB).
Aron Ahmadia
PETSc realiza el manejo de la matriz F90 correctamente :), y el modelo de objeto completo está disponible en Matlab.
Matt Knepley
1
PETSc y Trilinos también involucran a diferentes comunidades, hasta cierto punto. ¿Quizás debería considerar primero el tipo de problemas que le gustaría resolver, y si algún ejemplo existente de problemas similares ya está disponible en cualquiera de las herramientas?
Aron Ahmadia
1
Recomendaría mirar los ejemplos de los diferentes proyectos y luego decidir. Si tiene un ejemplo específico de qué sistema sería mejor para un problema, esa sería una pregunta más responsable. De lo contrario, solo comenzaremos la guerra religiosa que continuó durante mi carrera de posgrado.
aterrel