Чи PETSc коли-небудь використовує бібліотеки LAPACK для розрідженої математики?


10

Чи компіляція PETSc із зовнішньою бібліотекою BLAS / LAPACK суттєво впливає на продуктивність на розріджених матрицях, чи використовує лише ці бібліотеки для математики щільної матриці?


Ви можете використовувати LU для попередньої підготовки.
stali

Відповіді:


10

PETSc використовує BLAS для декількох векторних примітивів, але вони, як правило, обмежені пропускною здатністю пам’яті, і «оптимізація» не відрізняється великою кількістю розбіжностей, тому вона, як правило, не робить великої різниці в продуктивності.

Він також використовує Lapack для деяких аналізів, таких як оцінки Ланцоса або Арнольді щодо власних значень та сингулярних значень, але вони, як правило, не залежать від продуктивності.

Операції густого "рівня 3", як правило, відображаються лише в контексті, залежно від продуктивності, коли використовуються розріджені прямі вирішувачі з сторонніх бібліотек (наприклад, MUMPS, SuperLU, UMFPACK), і в цьому випадку заповнення зрештою призводить до щільних проблем, які досить великі, щоб отримати користь виклик BLAS.

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


Jed, як PETSc використовує LAPACK для оцінки власних / сингулярних значень у випадку розподілених матриць? Це тоді блокова процедура або ScaLAPACK?
Олександр

Ітерація Арнольді генерує матрицю розміру Гессенберга, рівну кількості ітерацій (скажімо, 30 або 100). Власні або сингулярні значення матриці Гессенберга обчислюються надмірно для кожного процесу за допомогою LAPACK. Це набагато швидше, ніж намагатися зробити це паралельно, оскільки розміри невеликі, а дані вже надмірно розподіляються. Подібно до Ланцоса.
Джед Браун
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.