Numeryczna algebra liniowa
Numeryczna algebra liniowa obejmuje szereg algorytmów dotyczących wektorów i macierzy, takich jak podstawowe operacje na wektorach i macierzach, a także rozwiązywanie układów równań liniowych czy znajdowanie wartości własnych
Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional decomposition): standardowe złożone aplikacje (np. z obsługą plików, korektą poprawności w trakcie pracy itp.) złożony problem optymalizacji
Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional decomposition): standardowe złożone aplikacje (np. z obsługą plików, korektą poprawności w trakcie pracy itp.) złożony problem optymalizacji Podział struktury danych (data decomposition) sortowanie tablic rozwiązywanie układów równań liniowych
Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional decomposition): standardowe złożone aplikacje (np. z obsługą plików, korektą poprawności w trakcie pracy itp.) złożony problem optymalizacji Podział struktury danych (data decomposition) sortowanie tablic rozwiązywanie układów równań liniowych Podział w dziedzinie problemu (domain decomposition) symulacje zjawisk fizycznych w przestrzeni (wykorzystanie podziału geometrycznego geometric decomposition)
Przykłady podziałów zadania na podzadania: Podział ze względu na funkcje (functional decomposition): standardowe złożone aplikacje (np. z obsługą plików, korektą poprawności w trakcie pracy itp.) złożony problem optymalizacji Podział struktury danych (data decomposition) sortowanie tablic rozwiązywanie układów równań liniowych Podział w dziedzinie problemu (domain decomposition) symulacje zjawisk fizycznych w przestrzeni (wykorzystanie podziału geometrycznego geometric decomposition) Podział złożony, mający cechy i podziału funkcjonalnego i danych: przetwarzanie potokowe (np. sekwencji obrazów)
Problemy embarrassingly parallel brak zależności minimalizacja komunikacji Problemy z zależnościami potrzeba komunikacji
Komunikacja wewnątrz wątku zawsze powoduje opóźnienie W czasie komunikacji zasoby maszyny są używane na pakowanie i transmisje danych Synchronizacja zadań wymuszona komunikacją powoduje nierównomierne obciążenie wątków Duży ruch na kanałach przesyłu może przepełnić możliwości maszyny i spowodować dalsze spowolnienie
Opóźnienie (latency) czas potrzebny do przesłania minimalnej (zerowej) porcji danych z wątku A do B. Przepustowość (bandwidth) ilość danych możliwych do przesłania w jednostce czasu. Przesyłanie dużej ilości małych komunikatów powoduje wzrost roli opóźnienia w czasie komunikacji!
Równoważenie podziału pracy Równoważenie podziału danych Równoważenie podziału iteracji pętli Równoważenie obciążenia na systemach heterogenicznych Dynamiczny przydział pracy task pool
Stosunek obliczeń do komunikacji Obliczenia od komunikacji oddziela synchronizacja Równoległość drobnoziarnista Stosunkowo niewielkie ilości pracy obliczeniowej są wykonywane między zdarzeniami komunikacyjnymi Niski stosunek mocy obliczeniowej do komunikacji Ułatwia równoważenie obciążenia Sugeruje wysokie koszty komunikacji i mniejsze możliwości poprawy wydajności Jeśli ziarnistość jest zbyt drobna, możliwe, że narzut wymagany do komunikacji i synchronizacji między zadaniami zajmuje więcej czasu niż obliczenia.
Równoległość gruboziarnista Stosunkowo duże ilości pracy obliczeniowej są wykonywane między zdarzeniami komunikacji /synchronizacji Wysoki stosunek obliczeń do komunikacji Oznacza większe możliwości zwiększenia wydajności Trudniej jest efektywnie zrównoważyć obciążenie.
Istotnym elementem wszelkich równoległych algorytmów macierzowych jest określenie rozdzielenia (dystrybucji) macierzy i wektorów na poszczególne procesory pasmowe kolumnowe lub wierszowe: blokowe cykliczne blokowo cykliczne szachownicowe: blokowe cykliczne blokowo cykliczne
Mnożenie macierz wektor dla podziału pasmowego wierszowego algorytm analiza czasu działania i przyspieszenia obliczeń dla podziału szachownicowego algorytm analiza czasu działania i przyspieszenia obliczeń
Macierze zawierające większość zer nazywane są macierzami rzadkimi Macierze takie powstają np. jako efekt aproksymacji równań różniczkowych cząstkowych typowymi metodami MRS, MES, MOS Praktycznym kryterium rzadkości macierzy jest wykazanie, że klasyczne algorytmy dla macierzy gęstych są wolniejsze od specjalnych algorytmów dla macierzy rzadkich
Specjalne algorytmy dla macierzy rzadkich uwzględniają specjalne sposoby przechowywania macierzy, w których w pamięci komputera umieszcza się tylko wyrazy niezerowe Jest wiele schematów przechowywania macierzy rzadkich Wybór konkretnego schematu zależy od struktury macierzy (układ wyrazów niezerowych w macierzy) i algorytmu, w którym występuje macierz
Formaty: naturalny oparty na współrzędnych CRS skompresowany wierszowy CCS skompresowany kolumnowy CDS diagonalny ITPACK uproszczony postrzępiony diagonalny Dla każdego z formatów istnieją odpowiednie wersje algorytmów realizujących podstawowe operacje macierzowe
Dla części klasycznych algorytmów numerycznej algebry liniowej można w sposób naturalny wykorzystać rzadkość macierzy i dostosować implementację do formatu przechowywania macierzy Przykładem są mnożenie macierz wektor i wszelkie algorytmy oparte na takim mnożeniu Algorytmami, które jest znacznie trudniej efektywnie dostosować do rzadkości macierzy są wszelkie algorytmy oparte na eliminacji Gaussa
Podział macierzy rzadkiej między procesory jest powiązany ze strukturą macierzy (układem wyrazów niezerowych w macierzy), sposobem przechowywania niezerowych wyrazów macierzy w pamięciach lokalnych i algorytmem rozwiązującym zadany problem macierzowy
Metody bezpośrednie warianty eliminacji Gaussa równoległa wersja z podziałem wierszowym macierzy równoległa wersja z podziałem szachownicowym macierzy Metody iteracyjne metody iteracji prostej: Jacobiego, Gaussa Seidla, SOR, SSOR metody podprzestrzeni Kryłowa wersje równoległe oparte na zrównolegleniu podstawowych operacji wektorowych i macierzowych skalowalność zależna od struktury i własności macierzy poprawa uwarunkowania macierzy w metodach podprzestrzeni Kryłowa
Poprawa uwarunkowania macierzy jako przybliżone rozwiązanie układu równań dające się wyrazić w postaci operatora liniowego Działanie metod iteracji prostej (relaksacji) jako wygładzania błędu Wielopoziomowe wygładzanie błędu metody wielosiatkowe (multigrid) Algorytmy niekompletnego rozkładu jako metody poprawy uwarunkowania i metody wygładzania błędu
Dziękuję za uwagę
Krzysztof Banaś - OWW