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.