Czy PETSc kiedykolwiek korzysta z bibliotek LAPACK do matematyki rzadkiej?

10

Czy kompilacja PETSc z zewnętrzną biblioteką BLAS / LAPACK znacząco wpływa na wydajność na rzadkich macierzach, czy używa tych bibliotek tylko do matematyki gęstej macierzy?

Dan
źródło
Możesz użyć LU do wstępnego kondycjonowania.
stali

Odpowiedzi:

10

PETSc używa BLAS dla kilku prymitywów wektorowych, ale są one ogólnie ograniczone przepustowością pamięci i nie ma dużej rozbieżności w „optymalizacji”, więc zwykle nie robi dużej różnicy w wydajności.

Wykorzystuje również Lapacka do niektórych analiz, takich jak szacunki Lanczosa lub Arnoldiego dotyczące wartości własnych i pojedynczych wartości, ale generalnie nie są one wrażliwe na wydajność.

Gęste operacje „poziomu 3” zazwyczaj pojawiają się tylko w kontekście wrażliwym na wydajność, gdy używa się rzadkich bezpośrednich solverów z bibliotek stron trzecich (np. MUMPS, SuperLU, UMFPACK), w którym to przypadku wypełnienie ostatecznie prowadzi do gęstych problemów, które są wystarczająco duże, aby z nich skorzystać dzwoniąc do BLAS.

Jeśli polegasz na tych rzadkich rozwiązaniach bezpośrednich stosowanych do dużych problemów, warto budować z dostrojoną implementacją BLAS, w przeciwnym razie nie ma to większego znaczenia.

Jed Brown
źródło
Jed, w jaki sposób PETSc wykorzystuje LAPACK do szacowania wartości własnych / pojedynczych w przypadku macierzy rozproszonych? Czy jest to więc procedura blokowa czy ScaLAPACK?
Alexander
Iteracja Arnoldiego generuje macierz wymiaru Hessenberga równą liczbie iteracji (powiedzmy 30 lub 100). Wartości własne lub osobliwe macierzy Hessenberga oblicza się nadmiarowo dla każdego procesu za pomocą LAPACK. Jest to o wiele szybsze niż próba zrobienia tego równolegle, ponieważ rozmiary są małe, a dane są już redundantnie dystrybuowane. Podobne dla Lanczosa.
Jed Brown