Pour autant que je sache, les deux grands cadres génériques des logiciels de science informatique du Département américain de l'énergie sont PETSc et Trilinos . Ils semblent similaires à première vue, au-delà des différences de langage (C versus C ++). Quelles sont les principales différences entre les deux cadres et quels facteurs devraient influencer le choix de l'un plutôt que l'autre? (Ignorer les préjugés institutionnels et les infrastructures existantes.)
24
Réponses:
Il existe d'énormes différences de culture, de style de codage et de capacités. La différence fondamentale est probablement que Trilinos essaie de fournir un environnement pour résoudre les problèmes FEM et PETSc fournit un environnement pour résoudre les problèmes d'algèbre linéaire clairsemée.
Pourquoi est-ce important?
À mon humble avis, que vous devez utiliser dépend vraiment du problème. Veuillez partager plus de détails pour que nous puissions répondre à cette question.
la source
Si vous souhaitez entendre les pistes techniques de divers packages, répondre aux questions du point de vue d'un utilisateur HPC normal, le podcast RCE de Brock Palen et Jeff Squyres est une excellente ressource. Ils ont des épisodes sur PETSc et sur Trilinos qui sont très clairs.
aterrel a raison dans ses descriptions - PETSc est un ensemble (comparativement) petit, intégré et bien pensé de solveurs linéaires et non linéaires à usage général, que l'on pourrait ensuite utiliser dans un cadre de solveurs; Trilinos est une collection de packages, avec une intégration qui évolue, visant principalement à être ce framework de solveur, et comprend des choses comme les solveurs ODE, les packages de maillage, etc.
la source
Permettez-moi d'ajouter au bon commentaire d'Aterrel que Trilinos est vraiment un gros sac de trucs (Sandia) et Petsc est une bibliothèque plus ciblée. Si vous voulez comparer, vous devez comparer la prise en charge du solveur clairsemé de PETSc avec l'écosystème de solveurs clairsemés ePetra / ML / etc de Trilinos, qui font des choses similaires. De plus, PETSc prend en charge les grilles structurées et Sandia a toujours été explicitement une maison non structurée (FEM), donc Trilinos n'a que peu ou pas de support pour les grilles structurées AFAIK. Et Trilinos a des capacités que PETSc ne touche pas comme le support stochastique des PDE.
la source
En tant que personne qui a passé plusieurs années à travailler avec les deux, mon point de vue est que les deux packages ne sont en fait pas si différents. Certes, ils utilisent différents langages, mais ils l'utilisent de manière très similaire (les deux sont orientés objet, Trilinos fait peu d'autre utilisation du C ++ que l'utilisation des classes). Les deux prennent en charge pratiquement tout ce que vous voudrez jamais faire avec l'algèbre linéaire (soit par le biais de sous-packages ou de choses qu'ils téléchargent à la volée, ce qui, du point de vue de l'utilisateur, ne fait aucune différence). Enfin, les deux ont un bon nombre de sous-packages plus obscurs et probablement peu répandus (par exemple, le tamis de l'interface maillée de PETSc, la différenciation automatique dans Trilinos, etc.).
Pour moi, l'attrait de Trilinos est double: - Le nombre de sous-paquets obscurs dans Trilinos est beaucoup plus grand; si jamais j'ai besoin de quelque chose dans la direction X, je vais le trouver dans Trilinos et cela fonctionnera avec le reste de mon code. - Trilinos est beaucoup plus conservateur dans sa stratégie de développement. PETSc renomme les choses tout le temps et chaque version nécessite que les utilisateurs rattrapent les fonctions renommées, les différentes bibliothèques, etc.
la source
PETSc peut très facilement être utilisé avec Fortran et la documentation / les exemples sont assez bons.
Trilinos m'a semblé déroutant (avec tous ses sous-packages et son schéma de nommage) et le support de Fortran était inégal (du moins quand je l'ai regardé il y a quelques années).
Il y a deux façons d'interagir avec Trilinos de Fortran: (1) passer des données brutes dans un wrapper C ++ qui fait tous les appels aux packages Trilinos pour vos [ces wrappers existent pour plusieurs packages] ou (2) utiliser les nouvelles interfaces ForTrilinos qui exercer les fonctionnalités orientées objet de Fortran 2003. La plupart des fonctionnalités requises par ForTrilinos sont disponibles dans la plupart des compilateurs. les implémentations du compilateur de ces fonctionnalités sont boguées mais s'améliorent rapidement. ForTrilinos construit actuellement avec les compilateurs IBM et NAG. Les versions actuelles ou à venir des compilateurs Cray, Intel et Portland Group prennent toutes en charge les correctifs de bogues modulo des fonctionnalités requises. La prochaine version de GCC 4.7.0 aura toutes les fonctionnalités requises sauf une, donc la prise en charge étendue du compilateur ne sera pas trop loin à l'avenir.
la source