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ę.)
24
Odpowiedzi:
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?
IMHO, którego powinieneś użyć, naprawdę zależy od problemu. Podaj więcej szczegółów, aby odpowiedzieć na to pytanie.
źródło
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
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.
źródło
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.
źródło
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.
źródło