Rozdział 21, który rzedstawia zastosowanie obliczeń wysokiej wydajności w numerycznej algebrze liniowej 1.0.1 Oeracje macierzowe Istotnym elementem wszelkich równoległych algorytmów macierzowych jest określenie rozdzielenia (dystrybucji) macierzy i wektorów na oszczególne rocesory. Wyróżnia się szereg tyów odwzorowania macierzy na rocesory: asmowe (1D) - kolumnowe lub wierszowe: blokowe cykliczne blokowo-cykliczne szachownicowe (2D): blokowe cykliczne blokowo-cykliczne 1.0.2 Mnożenie macierz-wektor dla macierzy gęstych oznaczenia: y = Ax liczba oeracji arytmetycznych (raca, workload) - W = 2N 2,N - rozmiar macierzy A dla analizy skalowalności w sensie silnym (strong scaling), czas wykonania na ojedynczym rocesorze zadania o stałym rozmiarze N 0 i stałej racy W 0 : T (1,W 0 ) = 2N 2 0t C = W 0 t C dla analizy skalowalności w sensie słabym (weak scaling), czas wykonania na ojedynczym rocesorze zadania o rozmiarze rosnacym liniowo wraz z liczba rocesorów -W() = W 0,N() = 2 : T (1,W 0 ) = 2N() 2 t C = W 0 t C 1
2 skalowalność z ograniczeniem amięci (memory constraint scaling) - w rzyadku algorytmu mnożenia macierz-wektor okrywa się z weak scaling, skalowalnościa w sensie słabym (złożoność czasowa i amięciowa są obie rzędu N 2 ) dla odziału asmowego wierszowego algorytm 1. wymiana danych o wektorze x (allgather) 2. obliczenia lokalne analiza czasu działania i rzysieszenia obliczeń: strong scaling T (,W 0 ) = 2N2 0 t C weak scaling +t S log+ N 0 t W( 1) = W 0t C +t S log+ t W ( 1) 2 T (,W 0 ) = 2N()2 t C +t S log+ N() t W( 1) 2 = W 0t C +t S log+ t W ( 1) W 0 t C +t S log+ t W (dladużych) 2 dla odziału asmowego kolumnowego (odział wektora jak w odziale wierszowym) - wersja 1 algorytm 1. obliczenia lokalne 2. redukcja wektora y (wszystkie rocesory dokonuja redukcji) analiza czasu działania i rzysieszenia obliczeń strong scaling T (,W 0 ) = 2N2 0 t C +(t S + N 0 t W)log = W 0t C +(t S + 2 t W )log weak scaling T (,W 0 ) = 2N()2 t C +(t S + N() t W)log 2 = W 0t C +(t S + t W )log log = W 0 t C +t S log+ t W 2 bardzo dobre właściwości, ale technicznie nie daje się zrealizować jednoczesnej redukcji rzez wszystkie rocesory (jeśli redukcje zserializuje się, czas komunikacji należy omnożyć rzez, co znacznie ogarsza arametry algorytmu)
3 dla odziału asmowego kolumnowego (odział wektora jak w odziale wierszowym) - wersja 2 algorytm 1. obliczenia lokalne 2. ełna wymiana fragmentów wektora y 3. lokalne sumowanie otrzymanych fragmentów (liczba oeracji N/ = N - omijalnie mała w orównaniu do N 2 /, rzy założeniu N ) analiza czasu działania i rzysieszenia obliczeń strong scaling T (,W 0 ) = 2N2 0 t C weak scaling +(t S + 1 2 N 0 t W)log = W 0t C +(t S + 1 2 2 t W )log T (,W 0 ) = 2N()2 t C = W 0t C +(t S + 1 2 N() t W)log +(t S + 1 t W )log 2 2 2 2 t W log = W 0 t C +t S log+ czasy wykonania równoległego lesze niż zserializowany wariant 1 dla odziału szachownicowego dystrybucja wektorów x iy - każdy rocesor rzyisany do wyrazów na rzekatnej głównej rzechowuje N/ odowiadajacych wyrazów algorytm 1. rozgłaszanie elementów x w kolumnach ( niezależnych gru rocesorów, każda złożona z rocesorów) 2. obliczenia lokalne 3. redukcja elementów y w wierszach ( niezależnych gru rocesorów, każda złożona z rocesorów) - ten sam czas realizacji co rozgłaszanie w kolumnach analiza czasu działania i rzysieszenia obliczeń strong scaling T (,W 0 ) = 2N2 0 t C +2(t S + N 0 t W )log = W 0t C +(t S + 2 t W )log weak scaling T (,W 0 ) = 2N()2 t C +2(t S + N() t W )log = W 0t C +(t S + t W )log 2 = W 0 t C +t S log+ t W log 2
4 Wnioski: wszystkie rozważane równoległe algorytmy mnożenia macierz-wektor są skalowalne żaden nie jest liniowo skalowalny, ani w sensie mocnym (strong scaling) ani w sensie słabym weak scaling 1.1 Macierze rzadkie Macierze zawierające większość zer nazywane są macierzami rzadkimi. Niekiedy rocentowy udział zer w macierzach rzadkich sięga onad 99.99%. Macierze takie owstaja n. jako efekt aroksymacji równań różniczkowych cząstkowych tyowymi metodami MRS (metoda różnic skończonych), MES (metoda elementów skończonych), MOS (metoda objętości skończonych). Praktycznym kryterium rzadkości macierzy może być wykazanie, że klasyczne algorytmy dla macierzy gęstych są wolniejsze od secjalnych algorytmów dla macierzy rzadkich. Secjalne algorytmy dla macierzy rzadkich uwzględniaja secjalne sosoby rzechowywania macierzy, w których w amięci komutera umieszcza się tylko wyrazy niezerowe (ewentualnie także niewielka część wyrazów zerowych). Zais macierzy rzadkiej w takiej ostaci nazywany jest komresja macierzy, a formaty zaisu formatami komresji. Jest wiele schematów rzechowywania macierzy rzadkich. Wybór konkretnego schematu często zależy od struktury macierzy (układ wyrazów niezerowych w macierzy) lub od algorytmu, w którym wystęuje macierz. Poniżej znajduje się ois odstawowych formatów komresji macierzy rzadkich, szersza rezentację można znaleźć w [?] lub dowolnym odręczniku numerycznej algebry liniowej. We wszystkich rzykładach użyta jest macierz A, o liczbie niezerowych wyrazów N nz = 9: A = 0 0 1 0 2 3 0 0 4 5 0 0 0 0 0 6 0 7 0 0 8 9 0 0 0 Numeracja tablic stosowanych w konkretnych formatach, a także kolumn i wierszy macierzy A może, zależnie od imlementacji, zaczynać się od 0 lub 1. We wszystkich dalszych rzykładach założona jest numeracja zaczynajac a się od 0, ze względu na stosowana w rzykładach imlementację w języku C. Podstawowymi formatami rzechowywania macierzy rzadkich są: format naturalny - oarty na wsółrzędnych. Przechowywane tablice zawieraja dla każdego elementu macierzy jego wartość, indeks wiersza i indeks kolumny. Wszystkie tablice mają rozmiar N nz. Kolejność wyrazów w tablicy wartości jest w zasadzie dowolna, dla wygody można założyć, że odowiada ona orządkowi w kolejnych wierszach lub kolumnach. Dla rzykładowej macierzy A i rzyadku umieszczania danych wierszami tablice maja ostać: wartosc[i]={1, 2, 3, 4, 5, 6, 7, 8, 9 indeks_wiersz[i]={0, 0, 1, 1, 1, 3, 3, 4, 4 indeks_kol[i]={2, 4, 0, 3, 4, 0, 2, 0, 1 CRS (Comressed Row Storage) - skomresowany wierszowy (zwany także CSR, Comressed Sarse Row). Powstał w efekcie obserwacji, że zarezentowany owyżej format naturalny jest nieefektywny w tablicy indeksów wierszy, wartości dla ojedynczego wiersza owtarzaja
5 się. Zamiast rzechowywać tablicę indeksów wierszy dla każdego wyrazu macierzy, można rzechowywać dla każdego wiersza tablicę, zwana tablica wskaźników dla wierszy, informujac a kiedy wiersz się zaczyna. Koniec wiersza jest związany z oczatkiem kolejnego wiersza, z wyjątkiem wiersza ostatniego. Z tego owodu tablica wskaźników dla wierszy musi mieć wymiar N + 1 (zamiast N) i w ostatnim elemencie rzechowywać informacje o indeksie (w tablicy wartości) ostatniego elementu w ostatnim wierszu, czyli ostatniego elementu macierzy. Informacja ta jednocześnie określa liczbę niezerowych elementów w tablicy. W efekcie rzechowywane tablice zawieraja kolejne wartości macierzy, indeks kolumny dla każdego wyrazu oraz omawianą tablice dla wierszy, zwana tablica wskaźników dla wierszy (wsk_wiersz). Dla rzykładowej macierzy A (rozmiar N = 5, liczba niezerowych wyrazów N nz = 9) tablice maja ostać: wartosc[i]={1, 2, 3, 4, 5, 6, 7, 8, 9 wsk_wiersz[i]={0, 2, 5, 5, 7, 10 indeks_kol[i]={2, 4, 0, 3, 4, 0, 2, 0, 1 W owyższym rzykładzie widać, że wiersz o indeksie 0 zaczyna się wyrazem o indeksie 0 w tablicy wartości, wiersz o indeksie 1 zaczyna się wyrazem o indeksie 2 w tablicy wartości, it. Widać też, że wiersz o indeksie 2 nie osiada żadnego niezerowego wyrazu oraz że N nz = wsk_wiersz[n] 1. CCS (Comressed Column Storage)- skomresowany kolumnowy (zwany także CSC, Comressed Sarse Column). Format CCS jest bardzo odobny do CRS, z tym że wartości rzechowywane są kolumnami, rolę tablicy wskaźników dla wierszy ełni tablica wskaźników dla kolumn, a rolę tablicy indeksów kolumn tablica indeksów wierszy. W efekcie dla rzykładowej macierzy A tablice w formacie CCS maja ostać: wartosc[i]={3, 6, 8, 9, 1, 7, 4, 2, 5 indeks_wiersz[i]={1, 3, 4, 4, 0, 3, 1, 0, 1 wsk_kol[i]={0, 3, 4, 6, 7, 10 W tym rzyadku N nz = wsk_kol[n] 1. CDS (Comressed Diagonal Storage)- skomresowany diagonalny (zwany także CSD, Comressed Sarse Diagonal). Format diagonalny olega na rzechowywaniu rzekatnych macierzy osiadajacych niezerowe wyrazy. Jest ołacalny tylko w rzyadku, kiedy liczba takich rzekat- nych jest niewielka. W rzyadku tego formatu istnieja bardzo efektywne algorytmy, w tym algorytmy równoległe, realizujace oeracje BLAS (w tym iloczyn macierz-wektor). Format ten nie jest analizowany w dalszej części skrytu, jednak wart jest wsomnienia, gdyż niektóre z metod aroksymacji równań różniczkowych cząstkowych (n. metoda różnic skończonych na siatkach regularnych) rowadza do macierzy o niewielkiej liczbie niezerowych rzekatnych. W tym rzyadku imlementacja wysokiej wydajności, wręcz wymaga użycia formatu CDS, jako znacznie efektywniejszego od innych. 1.1.1 Rozroszone rzechowywanie macierzy rzadkich Podział macierzy rzadkiej między rocesory jest owiązany ze struktura macierzy (układem wyrazów niezerowych w macierzy), sosobem rzechowywania niezerowych wyrazów macierzy w amięciach lokalnych i algorytmem rozwiazuj acym zadany roblem macierzowy. Warianty odziału ozostaja takie same jak w rzyadku macierzy gęstych (wierszowe, kolumnowe, szachownicowe, blokowe,
6 cykliczne, it.). Każdy roces rzechowuje sobie rzydzielona część macierzy w swojej amięci lokalnej, stosujac wybrany format skomresowany. Stosownie do formatu macierzy dobierane są imlementacje wykonywania odstawowych oeracji macierzowych składajacych się na realizowany algorytm. 1.1.2 Algorytmy numeryczne dla macierzy rzadkich Dla części klasycznych algorytmów numerycznej algebry liniowej można w sosób naturalny wykorzystać rzadkość macierzy i dostosować imlementację do formatu rzechowywania macierzy. Przykładem są mnożenie macierz-wektor i wszelkie algorytmy oarte na takim mnożeniu. Algorytmami, które jest znacznie trudniej efektywnie dostosować do rzadkości macierzy są wszelkie algorytmy oarte na eliminacji Gaussa. Dla każdego z wymienionych w orzednim unkcie formatów istnieja odowiednie wersje algorytmów realizujacych odstawowe oeracje macierzowe. Z raktycznego unktu widzenia, najważniejsza z nich jest oeracja mnożenia macierz-wektor, y = A x odstawowy element imlementacji zdecydowanej większości algorytmów iteracyjnego rozwiązywania układów równań liniowych. 1.1.3 Imlementacja iloczynu macierz-wektor dla macierzy rzadkich w formacie naturalnym Imlementacja sekwencyjna Podstawowy algorytm ma ostać: for(i=0; i<n_nz; i++){ y[ indeks_wiersz[i] ] += wartosc[i] * x[ indeks_kol[i] ]; Ze względu na odwójne adresowanie ośrednie algorytm ten jest rzadko stosowany w imlementacjach wysokiej wydajności. 1.1.4 Imlementacja iloczynu macierz-wektor dla macierzy rzadkich w formacie CRS Podstawowy algorytm ma ostać: for(i=0; i<n; i++){ for(j=wsk_wiersz[i]; j<wsk_wiersz[i+1]; j++){ y[i] += wartosc[j] * x[ indeks_kol[j] ]; 1.1.5 Imlementacja iloczynu macierz-wektor dla macierzy rzadkich w formacie CCS Podstawowy algorytm ma ostać: for(i=0; i<n; i++){ for(j=wsk_kol[i]; j<wsk_kol[i+1]; j++){ y[ indeks_wiersz[j] ] += wartosc[j] * x[i];
1.1.6 Imlementacja iloczynu macierz-wektor dla macierzy rzadkich w blokowych wariantach formatów skomresowanych Algorytmy dla wariantów blokowych osiagaj a wyższe wydajności bezwzględne (w GFlos). Wydajność całkowita (czas rozwiazania zadania) zależy od liczby niezerowych wyrazów w blokach. 7 1.1.7 Analiza wydajności algorytmów mnożenia macierz-wektor dla macierzy rzadkich Najważniejszym arametrem macierzy rzadkich wływającym na czas realizacji rozmaitych oeracji, w tym iloczynu macierz-wektor, jest liczba niezerowych elementów macierzyn nz. Niezależnie od sosobu rzechowywania macierzy rzadkiej otymalna liczba oeracji zmiennorzecinkowych dla mnożenia macierz-wektor wynosi 2N nz. liczba oeracji liczba odniesień do amięci schemat odniesień do amięci i rzewidywany czas dostęu 1.1.8 Wydajność imlementacji równoległej mnożenia macierz-wektor dla macierzy rzadkich W rzyadku imlementacji równoległej z rzesyłaniem komunikatów, do czasu obliczeń, co do którego zakłada się, że jest równomiernie dzielony omiędzy rocesory dochodzi czas komuikacji. Jeśli założymy odział wierszowy macierzy oraz odział i wymianę elementów wektora x takie jak rzy mnożeniu macierzy gęstych, również czas komunikacji będzie identyczny jak czas komunikacji dla macierzy gęstych: t S log+ N t W( 1) Zależność omiędzy liczba elementów niezerowych macierzyn nz a rozmiarem macierzyn można ująć osługujac się wartościan rnz określajac a średnia liczbę wyrazów niezerowych w ojedynczym wierszu macierzy A. W takim wyadku N nz = NN rnz Praca związana z realizacja algorytmu także jest funkcja liczby wyrazów niezerowych co dla analizy skalowalności w sensie słabym daje W = 2N nz W() = W 0 = 2N nz () Podstawiajac w wyrażeniu na czas owyższe zależności otrzymujemy oszacowania czasu wykonania mnożenia macierz-wektor dla macierzy rzadkich z odziałem wierszowym: strong scaling - N nz = const,n rnz = const T (,W 0 ) = 2N nzt C +t S log+ N nz t W ( 1) = W 0t C N rnz +t S log+ W 0 2N rnz t W ( 1)
8 weak scaling - N nz = N nz (), N rnz = N rnz () T (,W 0 ) = 2N nz()t C = W 0t C = W 0 t C +t S log+ +t S log+ N nz() N rnz () t W( 1) W 0 +t S log+ 2N rnz () t W( 1) W 0 2N rnz () t W( 1) Jak widać, skalowalność w sensie słabym owyższego algorytmu jest gorsza niż odowiedniego algorytmu dla macierzy gęstych (składnik z czasem rzesłania ojedynczej liczby jest roorcjonalny do ). Parametrem, który mógłby orawić własności algorytmu jest średnia liczba wyrazów niezerowych w ojedynczym wierszu N rnz. Gdyby wartość ta rosła roorcjonalnie do wtedy czas rzesyłania ozostawałby stały. Sytuacja taka ma miejsce w rzyadku kiedy wzrost liczby wyrazów niezerowych (także rorcjonalny do ) olega wyłącznie na wzroście N rnz (rozmiar macierzy N ozostaje stały, macierz rzy stałym rozmiarze wyełnia się coraz większa liczba wyrazów niezerowych). W raktyce (n. rzy aroksymacji równań różniczkowych cząstkowych) częściej sotyka się sytuację, kiedy liczba N rnz ozostaje stała, z reguły znacznie mniejsza niż N. Jeśli wtedy zastosuje się algorytm oisany owyżej nie uzyska się skalowalności. Jednak można zmodyfikować algorytm. Jeśli N rnz jest znacznie mniejsze od N, wtedy do omnożenia ojedynczego wiersza otrzeba tylko niewielkiej liczby wyrazów wektora x. Odowiednia struktura macierzy A oraz odowiednia organizacja obliczeń mogą dorowadzić do sytuacji, kiedy ojedynczy roces w celu wykonania oeracji na sobie rzydzielonej części macierzy A otrzebuje tylko małego fragmentu x, którego wyrazy rzechowuje tylko niewielka liczba rocesów, która będziemy oznaczać N ngb. Wtedy w fazie wstęnej algorytmu, zamiast oeracji allgather, każdy rocesor otrzymuje za omoca rzesłań unkt-unkt otrzebne wyrazy wektoraxod rocesówn ngb. Zakładajac, że od każdego rocesu otrzymuje średnio N rcv wyrazów otrzymujemy wzór na czas komunikacji: (t S +N rcv t W )N ngb W rzyadku analizy skalowalności silnej Dla skalowalności w sensie słabym Podstawiajac owyższy wzór do oszacowań czasu realizacji mnożenia macierz-wektora otrzymujemy: strong scaling - N nz = const,n rnz = const T (,W 0 ) = 2N nzt C weak scaling - N nz = N nz (), N rnz = N rnz () + = W 0t C + T (,W 0 ) = 2N nz()t C = W 0t C + = W 0 t C +