Por lo que puedo decir, los dos grandes marcos genéricos de software de ciencia computacional del Departamento de Energía de EE . UU . Son PETSc y Trilinos . Parecen similares a primera vista, más allá de las diferencias en el lenguaje (C versus C ++). ¿Cuáles son las principales diferencias entre los dos marcos y qué factores deberían influir en la elección de uno sobre el otro? (Ignore el sesgo institucional y la infraestructura existente).
24
Respuestas:
Existen grandes diferencias en la cultura, el estilo de codificación y las capacidades. Probablemente la diferencia fundamental es que Trilinos intenta proporcionar un entorno para resolver problemas de FEM y PETSc proporciona un entorno para resolver problemas de álgebra lineal dispersos.
¿Por qué es eso significativo?
En mi humilde opinión, lo que debe utilizar realmente depende del problema. Por favor, comparta más detalles para que podamos responder esa pregunta.
fuente
Si desea saber de los líderes técnicos de varios paquetes, tomar preguntas desde el punto de vista de un usuario normal de HPC, el podcast RCE de Brock Palen y Jeff Squyres es un excelente recurso. Tienen episodios en PETSc y en Trilinos que son muy claros.
aterrel tiene razón en sus descripciones: PETSc es un paquete (comparativamente) pequeño, integrado y bien pensado de solucionadores lineales y algunos no lineales de uso general, que luego se podría usar en un marco de solución; Trilinos es una colección de paquetes, con una integración que está evolucionando, principalmente dirigida a ser ese marco de solución e incluye cosas como solucionadores de ODE, paquetes de mallas, etc.
fuente
Permítanme agregar al buen comentario de aterrel que Trilinos es realmente una gran bolsa de cosas (de Sandia) y Petsc es una biblioteca más enfocada. Si desea comparar, debe comparar el soporte de solución dispersa de PETSc con el ecosistema de solución dispersa ePetra / ML / etc de Trilinos, que hace cosas similares. Además, PETSc admite cuadrículas estructuradas y Sandia históricamente ha sido explícitamente una casa no estructurada (FEM), por lo que Trilinos tiene poco o ningún soporte para las redes estructuradas AFAIK. Y Trilinos tiene capacidades que PETSc no toca como el soporte de PDE estocástico.
fuente
Como alguien que ha pasado varios años trabajando con ambos, mi perspectiva es que ambos paquetes no son realmente tan diferentes. Es cierto que usan diferentes lenguajes, pero lo usan de manera muy similar (ambos están orientados a objetos, Trilinos hace poco otro uso de C ++ más allá del uso de clases). Ambos admiten prácticamente todo lo que querrá hacer con álgebra lineal (ya sea a través de subpaquetes o cosas que descargan sobre la marcha, que desde la perspectiva del usuario no hace ninguna diferencia). Finalmente, ambos tienen un buen número de subpaquetes más oscuros y probablemente no muy utilizados (por ejemplo, 'tamiz' de interfaz de malla de PETSc, diferenciación automática en Trilinos, etc.).
Para mí, el atractivo de Trilinos es doble: - El número de subpaquetes oscuros en Trilinos es mucho mayor; Si alguna vez necesito algo en la dirección X, lo encontraré en Trilinos y funcionará con el resto de mi código. - Trilinos es mucho más conservador en su estrategia de desarrollo. PETSc cambia el nombre de las cosas todo el tiempo y cada lanzamiento requiere que los usuarios se pongan al día con las funciones renombradas, diferentes bibliotecas, etc.
fuente
PETSc se puede usar muy fácilmente con Fortran y la documentación / ejemplos son bastante buenos.
Para mí, Trilinos parecía confuso (con todos sus subpaquetes y esquema de nombres) y el soporte de Fortran era irregular (al menos cuando lo vi hace unos años).
Hay dos formas de interactuar con Trilinos de Fortran: (1) pasar datos sin procesar a un contenedor C ++ que hace que todas las llamadas a paquetes Trilinos para su [tales contenedores existen para varios paquetes] o (2) use las nuevas interfaces ForTrilinos con mucha frecuencia ejercite las funciones orientadas a objetos de Fortran 2003. La mayoría de las funciones que requiere ForTrilinos están disponibles en la mayoría de los compiladores. Las implementaciones del compilador de estas características tienen errores pero están mejorando rápidamente. ForTrilinos actualmente construye con los compiladores IBM y NAG. Las versiones actuales o futuras de los compiladores de Cray, Intel y Portland Group son compatibles nominalmente con las características necesarias para la corrección de errores del módulo. La próxima versión de GCC 4.7.0 tendrá todas las características requeridas, excepto una, por lo que el amplio soporte del compilador no está demasiado lejos en el futuro.
fuente