Які основні відмінності між PETSc та Trilinos?


24

Наскільки я можу сказати, дві великі загальні рамки програмного забезпечення для обчислювальної науки Міністерства енергетики США - це PETSc і Trilinos . На перший погляд вони схожі за межами відмінностей у мові (C проти C ++). Які основні відмінності між двома рамками, і які фактори повинні впливати на вибір одного над іншим? (Ігноруйте інституційні упередження та існуючу інфраструктуру.)


1
Була дещо застаріла дискусія (з 2009 р.) На раді CFD деякий час тому; можливо краще питання, яке слід задати: чи з того часу відбулися суттєві зміни в дизайні будь-якого пакета?
aeismail

Ахмед, ця дискусія зосереджена в основному на передумовниках. Я сподівався на більш широку точку зору, ніж обговорення ітеративних рішень. Крім того, оскільки на scicomp.SE багато говорять про PETSc, я вважав, що Trilinos також повинен отримати кілька присвячених цим публікацій, і це, здається, одне з перших питань, які повинен задати потенційний користувач Trilinos. Я не знаю багато про Trilinos або PETSc, тому я подумав, що відповідь допоможе і мені щось навчитися.
Джефф Оксберрі

Відповіді:


19

Існують величезні відмінності в культурі, стилі кодування та можливостях. Можливо, принципова відмінність полягає в тому, що Trilinos намагається створити середовище для вирішення проблем FEM, а PETSc забезпечує середовище для вирішення рідких задач лінійної алгебри.

Чому це важливо?

  • Trilinos надасть велику кількість пакетів, що стосуються окремих частин вирішувача FEM. Іноді ці пакунки працюють разом, іноді - ні. Навіть базові компоненти є у власній упаковці та вдосконалених C ++ інструментах
  • PETSC надає невелику кількість основних процедур, на яких можна будувати, але залишає вирішувачі FEM стороннім пакетам. Через це він асоціюється з більшою спільнотою, ніж просто FEM. Наприклад, навіть власні розв'язувачі є сторонніми сторонами, що, мабуть, є основною частиною лінійної алгебри.
  • Підсумок, Trilinos фокусується на роботі добре у власних пакетах, а PETSc має інтерфейси, які викликають багато пакетів програмного забезпечення (я часто чув, що це називається "легшою вагою" через це, але я не став би цього претендувати)

ІМХО, який вам слід використовувати, дійсно залежить від проблеми. Будь ласка, поділіться більш детальною інформацією для нас, щоб відповісти на це питання.


Я не маю на увазі конкретної проблеми. Мені цікаво отримати досвід роботи з одним із цих великих пакетів для вирішення PDE, і хотів отримати уявлення про плюси і мінуси, щоб я міг прийняти більш обгрунтоване рішення, в який саме вкласти свій час.
Джефф Оксберрі

11

Якщо ви хочете почути технічну інформацію про різні пакети, то питання з точки зору звичайного користувача HPC, подкаст БЦП Брока Палена та Джеффа Сквайра - це відмінний ресурс. Вони мають епізоди на PETSc і на Trilinos, які дуже чіткі.

aterrel правий у своїх описах - PETSc - це (порівняно) невеликий, інтегрований, продуманий пакет лінійних загальних цілей та деяких нелінійних розв'язків, який можна було б потім використати в рамках розв’язання; Trilinos - це сукупність пакетів, інтеграція яких розвивається, головним чином спрямована на те, щоб бути тією рамкою вирішення, і включає в себе такі речі, як ODE-розв'язувачі, пакети мереж тощо.


7

Дозвольте додати до хорошого коментаря aterrel, що Trilinos - це справді велика сумка (Sandia) речей, а Petsc - більш цілеспрямована бібліотека. Якщо ви хочете порівняти, то вам слід порівняти розріджену підтримку PETSc з розрідженою екосистемою Trilinos 'ePetra / ML / etc., яка робить подібні дії. Крім того, PETSc підтримує структуровані сітки, а Sandia історично явно був неструктурованим будинком (FEM), тому Trilinos мало підтримує структуровані сітки AFAIK. А Trilinos має можливості, які PETSc не чіпає, як стохастична підтримка PDE.


3
Добре додати до речей, які має Trillinos, що PETSc не має: автоматична диференціація, балансування навантаження, методи продовження дуги, пакети оптимізації. Але всі вони були вбудовані в PETSc сторонніми пакетами (деякі з них - від Trilinos) і можуть бути додані за допомогою налаштування PETSc - download-foo.
aterrel

6

Як хтось, хто кілька років працював з обома, я вважаю, що обидва пакети насправді не такі вже й різні. Щоправда, вони використовують різні мови, але вони використовують їх дуже схожими способами (обидва об'єктно орієнтовані, Trilinos мало використовує C ++, крім використання класів). Обидва підтримують практично все, що ви коли-небудь захочете зробити з лінійною алгеброю (через підпакети або речі, які вони завантажують на льоту, що з точки зору користувача не має ніякої різниці). Нарешті, обидва мають велику кількість більш незрозумілих і, мабуть, не дуже широко використовуваних підпакетів (наприклад, сітчастий інтерфейс PETSc 'сито', автоматична диференціація в Trilinos тощо).

Для мене привабливість Trilinos є двоякою: - кількість неясних підпакетів у Trilinos значно більша; якщо мені колись щось знадобиться в напрямку X, я знайду його в Trilinos, і це буде працювати з рештою мого коду. - Трилінос набагато консервативніший у своїй стратегії розвитку. PETSc весь час перейменовує речі та кожен випуск вимагає від користувачів наздоганяти перейменовані функції, різні бібліотеки тощо.


Я вважаю, що ви використовували лише старі інтерфейси, оскільки більшість нових використовує шаблони широко.
aterrel

Це в основному так. Я думаю, ви прокоментували заяву "мало іншого використання C ++ поза класами". Я мав на увазі те, що він не використовує RTTI, винятки, багаторазове успадкування тощо у більшості місць. Це досить просто зрозуміти, чи знаєте ви C і трохи орієнтацію на об'єкт.
Вольфганг Бангерт

2

PETSc дуже легко може бути використаний з Fortran, а документація / приклади досить хороші.

Трилінос для мене виглядав заплутаним (з усіма його підпакетами та схемою імен), а підтримка Fortran була плямистою (принаймні, коли я дивився на це кілька років тому).

Існує два способи взаємодії з Trilinos з Fortran: (1) передавати необроблені дані в обгортку C ++, яка робить усі дзвінки в пакети Trilinos для ваших [такі обгортки існують для декількох пакетів] або (2) використовувати нові інтерфейси ForTrilinos, які значною мірою виконайте об'єктно-орієнтовані функції Fortran 2003. Більшість функцій, які потребує ForTrilinos, доступні у більшості компіляторів. реалізація цих функцій компілятора невдала, але швидко вдосконалюється. В даний час ForTrilinos будується з компіляторами IBM і NAG. Поточні чи найближчі випуски компіляторів Cray, Intel та Portland Group номінально підтримують необхідні функції модульних виправлень помилок. Майбутній випуск GCC 4.7.0 матиме всі необхідні функції, але одна, настільки широка підтримка компілятора не надто далеко в майбутньому.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.