Jakie są główne różnice między PETSc a Trilinos?

24

O ile mogę stwierdzić, dwie duże ogólne ramy oprogramowania do obliczeń informatycznych Departamentu Energii w USA to PETSc i Trilinos . Na pierwszy rzut oka wydają się podobne, poza różnicami językowymi (C kontra C ++). Jakie są główne różnice między tymi dwoma ramami i jakie czynniki powinny wpłynąć na wybór jednego z nich? (Ignoruj ​​uprzedzenia instytucjonalne i istniejącą infrastrukturę.)

Geoff Oxberry
źródło
1
Jakiś czas temu odbyła się nieco przestarzała dyskusja (od 2009 r.) Na tablicy CFD ; być może lepszym pytaniem jest: czy od tamtego czasu nastąpiły znaczące zmiany w projekcie któregoś z pakietów?
aeismail
Ahmed, ta dyskusja skupia się głównie na kondycjonerach. Miałem nadzieję na szerszy punkt widzenia niż dyskusje o iteracyjnych rozwiązaniach. Ponadto, ponieważ dużo mówi się o PETSc na scicomp.SE, doszedłem do wniosku, że Trilinos powinien również poświęcić kilka postów na ten temat, i wydaje się, że jest to jedno z pierwszych pytań, które powinien zadać potencjalny użytkownik Trilinos. Nie wiem dużo o Trilinos ani PETSc, więc doszedłem do wniosku, że odpowiedź pomoże mi również się czegoś nauczyć.
Geoff Oxberry,

Odpowiedzi:

19

Istnieją ogromne różnice w kulturze, stylu kodowania i możliwościach. Prawdopodobnie podstawową różnicą jest to, że Trilinos stara się zapewnić środowisko do rozwiązywania problemów MES, a PETSc zapewnia środowisko do rozwiązywania rzadkich problemów z algebrą liniową.

Dlaczego to ma znaczenie?

  • Trilinos dostarczy dużą liczbę pakietów związanych z oddzielnymi częściami rozwiązania FEM. Czasami te pakiety działają razem, a czasem nie. Nawet podstawowe komponenty znajdują się we własnym pakiecie i zaawansowanych narzędziach C ++
  • PETSC zapewnia niewielką liczbę podstawowych procedur, na których można budować, ale pozostawia solvery FEM w pakietach stron trzecich. Z tego powodu jest powiązany z większą społecznością niż tylko MES. Na przykład, nawet solwery własne są stronami trzecimi, co jest prawdopodobnie główną częścią algebry liniowej.
  • Podsumowując, Trilinos skupia się na pracy we własnych pakietach, a PETSc ma interfejsy, które wywołują wiele pakietów oprogramowania pośredniego (często słyszałem, że z tego powodu nazywa się to „lżejszą”, ale nie twierdziłbym, że to twierdzenie)

IMHO, którego powinieneś użyć, naprawdę zależy od problemu. Podaj więcej szczegółów, aby odpowiedzieć na to pytanie.

aterrel
źródło
Nie mam na myśli konkretnego problemu. Interesuje mnie zdobycie doświadczenia z jednym z tych dużych pakietów do rozwiązywania PDE i chciałem poznać zalety i wady, aby móc podjąć bardziej świadomą decyzję, w którą inwestować mój czas.
Geoff Oxberry
11

Jeśli chcesz usłyszeć informacje techniczne od różnych pakietów, zadawanie pytań z punktu widzenia zwykłego użytkownika HPC, podcast RCE Brocka Palena i Jeffa Squyresa jest doskonałym źródłem informacji. Mają odcinki na PETSc i Trilinos, które są bardzo jasne.

aterrel ma rację w swoich opisach - PETSc jest (porównawczo) małym, zintegrowanym, dobrze przemyślanym pakietem uniwersalnych liniowych i niektórych nieliniowych solverów, które można następnie wykorzystać w ramach solvera; Trilinos to kolekcja pakietów, z ewoluującą integracją, mającą głównie na celu stworzenie frameworku solvera, i zawiera takie rzeczy jak solwery ODE, pakiety siatki itp.


źródło
7

