Бібліотеки для розв’язання розріджених лінійних систем


21

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

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

Отже, які відмінності між розрідженими лінійними системами вирішуються там?

Відповіді:


29

Там є ще багато, всі з різними цілями та поглядами на проблеми. Це дійсно залежить від того, що ви намагаєтеся вирішити. Ось неповний список пакетів там. Не соромтеся додати більше деталей.

Великі розповсюджені пакети ітеративних рішень

  • PETSc - пакети, орієнтовані на методи підпростору Крилова та легке перемикання між лінійними вирішувачами. Набагато легша вага, ніж інші в цій категорії.
  • Trilinos - великий набір пакетів, спрямованих на програми FEM
  • Hypre - схожий на два вище. Помітний тим, що має дуже хороші мультирешітки для вирішення (які можна завантажити PETSc).

Пакети паралельних прямих рішень

Послідовні пакети прямих рішень

  • SuiteSparse - UMFPACK - це дійсно хороший вирішувач, але тут існує багато інших вирішувачів спеціального призначення.
  • Intel Math Kernel Library - високоякісна бібліотека від Intel; також має паралельний ітеративний вирішувач (але нічого масово паралельного).
  • Бібліотека шаблонів матриць - Загальна інформація може іноді зробити код набагато швидшим.

Інтерактивне середовище (більше для дуже малих систем)

Інші списки


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
Я б рекомендував переглянути приклади різних проектів, а потім прийняти рішення. Якщо у вас є конкретний приклад того, яка система була б кращою для проблеми, це було б більш відповідальним питанням. Інакше ми розпочнемо лише релігійну війну, яку вела через мою випускницьку кар’єру.
aterrel
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.