Каковы основные различия между PETSc и Trilinos?


24

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


1
Некоторое время назад на доске CFD было несколько устаревшее обсуждение (с 2009 года) ; Возможно, лучше задать вопрос: с тех пор произошли ли существенные изменения в дизайне любой упаковки?
Aeismail

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

Ответы:


19

Существуют огромные различия в культуре, стиле кодирования и возможностях. Вероятно, фундаментальное отличие состоит в том, что Trilinos пытается предоставить среду для решения задач FEM, а PETSc предоставляет среду для решения разреженных задач линейной алгебры.

Почему это важно?

  • Trilinos предоставит большое количество пакетов, связанных с отдельными частями решателя FEM. Иногда эти пакеты работают вместе, иногда нет. Даже базовые компоненты находятся в своем собственном пакете и передовых инструментах C ++
  • PETSC предоставляет небольшое количество основных подпрограмм, которые могут быть построены, но оставляет решатели FEM сторонним пакетам. Из-за этого это связано с большим сообществом, чем просто FEM. Например, даже собственные решатели являются третьей стороной, которая, возможно, является основной частью линейной алгебры.
  • В итоге Trilinos хорошо работает в своих собственных пакетах, а у PETSc есть интерфейсы, которые обращаются ко многим пакетам промежуточного программного обеспечения (из-за этого я часто слышал, что это называется «облегченным», но я бы не стал это утверждать)

ИМХО, что вы должны использовать, действительно зависит от проблемы. Пожалуйста, поделитесь более подробной информацией, чтобы мы могли ответить на этот вопрос.


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

11

Если вы хотите получить информацию от технических руководителей различных пакетов, отвечая на вопросы с точки зрения обычного пользователя HPC, подкаст Брэка Палена и Джеффа Сквайра RCE является отличным ресурсом. У них есть эпизоды на PETSc и Trilinos, которые очень ясны.

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


7

Позвольте мне добавить к хорошему комментарию aterrel, что Trilinos действительно большая сумка (Sandia), а Petsc - более сфокусированная библиотека. Если вы хотите сравнить, то вам следует сравнить поддержку разреженного решателя PETSc с экосистемой разреженного решателя ePetra / ML / etc от Trilinos, которая делает подобные вещи. Кроме того, PETSc поддерживает структурированные сетки, а Sandia исторически явно была неструктурированным (FEM) домом, поэтому у Trilinos практически нет поддержки структурированных сеток AFAIK. И Trilinos обладает возможностями, которые PETSc не поддерживает, как стохастической поддержкой PDE.


3
Хорошо бы добавить к тому, что у Trillinos есть то, чего нет в PETSc: автоматическое дифференцирование, балансировка нагрузки, методы продолжения дуги, пакеты оптимизации. Но все они были встроены в PETSc сторонними пакетами (некоторые из которых от Trilinos) и могут быть добавлены с помощью конфигурации PETSc --download-foo.
аэррел

6

Как человек, который провел несколько лет, работая с обоими, я считаю, что оба пакета на самом деле не так уж различны. Правда, они используют разные языки, но используют их очень похожими способами (оба являются объектно-ориентированными, Trilinos мало использует C ++ помимо использования классов). Оба поддерживают практически все, что вы когда-либо захотите сделать с помощью линейной алгебры (либо через подпакеты, либо через файлы, которые они загружают на лету, что с точки зрения пользователя не имеет никакого значения). Наконец, оба имеют большое количество более непонятных и, вероятно, не очень широко используемых подпакетов (например, сетчатый интерфейс PETSc 'sieve', автоматическое дифференцирование в трилино и т. Д.).

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


Я предполагаю, что вы использовали только старые интерфейсы, так как многие из новых широко используют шаблоны.
aterrel

Это в основном правда. Я полагаю, вы прокомментировали утверждение «немного другое использование C ++ за пределами классов». Я имел в виду, что он не использует RTTI, исключения, множественное наследование и т. Д. В большинстве мест. Это относительно просто понять, если вы знаете C и немного об объектной ориентации.
Вольфганг Бангерт

2

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

Trilinos для меня выглядел запутанным (со всеми его подпакетами и схемой именования), а поддержка 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.