Até onde eu sei, as duas grandes estruturas genéricas de software de ciências computacionais do Departamento de Energia dos EUA são PETSc e Trilinos . Eles parecem semelhantes à primeira vista, além das diferenças de linguagem (C versus C ++). Quais são as principais diferenças entre as duas estruturas e quais fatores devem influenciar a escolha de uma sobre a outra? (Ignore o viés institucional e a infraestrutura existente.)
24
Respostas:
Existem enormes diferenças de cultura, estilo de codificação e recursos. Provavelmente a diferença fundamental é que Trilinos tenta fornecer um ambiente para resolver problemas de MEF e o PETSc fornece um ambiente para resolver problemas esparsos de álgebra linear.
Por que isso é significativo?
IMHO, que você deve usar realmente depende do problema. Compartilhe mais detalhes para respondermos a essa pergunta.
fonte
Se você deseja ouvir os líderes técnicos de vários pacotes, responder a perguntas do ponto de vista de um usuário normal de HPC, o podcast RCE de Brock Palen e Jeff Squyres é um excelente recurso. Eles têm episódios no PETSc e no Trilinos, que são muito claros.
aterrel está certo em suas descrições - o PETSc é um pacote (comparativamente) pequeno, integrado e bem pensado de solucionadores lineares de uso geral e alguns solucionadores não-lineares, que poderiam ser usados em uma estrutura de solucionadores; Trilinos é uma coleção de pacotes, com integração em evolução, destinada principalmente a ser a estrutura do solucionador, e inclui itens como solucionadores de ODE, pacotes de malha, etc.
fonte
Deixe-me acrescentar ao bom comentário de aterrel que Trilinos é realmente um grande saco de coisas (Sandia) e Petsc é uma biblioteca mais focada. Se você deseja comparar, você deve comparar o suporte ao solucionador esparso do PETSc com o ecossistema de solucionadores esparsos ePetra / ML / etc da Trilinos, que faz coisas semelhantes. Além disso, o PETSc suporta grades estruturadas e Sandia tem sido historicamente explicitamente uma casa não estruturada (FEM), de modo que Trilinos tem pouco ou nenhum suporte para grades estruturadas AFAIK. E o Trilinos possui recursos que o PETSc não toca como o suporte estocástico ao PDE.
fonte
Como alguém que passou vários anos trabalhando com ambos, minha perspectiva é que os dois pacotes não são tão diferentes assim. É verdade que eles usam linguagens diferentes, mas de maneiras muito semelhantes (ambas são orientadas a objetos, o Trilinos faz pouco outro uso do C ++ além do uso de classes). Ambos suportam praticamente tudo o que você deseja fazer com álgebra linear (por meio de subpacotes ou coisas que eles baixam em tempo real, o que, da perspectiva do usuário, não faz diferença). Finalmente, ambos têm um bom número de subpacotes mais obscuros e provavelmente não muito usados (por exemplo, "peneira" da interface de malha do PETSc, diferenciação automática em Trilinos, etc.).
Para mim, o apelo de Trilinos é duplo: - O número de subpacotes obscuros em Trilinos é muito maior; se eu precisar de algo na direção X, vou encontrá-lo no Trilinos e funcionará com o resto do meu código. - Trilinos é muito mais conservador em sua estratégia de desenvolvimento. O PETSc renomeia as coisas o tempo todo e toda versão requer que os usuários alcancem funções renomeadas, bibliotecas diferentes etc.
fonte
O PETSc pode ser facilmente utilizado com o Fortran e a documentação / exemplos são razoavelmente bons.
Para mim, Trilinos parecia confuso (com todos os seus subpacotes e esquema de nomes) e o suporte ao Fortran era irregular (pelo menos quando eu olhei para ele alguns anos atrás).
Existem duas maneiras de interagir com o Trilinos do Fortran: (1) passar dados brutos para um wrapper C ++ que faça todas as chamadas para os pacotes Trilinos para o seu [esses wrappers existem para vários pacotes] ou (2) use as novas interfaces do ForTrilinos que pesam bastante exercite os recursos orientados a objetos do Fortran 2003. A maioria dos recursos que o ForTrilinos requer está disponível na maioria dos compiladores. as implementações do compilador desses recursos estão com erros, mas estão melhorando rapidamente. O ForTrilinos atualmente constrói com os compiladores IBM e NAG. Os lançamentos atuais ou no futuro próximo dos compiladores Cray, Intel e Portland Group suportam nominalmente as correções necessárias para os módulos. A próxima versão do GCC 4.7.0 terá todos os recursos necessários, exceto um, portanto, o amplo suporte ao compilador não está muito longe no futuro.
fonte