Библиотеки для решения разреженных линейных систем

21

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

Насколько я могу судить, есть три основных пакета: Trilinos , PETSc и Intel MKL . Все они могут выполнять разреженные матричные решения, все они быстры (насколько я могу судить, я не смог найти надежных тестов ни по одному из них), и все они распараллеливаемы. Что я не могу найти, так это различия.

Итак, каковы различия между различными разреженными линейными решателями системы?

Эндрю Спотт
источник

Ответы:

29

Есть много других, все с разными целями и взглядами на проблемы. Это действительно зависит от того, что вы пытаетесь решить. Вот неполный список пакетов там. Не стесняйтесь добавлять больше деталей.

Большие распределенные итеративные пакеты решения

  • PETSc - пакеты, ориентированные на методы подпространства Крылова и легкое переключение между линейными решателями. Гораздо легче, чем другие в этой категории.
  • Trilinos - большой набор пакетов, предназначенных для приложений FEM
  • Hypre - похоже на два выше. Примечательный из-за его очень хороших многосеточных решателей (которые могут быть загружены PETSc).

Параллельные пакеты прямого решения

Serial Direct Solver Packages

  • SuiteSparse - UMFPACK - действительно хороший решатель, но здесь существует множество других решателей специального назначения.
  • Intel Math Kernel Library - высококачественная библиотека от Intel; также есть Параллельный Итеративный Решатель (но ничего массивно параллельного).
  • Matrix Template Library - Generics иногда может сделать код намного быстрее.

Интерактивные среды (больше для очень маленьких систем)

Другие списки

aterrel
источник
9

MKL не выполняет распределенный параллелизм (например, MPI), и поддержка разреженных решателей является зачаточной, определенно не на уровне двух других. В настоящее время существует только один значимый тест: масштабируемая производительность продукта Sparse Matrix-Vector (SpMV). Поскольку пропускная способность памяти ограничена, вы можете только испортить ее. И PETSc, и Trilinos справляются с этим.

Реальная разница в том, какая среда программирования делает вас более продуктивным.

Мэтт Кнепли
источник
Так что это в значительной степени сводится к тому, если вы хотите работать на C или C ++?
Эндрю Спотт
Это немного более открытый, чем это. Вы, конечно, могли бы назвать Trilinos или PETSc из большинства языков числовых вычислений (C, Python, C ++ и Fortran - все возможные варианты, и в некоторой степени MATLAB).
Арон Ахмадиа
PETSc правильно обрабатывает массив F90 :), и вся объектная модель доступна в Matlab.
Мэтт Кнеплей
1
PETSc и Trilinos также в некоторой степени привлекают различные сообщества. Возможно, вам следует сначала рассмотреть тип проблем, которые вы хотели бы решить, и если какие-либо существующие примеры подобных проблем уже доступны в любом из этих инструментов?
Арон Ахмадиа
1
Я бы порекомендовал взглянуть на примеры различных проектов, а затем принять решение. Если у вас есть конкретный пример того, какая система лучше подходит для решения проблемы, это был бы более ответственный вопрос. В противном случае мы начнем только религиозную войну, которая продолжалась в моей карьере выпускника.
аэррел