Jak przydatny jest PETSc do gęstych matryc?

14

Gdziekolwiek widziałem, tutorial / dokumenty PETSc itp. Mówią, że jest to przydatne w algebrze liniowej i zwykle określa, że ​​korzyści będą miały systemy rzadkie. Co z gęstymi matrycami? Jestem zaniepokojony rozwiązywania dla gęstej A .Ax=bZA

W Fortranie napisałem własny kod dla CG i QMR. Podstawowa konstrukcja jest rozpaść się pseudo kod i dodać procedury BLAS gdziekolwiek to możliwe ( ddot, dnrmi dgemv) z odrobiną samodzielnego strojenia. Jak to porównać z PETSc?

Wiem, że najlepszą odpowiedzią byłoby dla mnie wypróbowanie tego samodzielnie, ale z powodów czasowych i innych nie jest to możliwe.

Każda pomoc jest mile widziana.

Śledztwo
źródło

Odpowiedzi:

7

Jeśli masz gęste matryce o strukturze (np. Szybkie transformacje, uzupełnienia Schura itp.), PETSc może być użyteczny. W takich przypadkach nie będziesz montować pełnej matrycy.

W przypadku złożonych systemów gęstych PETSc obecnie używa PLAPACK, ale rozkład macierzy w natywnym formacie PETSc nie jest najlepszym sposobem na zminimalizowanie komunikacji (w przypadku większości operacji). Jack Poulson, Matt Knepley i ja rozmawialiśmy o przeniesieniu gęstej algebry liniowej PETSc do wykorzystania Elemental , bardziej nowoczesnej biblioteki gęstej algebry liniowej. To się jeszcze nie wydarzyło, ale zrobimy to, kiedy będziemy mieli czas.

Jeśli chcesz mieć w pełni funkcjonalną bibliotekę gęstej algebry liniowej, użyj elementu. Prawdopodobnie zawsze będzie miał pełniejszy interfejs API dla tych operacji niż PETSc. Jeśli potrzebujesz wchodzić w interakcje z rzadkimi lub niezmontowanymi systemami, prawdopodobnie warto trzymać się PETSc i wyodrębnić to, czego potrzebujesz, aby użyć Elemental do gęstych części (lub pomóż nam napisać interfejs PETSc do Elemental).

Jed Brown
źródło
Jaka byłaby twoja odpowiedź, gdybym pracował na systemie pamięci współdzielonej?
Zapytanie
1
Możesz użyć wielu procesów MPI lub wielu wątków. Nie widzę sensu w pisaniu oprogramowania równoległego, które działa tylko z pamięcią współużytkowaną, ponieważ zazwyczaj lokalizacja pamięci, o której myślisz, pisząc dla pamięci rozproszonej, poprawia wydajność w stosunku do wszystkich implementacji z wyjątkiem najlepszych wątków. Jeśli potrzebujesz tylko „seryjnego” interfejsu API, który wewnętrznie wykorzystuje wątki do gęstej algebry liniowej, możesz użyć wątkowego BLAS.
Jed Brown
Chcę, aby moje kody działały na mojej podstawowej stacji roboczej Xeon 12 (na razie nie patrzę na Klastry). Używam Intel MKL dla (gwintowanego) BLAS. Czy nadal poleciłbyś wypróbować PETSc?
Zapytanie
Jeśli wszystko, czego chcesz, to BLAS, jesteś z niego zadowolony i już napisałeś kod, po prostu go użyj. Jeśli chcesz większej elastyczności i / lub możliwości korzystania z pamięci rozproszonej, możesz chcieć PETSc.
Jed Brown
Elastyczność pod względem? Pamięć rozproszona?
Zapytanie
5

O(n3))O(n2))

Ponieważ wspomniałeś, że korzystasz z systemu pamięci współużytkowanej, zaleciłbym libFLAME i / lub PLASMA , ale nie sądzę, aby był on znacznie szybszy niż BLAS z wątkami dostawcy dla operacji poziomu 1 i 2.

Jed polecił elementarne , które akurat rozwijam, ale jeszcze raz podkreślę, że operacje poziomu 1 i poziomu 2 nie są głównym celem równoległych gęstych bibliotek algebry liniowej. Szczerze mówiąc, nigdy nie porównywałem żadnej z tych procedur.

Jack Poulson
źródło
Z tego, co otrzymuję, każda kolejna równoległa gęsta biblioteka algebry liniowej będzie próbowała zoptymalizować operacje, takie jak obliczanie wektora własnego, rozwiązanie systemu zamiast BLAS. Elemental wygląda naprawdę imponująco. Na pewno dam mu szansę, kiedy będę mógł.
Zapytanie
Zazwyczaj optymalizują BLAS poziomu 3. Powodem jest to, że większość osób korzystających z biblioteki będzie wykonywać duże obliczenia, które zwykle można zmapować na BLAS poziomu 3.
Jack Poulson
Czy to dlatego, że BLAS 1/2 nie może być lepszy? (Może z powodu właściwości powierzchni do objętości?) Dane O (N ^ 2) i obliczenia O (N ^ 2)?
Zapytanie
Wynika to z tego, że BLAS 1 i 2 są ogólnie terminami niższego rzędu w obliczeniach. Cała „gra” wysokowydajnej gęstej algebry liniowej polega na zmrużeniu oka przy każdej operacji we właściwy sposób, abyś mógł zadzwonić do xGEMM i przyjaciół, aby wykonać jak najwięcej pracy.
Jack Poulson
Tak, fakt, że wykonują mniej więcej taką samą liczbę flopów jak memy, jest powodem, dla którego unika się ich w jak największym stopniu.
Jack Poulson