Quais são as principais diferenças entre o PETSc e o Trilinos?


24

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.)


1
Houve uma discussão um pouco desatualizada (de 2009) em um conselho de CFD há um tempo atrás; talvez a melhor pergunta a fazer seja: desde então, houve mudanças significativas no design de qualquer pacote?
aeismail

Ahmed, essa discussão se concentra principalmente em pré-condicionadores. Eu esperava um ponto de vista mais amplo do que discussões sobre solucionadores iterativos. Além disso, como há muita conversa sobre o PETSc no scicomp.SE, achei que o Trilinos também deveria receber alguns posts dedicados a ele, e essa parece ser uma das primeiras perguntas que um usuário em potencial do Trilinos deve fazer. Eu não sei muito sobre Trilinos ou PETSc, então imaginei que a resposta me ajudaria a aprender algo também.
precisa

Respostas:


19

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?

  • A Trilinos fornecerá um grande número de pacotes relacionados a partes separadas do solucionador FEM. Às vezes, esses pacotes funcionam juntos, às vezes não. Até os componentes básicos estão em seu próprio pacote e em ferramentas C ++ avançadas
  • O PETSC fornece uma pequena quantidade de rotinas básicas que podem ser construídas, mas deixa os solucionadores do FEM em pacotes de terceiros. Por esse motivo, está associado a uma comunidade maior do que apenas o MEF. Por exemplo, mesmo os solucionadores próprios são de terceiros, o que é indiscutivelmente uma parte importante da álgebra linear.
  • Resumindo, o Trilinos se concentra em trabalhar bem dentro de seus próprios pacotes e o PETSc possui interfaces que chamam muitos pacotes de middleware (eu sempre ouvi isso chamado "peso mais leve" por causa disso, mas eu não faria essa afirmação)

IMHO, que você deve usar realmente depende do problema. Compartilhe mais detalhes para respondermos a essa pergunta.


Não tenho um problema específico em mente. Estou interessado em obter experiência com um desses grandes pacotes para resolver PDEs e queria ter uma idéia dos prós e contras para que eu pudesse tomar uma decisão mais informada sobre em qual investir meu tempo.
Geoff Oxberry

11

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.


7

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.


3
É bom acrescentar o que o Trillinos tem que o PETSc não possui: Diferenciação automática, balanceamento de carga, métodos de continuação de arco, pacotes de otimização. Mas tudo isso foi incorporado ao PETSc por pacotes de terceiros (alguns dos quais são da Trilinos) e pode ser adicionado com um PETSc --download-foo configure.
Aterrel 19/12

6

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.


Presumo que você tenha usado apenas as interfaces mais antigas, já que muitas das mais recentes usam modelos extensivamente.
aterrel 31/12/11

Isso é verdade. Eu imagino que você tenha comentado sobre a declaração "pouco outro uso de C ++ além das classes". O que eu quis dizer é que ele não usa RTTI, exceções, herança múltipla etc., na maioria dos lugares. É relativamente simples de entender se você conhece C e um pouco de orientação a objetos.
Wolfgang Bangerth

2

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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.