Насколько я могу судить, две большие универсальные программные платформы Министерства вычислительной науки США - PETSc и Trilinos . На первый взгляд они кажутся похожими, за исключением различий в языке (C против C ++). Каковы основные различия между двумя структурами и какие факторы должны влиять на выбор одного из других? (Игнорировать институциональный уклон и существующую инфраструктуру.)
24
Ответы:
Существуют огромные различия в культуре, стиле кодирования и возможностях. Вероятно, фундаментальное отличие состоит в том, что Trilinos пытается предоставить среду для решения задач FEM, а PETSc предоставляет среду для решения разреженных задач линейной алгебры.
Почему это важно?
ИМХО, что вы должны использовать, действительно зависит от проблемы. Пожалуйста, поделитесь более подробной информацией, чтобы мы могли ответить на этот вопрос.
источник
Если вы хотите получить информацию от технических руководителей различных пакетов, отвечая на вопросы с точки зрения обычного пользователя HPC, подкаст Брэка Палена и Джеффа Сквайра RCE является отличным ресурсом. У них есть эпизоды на PETSc и Trilinos, которые очень ясны.
aterrel прав в своих описаниях - PETSc - это (сравнительно) небольшой, интегрированный, хорошо продуманный пакет универсальных линейных и некоторых нелинейных решателей, которые затем можно использовать в рамках решателя; Trilinos - это набор пакетов, чья интеграция развивается, и в основном нацелена на то, чтобы стать такой средой решателя, и включает в себя такие вещи, как решатели ODE, меш-пакеты и т. Д.
источник
Позвольте мне добавить к хорошему комментарию aterrel, что Trilinos действительно большая сумка (Sandia), а Petsc - более сфокусированная библиотека. Если вы хотите сравнить, то вам следует сравнить поддержку разреженного решателя PETSc с экосистемой разреженного решателя ePetra / ML / etc от Trilinos, которая делает подобные вещи. Кроме того, PETSc поддерживает структурированные сетки, а Sandia исторически явно была неструктурированным (FEM) домом, поэтому у Trilinos практически нет поддержки структурированных сеток AFAIK. И Trilinos обладает возможностями, которые PETSc не поддерживает, как стохастической поддержкой PDE.
источник
Как человек, который провел несколько лет, работая с обоими, я считаю, что оба пакета на самом деле не так уж различны. Правда, они используют разные языки, но используют их очень похожими способами (оба являются объектно-ориентированными, Trilinos мало использует C ++ помимо использования классов). Оба поддерживают практически все, что вы когда-либо захотите сделать с помощью линейной алгебры (либо через подпакеты, либо через файлы, которые они загружают на лету, что с точки зрения пользователя не имеет никакого значения). Наконец, оба имеют большое количество более непонятных и, вероятно, не очень широко используемых подпакетов (например, сетчатый интерфейс PETSc 'sieve', автоматическое дифференцирование в трилино и т. Д.).
Для меня привлекательность Трилиноса двояка: - количество малоизвестных подпакетов в Трилино значительно больше; если мне когда-нибудь понадобится что-то в направлении X, я найду это в Трилиносе, и оно будет работать с остальной частью моего кода. - Трилинос гораздо более консервативен в своей стратегии развития. PETSc все время переименовывает, и каждый выпуск требует от пользователей догонять переименованные функции, разные библиотеки и т. Д.
источник
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 будет иметь все необходимые функции, кроме одной, поэтому широкая поддержка компиляторов не так уж далека в будущем.
источник