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?

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


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.


¿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
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.