Наскільки корисний PETSc для щільних матриць?


14

Де б я не бачив, підручник / документи тощо для PETSc кажуть, що це корисно для лінійної алгебри і зазвичай вказує, що рідкісні системи отримають користь. А як із щільними матрицями? Я стурбований тим, про рішення для щільного .Ах=бА

Я написав власний код для CG та QMR у Fortran. Основна конструкція є розривати код псевда і додати BLAS підпрограм всюди , де це можливо ( ddot, dnrmі dgemv) з невеликим самоналагоджувальна. Як це порівняти з PETSc?

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

Будь-яка допомога дуже цінується.

Відповіді:


7

Якщо у вас щільні матриці зі структурою (наприклад, швидкі перетворення, доповнення Шура тощо), PETSc може бути корисним. У цих випадках ви не збираєте повну матрицю.

Для складених щільних систем в даний час PETSc використовує PLAPACK, але розподіл матриць у нативному форматі PETSc не найкращий для мінімізації зв'язку (для більшості операцій). Джек Поулсон, Метт Кнеплі та я обговорювали перенесення щільної лінійної алгебри PETSc для використання Elemental , більш сучасної щільної лінійної бібліотеки алгебри. Це ще не сталося, але ми зробимо це, коли матимемо час.

Якщо ви хочете повнофункціональну щільну лінійну алгебру, використовуйте Elemental. Можливо, для цих операцій завжди буде більш повний API, ніж PETSc. Якщо вам потрібно взаємодіяти з розрідженими або нерозбірними системами, можливо, має сенс дотримуватися PETSc і витягти те, що потрібно використовувати Elemental для щільних частин (або допоможіть нам написати інтерфейс PETSc в Elemental).


Яка б ваша відповідь, якби я працював над системою загальної пам’яті?
Запит

1
Ви можете використовувати декілька процесів MPI або декілька pthreads. Я не бачу великого сенсу в написанні паралельного програмного забезпечення, яке працює лише з спільною пам'яттю, оскільки зазвичай локальність пам'яті, про яку ви думаєте під час запису для розподіленої пам'яті, покращує ефективність щодо всіх, крім найкращих потокових реалізацій. Якщо ви хочете лише "послідовний" API, який використовує внутрішні потоки для щільної лінійної алгебри, ви можете використовувати потоковий BLAS.
Джед Браун

Я хочу, щоб мої коди працювали на моїй базовій робочій станції Xeon 12 (я зараз не дивлюся на кластери). Я використовую Intel MKL для (потокового) BLAS. Ви все-таки рекомендуєте спробувати PETSc?
Запит

Якщо все, що ви хочете, це BLAS, ви задоволені ним, і ви вже написали код, просто використовуйте його. Якщо ви хочете отримати більшу гнучкість та / або можливість використовувати розподілену пам’ять, вам може знадобитися PETSc.
Джед Браун

Гнучкість з точки зору? Розподілена пам'ять?
Запит

5

О(н3)О(н2)

Оскільки ви згадали, що перебуваєте в системі спільної пам'яті, я б рекомендував libFLAME та / або PLASMA , але я не думаю, що це буде значно швидше, ніж BLAS з потоком BLAS для ваших операцій 1 і 2 рівня.

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


Отже, з того, що я отримую, кожна наступна паралельна щільна лінійна бібліотека алгебри намагатиметься оптимізувати такі операції, як обчислення власного вектора, рішення системи, а не BLAS. Також Elemental виглядає дійсно ефектно. Я обов'язково дам йому пробігти, коли зможу.
Запит

Зазвичай вони оптимізують рівень BLAS 3 рівня. Причина полягає в тому, що більшість людей, що користуються бібліотекою, будуть робити великі обчислення, які зазвичай можна відобразити на рівні 3 BLAS.
Джек Поульсон

Це тому, що BLAS 1/2 не може покращитися? (Може, через властивість поверхня до об'єму?) O (N ^ 2) даних та обчислення O (N ^ 2)?
Запит

Це тому, що BLAS 1 і 2, як правило, в обчисленні є термінами нижчого порядку. Вся «гра» високоефективної щільної лінійної алгебри полягає в тому, щоб коситись при кожній операції саме правильним способом, щоб ви могли зателефонувати xGEMM та друзям за якомога більше роботи.
Джек Поульсон

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