Dodam do dobrego komentarza aterrel, że Trilinos to naprawdę duża torba (Sandia), a Petsc to bardziej skoncentrowana biblioteka. Jeśli chcesz porównać, powinieneś porównać obsługę rzadkiego solvera PETSc z ekosystemem rzadkiego solvera ePetra / ML / etc Trilinos, które robią podobne rzeczy. Ponadto PETSc obsługuje siatki strukturalne, a Sandia historycznie wyraźnie była domem niestrukturalnym (FEM), więc Trilinos ma niewielkie wsparcie AFAIK dla siatek strukturalnych lub nie ma go wcale. A Trilinos ma możliwości, których PETSc nie dotyka jak stochastyczne wsparcie PDE.

Adams
źródło
3
Cóż, aby dodać do rzeczy, które ma Trillinos, których nie ma PETSc: automatyczne różnicowanie, równoważenie obciążenia, metody kontynuacji łuku, pakiety optymalizacji. Ale wszystkie z nich zostały wbudowane w PETSc przez pakiety innych firm (niektóre z Trilinos) i można je dodać za pomocą PETSc - konfiguracja pobierania-foo.
aterrel,
6

Jako ktoś, kto spędził kilka lat pracując z obiema, z mojej perspektywy oba pakiety nie są tak naprawdę różne. To prawda, że ​​używają różnych języków, ale używają go w bardzo podobny sposób (oba są zorientowane obiektowo, Trilinos w niewielkim stopniu wykorzystuje C ++ poza klasami). Obie obsługują praktycznie wszystko, co kiedykolwiek będziesz chciał zrobić z algebrą liniową (albo poprzez podpakiety, albo rzeczy pobierane w locie, co z perspektywy użytkownika nie robi żadnej różnicy). Wreszcie, oba mają dużą liczbę bardziej niejasnych i prawdopodobnie niezbyt szeroko używanych podpakietów (np. „Sito” interfejsu PETSc, automatyczne różnicowanie w Trilinos itp.).

Według mnie atrakcyjność Trilinos jest dwojaka: - liczba niejasnych podpakietów w Trilinos jest znacznie większa; jeśli kiedykolwiek będę potrzebować czegoś w kierunku X, znajdę to w Trilinos i będzie działać z resztą mojego kodu. - Trilinos są znacznie bardziej konserwatywni w swojej strategii rozwoju. PETSc cały czas zmienia nazwy i każde wydanie wymaga od użytkowników nadążenia za funkcjami o zmienionej nazwie, różnymi bibliotekami itp.

Wolfgang Bangerth
źródło
Rozumiem, że używałeś tylko starszych interfejsów, ponieważ wiele nowszych intensywnie korzysta z szablonów.
aterrel,
To w większości prawda. Wyobrażam sobie, że skomentowałeś stwierdzenie „inne użycie C ++ poza klasami”. Miałem na myśli to, że w większości miejsc nie używa RTTI, wyjątków, wielokrotnego dziedziczenia itp. Rozumienie C i odrobiny orientacji obiektowej jest stosunkowo proste.
Wolfgang Bangerth,
2

PETSc można bardzo łatwo używać z Fortranem, a dokumentacja / przykłady są dość dobre.

Dla mnie Trilinos wyglądały na mylące (ze wszystkimi jego paczkami i schematem nazewnictwa), a wsparcie Fortrana było nierówne (przynajmniej kiedy spojrzałem na to kilka lat temu).

Istnieją dwa sposoby interakcji z Trilinos z Fortran: (1) przekazanie surowych danych do opakowania C ++, które wykonuje wszystkie wywołania pakietów Trilinos dla twojego [takie opakowania istnieją dla kilku pakietów] lub (2) używa nowych interfejsów ForTrilinos, które bardzo mocno ćwiczyć obiektowe funkcje Fortran 2003. Większość funkcji wymaganych przez ForTrilinos jest dostępna w większości kompilatorów. implementacje tych funkcji kompilatora są błędne, ale szybko się poprawiają. ForTrilinos buduje obecnie z kompilatorami IBM i NAG. Obecne lub przyszłe wydania kompilatorów Cray, Intel i Portland Group nominalnie obsługują wymagane funkcje poprawek błędów modulo. Nadchodzące wydanie GCC 4.7.0 będzie miało wszystkie wymagane funkcje, ale jedną, więc szeroka obsługa kompilatorów nie jest zbyt daleko w przyszłości.

stali
źródło