VŠB-TU Ostrava, Fakulta elektrotechniky a informatiky



Podobné dokumenty
Metoda konjugovaných gradientů

4. Přednáška: Kvazi-Newtonovské metody:

MATEMATIKA II V PŘÍKLADECH

VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

Úlohy nejmenších čtverců

1 Gaussova kvadratura

0.1 Úvod do lineární algebry

Aplikovaná numerická matematika - ANM

0.1 Úvod do lineární algebry

Co je obsahem numerických metod?

Připomenutí co je to soustava lineárních rovnic

Soustavy. Terminologie. Dva pohledy na soustavu lin. rovnic. Definice: Necht A = (a i,j ) R m,n je matice, b R m,1 je jednosloupcová.

Dnešní látka Opakování: normy vektorů a matic, podmíněnost matic Jacobiova iterační metoda Gaussova-Seidelova iterační metoda

Soustavy linea rnı ch rovnic

stránkách přednášejícího.

3. Mocninné a Taylorovy řady

Matematika (CŽV Kadaň) aneb Úvod do lineární algebry Matice a soustavy rovnic

Matice. Modifikace matic eliminační metodou. α A = α a 2,1, α a 2,2,..., α a 2,n α a m,1, α a m,2,..., α a m,n

příkladů do cvičení. V textu se objeví i pár detailů, které jsem nestihl (na které jsem zapomněl) a(b u) = (ab) u, u + ( u) = 0 = ( u) + u.

(iv) D - vybíráme 2 koule a ty mají různou barvu.

1 0 0 u 22 u 23 l 31. l u11

7.3.9 Směrnicový tvar rovnice přímky

f (k) (x 0 ) (x x 0 ) k, x (x 0 r, x 0 + r). k! f(x) = k=1 Řada se nazývá Taylorovou řadou funkce f v bodě x 0. Přehled některých Taylorových řad.

β 180 α úhel ve stupních β úhel v radiánech β = GONIOMETRIE = = 7π 6 5π 6 3 3π 2 π 11π 6 Velikost úhlu v obloukové a stupňové míře: Stupňová míra:

7.3.9 Směrnicový tvar rovnice přímky

Tento dokument obsahuje zadání pro semestrální programy z PAA. Vypracování. vypracovanou úlohu podle níže uvedených zadání. To mimo jiné znamená, že

1 Mnohočleny a algebraické rovnice

Numerické metody a programování. Lekce 4

Necht tedy máme přirozená čísla n, k pod pojmem systém lineárních rovnic rozumíme rovnice ve tvaru

Buckinghamův Π-teorém (viz Barenblatt, Scaling, 2003)

2. Schurova věta. Petr Tichý. 3. října 2012

Vektory a matice. Obsah. Aplikovaná matematika I. Carl Friedrich Gauss. Základní pojmy a operace

Návrh vysokofrekvenčních linkových transformátorů

Dnešní látka: Literatura: Kapitoly 3 a 4 ze skript Karel Rektorys: Matematika 43, ČVUT, Praha, Text přednášky na webové stránce přednášejícího.

9 Kolmost vektorových podprostorů

SOUSTAVY LINEÁRNÍCH ALGEBRAICKÝCH ROVNIC

FP - SEMINÁŘ Z NUMERICKÉ MATEMATIKY. Katedra matematiky a didaktiky matematiky Technická univerzita v Liberci

Soustavy lineárních rovnic-numerické řešení. October 2, 2008

Matematika 1 MA1. 2 Determinant. 3 Adjungovaná matice. 4 Cramerovo pravidlo. 11. přednáška ( ) Matematika 1 1 / 29

4 všechny koeficienty jsou záporné, nedochází k žádné změně. Rovnice tedy záporné reálné kořeny nemá.

1.5.7 Prvočísla a složená čísla

Numerické metody a programování

1 Linearní prostory nad komplexními čísly

2D transformací. červen Odvození transformačního klíče vybraných 2D transformací Metody vyrovnání... 2

1 Vektorové prostory.

a vlastních vektorů Příklad: Stanovte taková čísla λ, pro která má homogenní soustava Av = λv nenulové (A λ i I) v = 0.

Reprezentace přirozených čísel ve Fibonacciho soustavě František Maňák, FJFI ČVUT, 2005

Globální matice konstrukce

Soustavy lineárních rovnic-numerické řešení

Nalezněte obecné řešení diferenciální rovnice (pomocí separace proměnných) a řešení Cauchyho úlohy: =, 0 = 1 = 1. ln = +,

Co jsme udělali: Au = f, u D(A)

Podobnostní transformace

1 Projekce a projektory

P. Rozhodni, zda bod P leží uvnitř, vně nebo na kružnici k. Pokud existují, najdi tečny kružnice procházející bodem P.

Dynamické programování

[1] LU rozklad A = L U

SPOTŘEBITELSKÝ ÚVĚR. Na začátku provedeme inicializaci proměnných jejich vynulováním příkazem "restart". To oceníme při opakovaném použití dokumentu.

Lineární algebra : Násobení matic a inverzní matice

Geometrická zobrazení

7. TRANSFORMÁTORY. 7.1 Štítkové údaje. 7.2 Měření odporů vinutí. 7.3 Měření naprázdno

Arnoldiho a Lanczosova metoda

2. Určete jádro KerL zobrazení L, tj. nalezněte alespoň jednu jeho bázi a určete jeho dimenzi.

vyjádřete ve tvaru lineární kombinace čtverců (lineární kombinace druhých mocnin). Rozhodněte o definitnosti kvadratické formy κ(x).

Faculty of Nuclear Sciences and Physical Engineering Czech Technical University in Prague

9 Stupně vrcholů, Věta Havla-Hakimiho

1 Řešení soustav lineárních rovnic

Maticí typu (m, n), kde m, n jsou přirozená čísla, se rozumí soubor mn veličin a jk zapsaných do m řádků a n sloupců tvaru:

4. Trojúhelníkový rozklad p. 1/20

Lineární algebra Operace s vektory a maticemi

V předchozí kapitole jsme podstatným způsobem rozšířili naši představu o tom, co je to číslo. Nadále jsou pro nás důležité především vlastnosti

Definice 13.1 Kvadratická forma v n proměnných s koeficienty z tělesa T je výraz tvaru. Kvadratická forma v n proměnných je tak polynom n proměnných s

Matematika B101MA1, B101MA2

Soustavy lineárních rovnic a determinanty

Aproximace funkcí. x je systém m 1 jednoduchých, LN a dostatečně hladkých funkcí. x c m. g 1. g m. a 1. x a 2. x 2 a k. x k b 1. x b 2.

a počtem sloupců druhé matice. Spočítejme součin A.B. Označme matici A.B = M, pro její prvky platí:

Mocnost bodu ke kružnici

9 Skonto, porovnání různých forem financování

Věta 12.3 : Věta 12.4 (princip superpozice) : [MA1-18:P12.7] rovnice typu y (n) + p n 1 (x)y (n 1) p 1 (x)y + p 0 (x)y = q(x) (6)

Základy maticového počtu Matice, determinant, definitnost

6 5 = 0, = 0, = 0, = 0, 0032

Měření indukčností cívek

Definice. Vektorový prostor V nad tělesem T je množina s operacemi + : V V V, tj. u, v V : u + v V : T V V, tj. ( u V )( a T ) : a u V které splňují

Úlohy domácího kola kategorie B

12. Lineární programování

zpracování signálů - Fourierova transformace, FFT Frekvenční

Vzpěr jednoduchého rámu, diferenciální operátory. Lenka Dohnalová

1 Soustavy lineárních rovnic

Numerická matematika 1

Lineární algebra - I. část (vektory, matice a jejich využití)

Soustavy lineárních diferenciálních rovnic I. řádu s konstantními koeficienty

DRN: Soustavy linárních rovnic numericky, norma

7. přednáška Systémová analýza a modelování. Přiřazovací problém

ANALYTICKÁ GEOMETRIE V ROVINĚ

Godunovovy metody pro 1D-Eulerovy rovnice

1 Polynomiální interpolace

Matice přechodu. Pozorování 2. Základní úkol: Určete matici přechodu od báze M k bázi N. Každou bázi napíšeme do sloupců matice, např.

Soustavy se spínanými kapacitory - SC. 1. Základní princip:

Výběr báze. u n. a 1 u 1

Hodnocení přesnosti výsledků z metody FMECA

Lineární algebra : Násobení matic a inverzní matice

Transkript:

Pavel Pras éma diplomové práce: Iterační řešení soustav lineárních rovnic s něolia pravými stranami VŠB-U Ostrava, Faulta eletrotechniy a informatiy Obor: Informatia a apliovaná matematia Vedoucí diplomové práce: Prof. RNDr. Zdeně Dostál, DSc. Ostrava, 1999

2 Obsah OBSAH... 2 ZNAČENÍ... 4 ÚVOD... 5 ÚVOD... 5 1. ZADÁNÍ ÚLOHY... 6 2. KLASICKÝ PŘÍSUP K ŘEŠENÍ SOUSAV LINEÁRNÍCH ROVNIC S NĚKOLIKA PRAVÝMI SRANAMI... 6 3. KLASICKÁ MEODA SDRUŽENÝCH GRADIENŮ... 7 3.1 MEODA PŘEDPODMÍNĚNÝCH SDRUŽENÝCH GRADIENŮ... 9 3.2 SSOR PŘEDPODMÍNĚNÍ... 12 4. SROVNÁNÍ KLASICKÝCH MEOD... 12 5. MEODY SDRUŽENÝCH GRADIENŮ PRO ŘEŠENÍ SOUSAV LINEÁRNÍCH ROVNIC S NĚKOLIKA PRAVÝMI SRANAMI... 13 5.1. MEODA BCG... 14 Předpodmíněná metoda BCG... 15 Konvergence metody BCG... 16 Vylepšení metody BCG... 16 Příčiny numericé nestability metody BCG... 17 5.2. MEODA SCG... 17 Konvergence metody SCG... 19 5.3 MEODA SBCG... 22 Popis SBCG metody... 23 Stanovení lineární závislosti vetorů... 24 SBCG jao zobecnění SCG a BCG... 24 5.4 OBECNÉ POROVNÁNÍ BCG, SCC A BSCG... 25 Porovnání výpočetní a paměťové náročnosti... 26 Shrnutí... 26 6 NÁVRH PARALELIZACE MEOD SDRUŽENÝCH GRADIENŮ PRO ŘEŠENÍ SOUSAV LIN. ROVNIC S NĚKOLIKA PRAVÝMI SRANAMI... 27 6.1 ZADÁNÍ ÚLOHY... 27 6.2 OBECNÉ SCHÉMA PARALELNÍHO ŘEŠIČE... 27

3 6.3 PRINCIPY MEZIPROCESOVÉ KOMUNIKACE... 28 6.4 NÁVRH PARALELIZACE MEODY BCG... 28 Sevenční verze BCG metody... 28 Paralelní verze BCG metody... 30 Analýza omuniačního modelu... 31 Komuniační protool metody BCG... 33 6.5 NÁVRH PARALELIZACE MEODY SCG... 35 Sevenční verze metody SCG... 35 Paralelní verze metody SCG... 36 Analýza omuniačního modelu... 39 Komuniační protool SCG... 40 6.6 NÁVRH PARALELIZACE MEODY SBCG... 41 Sevenční verze metody SBCG... 41 Paralelní verze SBCG... 43 Analýza omuniačního modelu... 46 Komuniační protool SBCG... 47 7. IMPLEMENACE SBCG ALGORIMU V JAZYCE C... 48 7.1 IMPLEMENAČNÍ SRAEGIE... 48 7.2 IMPLEMENACE ZÁKLADNÍCH VSUPNĚ-VÝSUPNÍCH FUNKCÍ... 51 7.3 IMPLEMENACE MAICOVÝCH OPERACÍ... 52 Násobení matice a vetoru... 53 Reprezentace řídých matic... 54 Vylepšená varianta... 54 Programová implementace řídých matic... 56 7.4 IMPLEMENACE SEKVENČNÍ VARIANY SBCG MEODY... 56 7.5 IMPLEMENACE PARALELNÍ VARIANY SBCG MEODY... 57 Implementace funcí pro meziprocesovou omuniaci... 58 Paralelní implementace funce pro násobení dvou matic... 58 Protool zpráv SBCG metody... 59 8 NUMERICKÉ EXPERIMENY... 62 8.1 POROVNÁNÍ NUMERICKÉ SABILIY BCG A SBCG... 62 8.2 MODELOVÝ PŘÍKLAD SYSÉMU ODESSY... 65 8.3 ESY PARALELNÍ VERZE... 68 ZÁVĚR... 71 LIERAURA... 72

4 Značení R n Kp-operace M S N_S n-rozměrný Eulidovsý prostor násobení matice soustavy vetorem počet soustav v master systému počet soustav ve slave systému počet nevyřešených (ativních) soustav 1 i q Necht X = [ x,..., x,..., x ] je n q matice, pa označíme: x i i-tý sloupec matice X X(:,i) i-tý sloupec matice X (syntaxe Matlabu) X transponování matice X X transponování matice X (syntaxe Matlabu) X -tá aproximace X Užité zraty CG PCG BCG SCG SBCG metoda sdružených gradientů (Conjugate Gradients Method) metoda předpodmíněných sdružených gradientů (Preconditioned CG Method) metoda bloových sdružených gradientů (Bloc CG Method) metoda postupných sdružených gradientů (Successive CG Method) metoda postupných bloových sdružených gradientů

Úvod Cílem této práce je praticá realizace něolia variant metod sdružených gradientů, jejich apliace pro řešení soustav lineárních rovnic s něolia pravými stranami. S tímto problémem se setáváme při numericém řešení parciálních diferenciálních rovnic, napřílad při řešení úloh tvarové optimalizace. Vznilá matice soustav je symetricá, řídá a pozitivně definitní. Klasicý přístup řešení soustav lineárních rovnic s něolia pravými stranami je založen na přímých řešičích, teré provádějí fatorizaci matice soustavy a jednotlivé soustavy řeší dopřednou a zpětnou substitucí. Je zřejmé, že výše uvedený postup přestává být efetivní pro řešení rozsáhlých soustav, neboť paměťové nároy pro uložení fatorizované matice jsou značné. Na jiném principu pracují iterační řešiče. yto metody vytvářejí posloupnost aproximovaných řešení soustavy. Matice soustavy se účastní pouze operace násobení s vetorem, její řídý charater zůstává zachován, a proto je paměťová náročnost iteračních řešičů mnohem menší než u přímých. Nevýhodou iteračních řešičů ovšem je, že řeší soustavy lineárních rovnic pouze s jednou pravou stranou. Řešení soustav s něolia pravými stranami lze sice nalézt postupně, nicméně efetivita tohoto postupu je nízá, neboť řešení těchto soustav hledáme nezávisle na předešlých řešeních. Metoda sdružených gradientů se dnes stala praticy standardem pro řešení soustav lineárních rovnic s jednou pravou stranou. Pro problémy s více pravými stranami v omerčních balících vša stále dominují přímé řešiče. Numericé experimenty nám ovšem uazují, že iterační řešiče jsou vždy paměťově méně náročné a v něterých případech navíc rychlejší než standardní přímé řešiče. Dále uváděné algoritmy rozšiřují metodu sdružených gradientů ta, aby byla efetivní i pro řešení soustav lineárních rovnic s něolia pravými stranami. Iterační řešiče pro více pravých stran můžeme rozdělit v závislosti na tom, zda jsou všechny pravé strany dostupné současně. Jiné metody použijeme, poud známe všechny pravé strany zároveň, a jiné, poud se pravé strany dozvídáme postupně. Poud známe všechny pravé strany, můžeme řešení těchto soustav použít dále uváděné bloové a postupné sdružené gradienty. V opačném případě můžeme použít modifiovanou Lanczosovu proceduru, terá spočívá ve výpočtu něolia vlastních vetorů odpovídajících nejmenším vlastním číslům matice soustavy. yto vetory se pa použijí reduci rezidua [Dostál, Vondrá, Rasmussen, 1997]. V této práci se vša budeme zabývat algoritmy, teré předpoládají, že vetory všech pravých stran jsou známy současně. 5

6 1. Zadání úlohy Uvažujme následující systém lineárních rovnic K X = F, (1) de K je n n symetricá pozitivně definitní matice, 1 i q 1 i q F = [ f,..., f,..., f ] je n q matice pravých stran a X = [ x,..., x,..., x ] je n q matice řešení. Úolem je efetivně nalézt řešení soustavy (1). 2. Klasicý přístup řešení soustav lineárních rovnic s něolia pravými stranami Klasicý přístup řešení (1) je založen na fatorizaci matice K. Poud použijeme LU fatorizaci, nejdříve rozložíme matici K a potom řešíme jednotlivé soustavy dopřednou a zpětnou substitucí. Paměťově i časově nejnáročnější operací u tohoto postupu je fatorizace matice K. ato fatorizace se vša provádí pouze jednou a řešení příslušných soustav s fatorizovanou maticí lze snadno zísat dopřednou a zpětnou substitucí: rozlož K = LU for i = 1,...,q vyřeš Ly = f i. vyřeš Ux i = y Přímé řešiče jsou výhodné v tom, že využívají specificých rysů soustavy, napřílad šířy pásu matice, nebo snadného řešení soustav s něolia pravými stranami. Ja již bylo uvedeno, tyto výhody přestávají platit, poud chceme řešit velé omplexní problémy, neboť paměťový prostor pro uložení fatorizované matice může být značný. Navíc fatorizace matice je obtížně paralelizovatelná operace, neboť její šálovatelnost závisí na šířce pásu matice. Výše zmíněné nevýhody přímých řešičů vedou hledání nových algoritmů, zvláště poud chceme efetivně řešit velé, např. 3D problémy s něolia pravými stranami. V posledních letech byl ve vývoji iteračních řešičů zaznamenán velý poro. Dříve často formulovaná nevýhoda, že rychlost onvergence je závislá na typu problému již zcela neplatí, neboť účinné

7 předpodmiňovací techniy v mnoha případech něolianásobně zlepšily výon těchto metod. 3. Klasicá metoda sdružených gradientů Dříve než objasníme principy metod sdružených gradientů, teré jsou určeny pro řešení soustav lineárních rovnic s něolia pravými stranami, odvodíme si lasicou metodu sdružených gradientů. ato metoda byla poprvé publiovaná v článu [Hestenes, Stiefel, 1952]. Uvažujme následující soustavu lineárních rovnic o n neznámých: Kx = f (3.1) de K je n n symetricá pozitivně definitní matice, f je vetor pravé strany a x je (neznámý) vetor řešení, f, x R n. Na řešení (3.1) se můžeme dívat taé jao na minimalizaci vadraticého funcionálu 1 ϕ( x) x = Kx x f, (3.2) 2 1 neboť φ( x) = Kx f, což znamená, že x = K f minimalizuje φ( x ). Minimalizace ϕ( x ) a řešení Kx = f jsou tedy evivalentní problémy. Nová aproximace řešení x může být zísána z předchozí aproximace x 1 pomocí směru p s délou rou α předpisem x = x 1 + α p (3.3) Hodnota parametru α je určena ta, aby minimalizovala ϕ( x + α p ) tedy ϕ( x 1 + α p ) = 0 (3.4) α nebo evivalentně 1, p r = p ( r 1 α Kp ) = 0 α = p r 1 / p Kp (3.5), (3.6) de r = f Kx je reziduum -té aproximace řešení x. Nový směr p hledáme ve tvaru p = r + β p (3.7) 1 1 ta, aby byl K-ortogonální předchozím směrům. uto podmínu zabezpečí relace

8 pi Kp j = 0 pro i j (3.8) de parametr β p Kp = je volen ta, aby platila podmína 1 0 β = p 1 Kr 1 / p 1 Kp 1 (3.9), (3.10) Pozorování Pro metodu sdružených gradientů platí: 1. pi Kp j = 0 pro i 2. ri rj = 0 pro i j a 3. p r = 0 j yto vlastnosti zaručují důležitý rys: poud počítáme na přesné aritmetice, zísáme přesné řešení maximálně po n iteracích. V praticých případech je algoritmus prováděn ta dlouho, doud norma rezidua není dostatečně malá. Vhodné ritérium uončení iteračního cylu je napřílad r > ε f, de ε je nějaé malé ladné číslo, typicy 10 4. Nyní upravme vzorec pro výpočet oeficientu α. Poud dosadíme do (3.6) vzorec (3.7) a využijeme pozorování č. 3, můžeme psát α = r r p Kp Ze vzorce (3.5) plyne, že 1 1 /. (3.11) r = r α Kp. (3.12) 1 2 1 1 Poud tuto rovnici vynásobíme vetorem r 1 respetive r 2, platí v souladu s pozorováním č. 2 následující vztahy: r r = α r Kp, (3.13) 1 1 1 1 1 r r = α r Kp. (3.14) 2 2 1 2 1 Jestliže si nyní ze vzorce (3.7) reurzivně vyjádříme r 2 a tento vztah dosadíme do (3.14), můžeme s využitím pozorování č. 1 psát r r = α p Kp. (3.15) 2 2 1 1 1 Využitím (3.13) a (3.15) se výpočet oeficientu β zjednoduší do tvaru: β = r 1 r 1 r 2 r 2 /. (3.16)

9 ěmito úpravami jsme zísali efetivnější variantu algoritmu, neboť v aždé iteraci potřebujeme vypočítat pouze jednu operaci násobení matice soustavy a vetoru. Algoritmus metody sdružených gradientů lze zapsat následovně: Algoritmus CG Inicializace: = 0; r0 = f Kx0 while r > ε f do begin = + 1 if = 1 then p1 = r0 else β r r / r r p = r- 1 + β p- 1 if. u = Kp. α = r 1 r 1 / p u x = x- 1 + α p r = r- 1 α u = 1 1 2 2 3.1 Metoda předpodmíněných sdružených gradientů Uvažujme znovu soustavu lineárních rovnic se symetricou pozitivně definitní maticí Kx = f. Pro urychlení onvergence můžeme použít předpodmínění. Princip metody předpodmíněných sdružených gradientů spočívá v apliaci metody sdružených gradientů na transformovaný systém lineárních rovnic de $ K Kx $$ = f$, (3.1.1) = C 1 KC 1, $x = Cx, f $ = C 1 f a C je symetricá pozitivně definitní matice, terou vybíráme ta, aby matice $ K byla dobře podmíněná, a z důvodu, terý uvedeme později, musí mít matice C 2 jednoduchou struturu. Jestliže apliujeme sdružené gradienty na soustavu (3.1.1), zísáme následující algoritmus:

10 Algoritmus PCG verze 1 Inicializace: = 0; r$ = f$ Kx$ 0 0 while $ r $ > ε f do begin = + 1 if = 1 then p$ r$ 1 = 0 else β = r$ r$ / r$ r$ 1 1 2 2 p$ r$ p$ = - 1 + β - 1 if. 1 1 α = r$ r$ / p$ C KC p$ 1 1 x$ x$ p$ = - 1 + α 1 1 r$ r$ C KC p$ = -1 α. (3.1.2) V tomto případě označuje r$ f$ Kx $ $ =, respetive $x, -tou aproximaci rezidua, respetive řešení transformovaného systému. Nás vša zajímá řešení původní soustavy. Jednou z možností je zísat toto řešení z rovnice x = C 1 x$. Nicméně poud definujeme $p = Cp, $x = Cx a $r = C 1 r, vyhneme se explicitní referenci na matici C 1. Poud dosadíme do (3.1.2) a připomeneme, že f $ = C 1 f obdržíme a $x = Cx, pa Algoritmus PCG verze 2 1 1 Inicializace: = 0; C r = C ( f Kx ) 1 while C r > ε f do begin = + 1 if = 1 then 1 Cp C r 1 = 0 0 else 1 1 1 1 β = ( C r 1) ( C r 1) / ( C r 2) ( C r 2 ) 1 Cp = C r- 1 + β Cp-1 if. 1 1 1 1 α = ( C r 1) ( C r 1) / ( Cp ) ( C KC )( Cp ) Cx = Cx + Cp - 1 α 0

11 1 1 1 1 C r = C r- 1 α ( C KC ) Cp. (3.1.3) Označme nyní předpodmiňovač M = C 2. Nechť M je taé symetricá a pozitivně definitní matice a nechť je vetor z řešení soustavy Mz = r. Pa můžeme výše uvedený algoritmus zjednodušit do této onečné podoby: Algoritmus PCG Inicializace: = 0; r0 = f Kx0 while r > ε f do begin solve Mz = r = + 1 if = 1 then p1 = z0 else β r z / r z p = z- 1 + β p- 1 if. u = Kp. α = r 1 z 1 / p u x = x- 1 + α p r = r- 1 α u = 1 1 2 2 Pozorování: 1. Lze uázat, že pro tento algoritmus platí: 1 r M r = 0 pro i j i j 1 1 p ( C KC ) p i j = 0 pro i j 2. Jmenovatel r 2z 2 = z 2 Mz 2 nebude nidy nulový, neboť M je pozitivně definitní. 3. Matice C se používá pouze při odvozování, v samotném algoritmu používáme předpodmiňovač M = C 2. 4. Předpodmiňovač M je vhodné volit ta, aby soustava Mz = r byla snáze řešitelná a zároveň algoritmus rychle onvergoval.

12 3.2 SSOR předpodmínění V našich experimentech jsme použili SSOR předpodmínění. Matice M se v tomto případě vypočítá vztahem 1 M = ( L + D) D ( L + D), (3.2.1) de L, respetive D, je dolní trojúhelníová část, respetive diagonála matice K. (Platí tedy K = L + D + L.) 4. Srovnání lasicých metod Ja již bylo uvedeno, pro řešení soustav lineárních rovnic s něolia pravými stranami můžeme samozřejmě použít i standardní metodu sdružených 1 1 2 2 gradientů ta, že budeme postupně řešit soustavy Kx = f, Kx = f,..., q q Kx = f. Počet iterací potřebných vyřešení q soustav je vša obecně q-rát vyšší než pro soustavu s jednou pravou stranou. o znamená, že celová doba výpočtu je asi q-rát delší než doba výpočtu pro soustavu s jednou pravou stranou. Poud vša použijeme přímý řešič založený na fatorizaci matice K, pa pro aždou další pravou stranu počítáme pouze dopřednou a zpětnou substituci. Celový čas 10 8 6 4 2 0 1 2 3 4 5 6 7 8 9 q CG LU a)

13 Čas výpočtu jedné soustavy 5 4 3 2 1 0 1 2 3 4 5 6 7 8 9 CG LU q b) Obráze 4.1 Doba výpočtu metody sdružených gradientů (CG) a přímého řešiče (LU) v závislosti na počtu pravých stran a) celová doba výpočtu b) průměrná doba výpočtu na jednu pravou stranu. Porovnání rychlosti přímého a iteračního řešiče je na obrázu 4.1. Parametr q představuje počet pravých stran. Pro úlohu s jednou pravou stranou je rychlejší iterační řešič, neboť cena fatorizace u přímého řešiče je vysoá. Poud zvětšujeme počet pravých stran, stává se výhodnější použití přímého řešiče, neboť cena dopředné a zpětné eliminace je nižší než cena sdružených gradientů. Ovšem na druhé straně paměťové nároy u metody sdružených gradientů jsou vždy nižší než je tomu u přímých řešičů. Při těchto úvahách musíme vzít samozřejmě v úvahu veliost problému (počet neznámých). Pro běžné 2D simulace jsou přímé řešiče dobrou alternativou (jsou paměťově náročnější, ale celově rychlejší), nicméně pro 3D problémy už vítězí iterační řešiče ja v oblasti časové, ta i v oblasti paměťové složitosti. Hlavní důvod, proč výon metody sdružených gradientů u problémů s více pravými stranami zaostává, je ten, že řešení soustav probíhá navzájem nezávisle na sobě. o znamená, že informace, teré byly zísány při řešení předchozích soustav, nejsou použity pro řešení zbývajících soustav. Lze proto předpoládat, že souběžné řešení něolia soustav může výon sdružených gradientů zlepšit. 5. Metody sdružených gradientů pro řešení soustav lineárních rovnic s něolia pravými stranami V této apitole popíšeme principy, teré rozšíří metodu sdružených gradientů o algoritmy, teré lze použít pro efetivní řešení soustav lineárních rovnic s něolia pravými stranami.

14 5.1. Metoda BCG Metoda BCG je zobecněním lasicé metody sdružených gradientů. Uvažujme soustavu lineárních rovnic (1). Obdobně jao u metody sdružených gradientů definujme funcionál de Φ( X ) = [ φ1( x1 ),..., φi ( xi ),..., φq ( xq )] (5.1.1) 1 2 ϕ i ( x i ) = x i Kxi xi f i. (5.1.2) I v tomto případě můžeme uázat, že minimalizace Φ( X ) je řešení soustavy (1). 1 i q Předpoládejme, že -tá aproximace řešení je X = [ x,..., x,..., x ]. 1 i q Potom odpovídající reziduum R = [ r,..., r,..., r ] je definované předpisem 1 1 q q R = F KX = [ f Kx,..., f Kx ]. (5.1.3) Novou aproximaci řešení X zísáme X = X 1 + P α, (5.1.4) 1 i q de P = [ p,..., p,..., p ] je n q matice směrů, α je q q matice dély rou, terá je určena splněním podmíny tedy min Φ ( X 1 P α ), (5.1.5) α R R q q + Φ( X 1 + P α ) = 0, (5.1.6) α nebo jednodušeji P R = P ( R KP α ) =. (5.1.7) 1 0 Z podmíny olmosti R na P můžeme vyjádřit α vztahem α = ( ) 1. (5.1.8) 1 P KP P R Nový směr P hledáme ve tvaru P = R 1 + P 1β (5.1.9) ta, aby byl K-ortogonální předchozímu směru P 1, tedy aby platilo

15 P KP = 1 0. (5.1.10) Splnění této podmíny zaručíme q q maticí β, terá je určena předpisem 1 β = ( P KP ) P KR. (5.1.11) 1 1 1 1 Poud definujeme P0 = R0 = F KX 0 a upravíme vztahy (5.1.7) a (5.1.10), můžeme napsat následující vlastnosti: 1. Pi KPj = 0 pro i j 2. R i Rj = 0 pro i j a 3. P R = 0. V souladu s těmito vlastnostmi můžeme výpočet α a β taé vyjádřit vztahy α = ( ) 1 (5.1.12) 1 1 P KP R R 1 β = ( R R ) R R (5.1.13) 2 2 1 1 Podobně jao u metody standardních sdružených gradientů (CG), je důležitý fat, že při použití přesné aritmetiy může BCG metoda zísat přesné řešení nejvýše při [(n + m -1) / m] iteracích. Nicméně v praticé implementaci BCG je iterační proces uončen za splnění podmíny i i max( r > ε f, i = 1,..., q). (5.1.14) Předpodmíněná metoda BCG Poud použijeme předpodmiňovač M, pro výpočet α a směru P použijeme tyto předpisy: de α = ( ) 1, (5.1.15) 1 1 P KP R Z P = Z 1 + P 1β (5.1.16) 1 Z = M R, β 1 = ( R Z ) R Z. 2 2 1 1 Analogicy CG algoritmu můžeme BCG s předpodmiňovačem M napsat následovně: Algoritmus BCG [Bloc CG] Inicializace: = 0; R = F KX 0 0 i i while max( r > ε f, i = 1,..., q) do

16 begin. solve MZ = R = + 1 if = 1 then P1 = Z0 else 1 β = ( R 2Z 2) R Z P = Z- 1 + P- 1 β if. U = KP α = P U R Z X = X - 1 + P α R = R- 1 U α ( ) 1 1 1 1 1 Konvergence metody BCG Předpolad, že všechny soustavy rovnic onvergují ve stejné iteraci, je v praticých případech nereálný. Ja bylo uvedeno výše, iterační cylus BCG algoritmu se uončuje až v oamžiu, dy jsou normy všech reziduí menší než je předepsaná tolerance ε. Často se vša stává, že jsou něteré soustavy lineárního systému již s uspoojivou přesností vyřešeny. V těchto případech BCG zpřesňuje tyto řešení zbytečně, a navíc tento postup může vést i numericé nestabilitě celého algoritmu, neboť normy vetorů p a r, teré přísluší těmto vyřešeným soustavám, mohou být významně menší než normy 1 vetorů zbylých nevyřešených soustav, což způsobí, že matice ( R M R ) 1 a ( P KP ) 1 budou špatně podmíněny, nebo budou doonce singulární. Vylepšení metody BCG Abychom se vyhnuli výše uvedeným problémům, budeme metodu BCG provádět jen pro ty soustavy, teré ještě nejsou s dostatečnou přesností vyřešeny. Poud se při testování přesnosti řešení těchto soustav uáže, že něteré soustavy jsou již s dostatečnou přesností vyřešeny, vyjmeme je z iteračního cylu, a další iterace budeme provádět jen s dosud nevyřešenými soustavami.

17 Příčiny numericé nestability metody BCG Při implementaci metody BCG potřebujeme vypočítat inverzní matice 1 ( R M R ) a ( P KP ). Aby byl algoritmus BCG stabilní, je dále nutné zaručit, aby sloupcové vetory matic P a R byly lineárně nezávislé. V případě, že matice P a R nemají plnou hodnost, není metoda BCG definována. Jeliož jsou hodnosti P a R 1 shodné, stačí sledovat hodnost jen jedné z těchto matic. V literatuře se setáváme s něolia postupy ja zachovat numericou stabilitu BCG. Jednou z možností je vyjímat závislé soustavy z problému. Nicméně normy reziduí z redundantních sloupců, teré vyjímáme z iteračního procesu, nemusí být vždy nutně malé. Řešení soustav, teré odpovídají těmto vyjmutým vetorům, můžeme vypočítat zvlášť. V další seci vša uážeme daleo efetivnější postup manipulace s těmito redundantními sloupci. 5.2. Metoda SCG Podstatou metody SCG je využití směru, terý byl už použit řešení jedné soustavy, zísání aproximace řešení pro všechny zbylé soustavy. ato metoda může řešení soustav lineárních rovnic s něolia pravými stranami výrazně urychlit, neboť zísání nového směru je u metody sdružených gradientů drahá operace - zahrnuje násobení matice a vetoru u = Kp a vyřešení předpodmíněného systému Mz = r. Uvažujme lineární systém s q pravými stranami 1 2 m s q 1 2 m s q K[ x, x,..., x,..., x,..., x ] = [ f, f,..., f,..., f,..., f ] (5.2.1) Předpoládejme, že předpodmíněné sdružené gradienty jsou použity řešení m-té soustavy lineárního systému (v literatuře bývá tato soustava označována jao main, master nebo seed ). ento proces generuje až do -té iterace posloupnost ( L 1 KL ) -ortogonálních neboli sdružených vetorů, teré m n vytvářejí Krylovův podprostor R R. Podstatou metody je tedy využití těchto sdružených vetorů výpočtu řešení a reziduí pro soustavy ve slave systému. Řešení a rezidua slave soustav se v aždé iteraci vypočítají vztahy s s sm m x = x 1 α p (5.2.2) s s sm m r = r 1 α Kp (5.2.3) Parametr α sm s vychází z podmíny, že vetor r tedy je olmý vetoru p m,

18 s ( r ) p m s = 0 ( r sm m m Kp ) p = 1 α 0 (5.2.4) Pro výpočet parametru α sm pa dostáváme vztah α sm ( r ) p = ( p ) Kp s 1 m m m (5.2.5) Popis SCG metody Při inicializaci vybereme (libovolnou) soustavu ze systému lineárních rovnic a označíme ji jao master. Zbývající soustavy tvoří slave systém. Jamile je master systém s požadovanou přesností vyřešen, vyjmeme ho z problému a ze slave systému vybereme další soustavu, terou označíme jao master. Na tento nový master systém spustíme znovu metodu sdružených gradientů. Řešení, respetive rezidua slave soustav, atualizujeme v aždé iteraci vzorcem (5.2.2), respetive vzorcem (5.2.3). Iterační proces ončí v oamžiu, dy jsou všechny soustavy s požadovanou přesností vyřešeny. Metodu SCG s předpodmiňovačem M pro řešení soustav lineárních rovnic s něolia pravými stranami můžeme zapsat následovně: Algoritmus SCG i i i Inicializace: = 0; r0 = f Kx0, i = 1,..., q for m = 1 until q do begin /* Pro všechny soustavy */ new_main = RUE m m while r > ε f do begin m solve Mz = r = + 1 if new_main then new_main = FALSE p = z 1 else m β m ( r ) z / ( r ) z p = z- 1 + β p- 1 if. u = Kp = 1 1 2 2 δ = p u for j = m until q do begin /* slave systém je (m+1,...,q) */

19... α j = ( r 1) z 1 / δ j j x = x + p j 1 α j 1 α r = r u Konvergence metody SCG Pro studium onvergenčních vlastností slave systému separujeme vetor pravé strany f s do omponent ( f s ) a ( f s ) ta, aby platil vztah s s s f = ( f ) + ( f ), (5.2.6) de s ( f ) s m ( f ) f m = m m f = ξ f ( f ) f m s ( f ) s m = f ξ f (5.2.7) Na řešení slave soustavy se můžeme dívat jao na řešení dvou následujících soustav lineárních rovnic: s s K( x ) = ( f ) (5.2.8) s s K( x ) = ( f ) (5.2.9) s s s x = ( x ) + ( x ) (5.2.10) Pro jednoduchost předpoládejme, že počáteční aproximace řešení x 0 je nulový vetor. Proto můžeme psát: m m r0 = f (5.2.11) s s r0 = f (5.2.12) s ( ) s r ( f ) 0 = (5.2.13) s s ( r ) = ( f ) (5.2.14) 0

20 Z minimalizační vlastnosti slave systému plyne, že slave systém s s K( x ) = ( f ) bude mít stejnou rychlost onvergence jao master systém, tedy že jeho rezidua splňují podmínu: s ( ) s r γ ( r ) 1 K 0 1 K m = γ ( ξr ) K 0 1 (5.2.15) de γ = ( ( κ ) 1) / ( ( κ ) + 1 ), κ je číslo podmíněnosti matice K, a je číslo iterace. Rezidua olmé části slave systému můžeme vyjádřit jao: s s s ( r ) = ( f ) K( f ) s sm = ( r ) ( α ) 0 j = 1 j Kp m j sm j m 0 0 j 0 j = 1 s m = r ξr ( α ) K r s = ( I P + 1) r, (5.2.16) 0 = + 1 j 1 m + 1 0 j = 1 j 0 s de P r η K r je projece z r s do Krylova prostoru z master m systému R a η + 1 j je onstantní oeficient. Kombinací výše uvedených výsledů dostáváme: s s s r = ( r ) + ( r ) 1 K 1 K s m ( I P ) r + γ ξ r (5.2.17) + 1 0 1 K 0 1 K Nyní můžeme formulovat následující onvergenční vlastnosti. 1. Jestliže je r s olmý R m, tedy ξ = 0 a P r s 0 + 1 m+ 1 0 = 0, pa nelze očeávat žádné zlepšení rychlosti onvergence slave systému. 2. Jestliže je r s rovnoběžný r m ( ( r s ) 0 0 0 = 0 nebo r s je obsažený v R m 0 + 1 ), pa P = + 1 I a norma rezidua slave systému se bude zmenšovat stejně rychle jao norma rezidua master systému. 3. Jestliže je r s obsažen v K m s 0 R +1, tedy ξ = 0 a ( I P +1) r0 = 0, pa je s slave systém vyřešen přesně a r = 0. 0

21 Poud se norma rezidua slave systému nezmenšila pod požadovanou m toleranci, přemístíme slave systém do master systému, nastavíme r s 0 r a na tento nový master systém spustíme znovu metodu sdružených gradientů. V následujícím textu budeme označovat vetor, terý byl v předchozím master systému, závorou (např. r m ). Vetor, terý je nyní v master systému, budeme označovat bez závory (např. r m ). Nechť l je celový počet iterací předchozího master systému. Pro studium vlastností nynější master soustavy připomeneme, že počáteční rezidua jsou olmá e Krylovu podprostoru z předchozího master systému, tedy m m ( r ) 0 v = 0 pro všechna v R l, (5.2.18) m m m l m 1 de R l = span{ r0, Kr0,..., K r0 } = span{ p1,..., p l }. Nynější master systém bude generovat směry rozšířením nového Krylova podprostoru m m l 1 m R l = span{ r0, Kr0,..., K r0 } = span{ p1,..., p l } (5.2.19) Předchozí a nynější směry lze v Krylovu podprostoru vyjádřit: j p = η K r i i j= 1 i j 1 m 0 j 1 pi = η j K r j= 1 m 0 (5.2.20) (5.2.21) Nyní chceme uázat, že: ( p ) i p j = 0 pro 1 j l i + 1 (5.2.22) K tomu potřebujeme doázat, že aždá složa p j je olmá p i, tedy j 1 m ( p ) ( K r0 ) = 0 pro 1 j l i + 1 (5.2.23) i Využitím symetrie matice K dostáváme: i j 1 m m j m ( pi ) ( K r ) = K r ( K r ) 1 1 0 η 0 0 = 1 = i j+ 2 m m η K r 0 ( r0 ) (5.2.24) = 1

22 i 2 = 1 j+ m Poud je j + i - 2 menší než l - 1, pa výraz η K r 0 je obsažen v předchozím Krylovu podprostoru, a ten je proto olmý nynějšímu reziduu, to znamená, že r m 0 i j m j+ m m ( p ) ( K r ) = 1 K r ( r ) i 2 0 η 0 0 = 0. (5.2.25) = 1 Závěr tohoto pozorování je ten, že vetory p i a p j vytvářejí dva Krylovy podprostory, teré jsou si pro i + j l + 1 navzájem ortogonální. Zvláště poud j nepřeročí l / 2, systém p,..., p, p,..., p, terý má dimenzi 2i, vytváří bázi podprostoru: 1 i 1 * m m i 1 m m m i 1 m R = span{ r, Kr,..., K r ; r, Kr,..., K r } 0 0 0 0 0 i 1 = span{ Z, KZ,..., K Z}, (5.2.26) m m de Z = { r0, r0 }. edy, pro počet iterací menší než l/2 je nynější master systém matematicy evivalentní s metodou bloových sdružených gradientů a prvních l / 2 iterací z nynějšího master systému onverguje stejně rychle jao metoda BCG. i 0 5.3 Metoda SBCG Ja bylo uvedeno výše, poud se v iteračním cylu metody BCG uáže, že matice směrů P a matice reziduí R nemají plnou hodnost, musíme příslušné závislé soustavy vyjmout z problému. Nabízí se otáza, ja lze efetivně zísat řešení těchto závislých soustav. Elegantní metodu formulovali Suarjana a Law [Suarjana, Law, 1994]. Navrhují vyjímat závislé soustavy pouze z procesu K- ortogonalizace a příslušná řešení těchto závislých soustav počítat bloovou formou SCG algoritmu. uto metodu pojmenovali Successive Bloc Conjugate Gradient (SBCG). Algoritmus zavádí podobně jao SCG dvě supiny soustav: master (účastní se procesu K-ortogonalizace) slave (neúčastní se procesu K-ortogonalizace, obsahuje lineárně závislé sloupce) Řešení soustav, teré jsou v master systému se počítají bloovými sdruženými gradienty. Zbylé soustavy, teré jsou ve slave systému se dopočítají bloovou formou metody SCG.

23 Popis SBCG metody Při inicializaci jsou všechny soustavy označené jao master. Slave systém tedy neobsahuje žádnou soustavu. Jestliže se dyoliv v iteračním cylu zjistí, že něteré sloupce matice P nebo R ztratily svou lineární nezávislost, přemístíme soustavy, teré odpovídají těmto závislým sloupcům z master do slave systému. ím máme zajištěnu stabilitu řešení, neboť proces K- ortogonalizace pa bude vždy prováděn pouze s lineárně nezávislými maticemi. Jedna z výhod této metody je, že soustavy, teré přemístíme do slave systému, onvergují současně se soustavami, teré zůstaly v master systému. ato vlastnost platí, neboť rezidua slave systému jsou v podprostoru reziduí master systému. Je tedy splněna druhá podmína onvergenční vlastnosti SCG algoritmu, terá zajišťuje, že soustavy v master i slave systému onvergují současně. SBCG algoritmus s předpodmiňovačem M je uveden níže. Algoritmus SBCG [Successive Bloc CG] Inicializace: = 0; R0 = F KX 0 m = [ 1,...,q], s = [] /* master = všechny soustavy */ m m while ( r > ε f ) do begin m solve MZ = R = + 1 if = 1 then P1 = Z0 else m 1 β m = (( R 2) Z 2) ( R 1) Z 1 P = Z- 1 + P- 1 β if. Lin. závislé soustavy přesuň z master do slave systému U = KP. mm m m sm s s [ α, α ] ( 1 ) [( m ),( s = P U R 1 Z 1 R 1) Z 1 ] m s mm sm [ X,X ] = [ X 1,X 1] + P [ α, α ] m s mm sm [ R, R ] = [ R 1, R 1] U [ α, α ]

24 Stanovení lineární závislosti vetorů Pro zaručení numericé stability SBCG metody potřebujeme zaručit, aby soustavy, teré jsou v master systému, měly vždy lineárně nezávislé sloupce matic P a R. Připomeňme, že tento požadave se řeší přesouváním lineárních soustav z master do slave systému. Nechť máme vetory p i a p j. Úhel mezi těmito vetory je definován předpisem pi p j cos( φ ) = p p i j (5.3.1) Poud je φ = 0, pa platí p p i j p p = 1 (5.3.2) i j a vetor p i vyjmeme z master systému, neboť je lineárně závislý na p j. Praticé zušenosti s chováním SBCG algoritmu nám vša uázaly, že vyjímat soustavy z master systému až v oamžiu, dy již jsou lineárně závislé, není efetivní. K numericé nestabilitě při výpočtu inverzí R Z a P U 2 2 dochází v master systému díy zaorouhlovacím chybám v počítači i v případě, dy sloupce matic P respetive R jsou již téměř lineárně závislé. Proto jsme jao ritérium pro stanovení lineární závislosti vetorů p i a p j vzali splnění podmíny pi p j 1 < coef, (5.3.3) p p i j de coef je oeficient lineární závislosti. Poud je podmína (5.3.3) splněna, odstraníme i-tou soustavu z master systému. SBCG jao zobecnění SCG a BCG Na SBCG se můžeme dívat jao na zobecnění SCG metody. V SCG algoritmu obsahoval master systém právě jednu soustavu. V SBCG může master systém obsahovat více než jednu soustavu. Poud bude obsahovat master systém SBCG pouze jednu soustavu, přejde SBCG v SCG algoritmus.

25 Poud budou všechny soustavy v master systému, SBCG přejde v BCG algoritmus. Chování SBCG algoritmu ovlivňuje velou měrou veliost oeficientu coef. Pozorování 1. Poud je coef libovolné číslo větší než 1, SBCG přejde na SCG algoritmus, neboť podmína přechodu soustavy do slave systému (5.3.3) je splněna pro jaéoliv dva vetory p i a p j. Master systém bude tedy vždy obsahovat právě jednu soustavu. 2. Poud se coef blíží jedničce, převládá successive charater SBCG, neboť podmína přechodu soustavy do slave systému (5.3.3) je snadněji splnitelná a proto soustavy opouštějí master systém snadno. 3. Poud se coef blíží nule, bude převládat bloový charater SBCG, neboť podmína (5.3.3) přechodu soustavy do slave systému se stává méně snadno splnitelnou, a proto soustavy opouštějí master systém pomaleji. 4. Poud zvolíme za coef číslo menší než 0, podmína (5.3.3) přechodu soustavy do slave systému nebude nidy splněna, to znamená, že počet slave soustav bude vždy nulový. SBCG tedy přejde na BCG algoritmus. Optimální veliost oeficientu coef je nutné vybrat na záladě numericých experimentů. 5.4 Obecné porovnání BCG, SCC a BSCG V následující tabulce je uvedeno porovnání principů výše zmiňovaných algoritmů při řešení soustavy lineárních rovnic s q pravými stranami. Údaje v tabulce se týají pouze jedné iterace metody. Proces K- ortogonalizace SCG SBCG BCG prováděn jen pro lin. nezávislé soustavy prováděn jen pro jednu soustavu prováděn pro všechny soustavy Počet master M = 1 M < 1; q > M = q soustav Počet násobení Kpoper = 1 Kpoper < 1; q > Kpoper = q matice a vetoru Počet slave S = q - 1 S < 0; q 1> S = 0 soustav abula 5.4.1 Porovnání principů SCG, SBCG a BCG

26 Porovnání výpočetní a paměťové náročnosti Počet iterací u BCG metody je sice obvyle menší než u SCG, ale na druhé straně výpočetní náročnost jedné iterace je menší u SCG, neboť BCG metoda provede toli operací násobení matice a vetoru, (Kp-operací), oli je nevyřešených soustav, zatímco SCG metoda provádí vždy pouze jednu Kpoperaci. Na druhé straně - násobení matice a vetoru, teré probíhá v jedné iteraci BCG metody, jsou na sobě nezávislé operace a mohou být vyonávány souběžně na více procesorech. Srovnání paměťové náročnosti je v tabulce 5.4.2. Nejméně paměti vyžaduje SCG algoritmus. Paměť se ušetří při procesu K-ortogonalizace, terá je vždy vyonávána jen pro jednu soustavu. Data SCG SBCG BCG Z, P, U n 1 n M n q β 1 M M q q α 1 q M q q q X, R n q n q n q abula 5.4.2 Porovnání paměťové náročnosti SCG, SBCG a BCG Shrnutí V této části v rátosti shrneme výhody a nevýhody SCG, BCG a SBCG algoritmů. 1. BCG výhoda: současné řešení soustav vede větší rychlosti onvergence a efetivní paralelizaci nevýhoda: numericá nestabilita - metoda obecně není stabilní 2. SCG výhoda: snadná a paměťově nenáročná implementace, numericá stabilita - metoda vždy onverguje nevýhoda: veliost zrychlení závisí na typu pravých stran. V nejhorším případě nemusí dojít oproti standardním sdruženým gradientům žádnému zrychlení 3. SBCG výhoda: spojuje výhody obou záladních přístupů nevýhoda: poměrně obtížná implementace

27 6 Návrh paralelizace metod sdružených gradientů pro řešení soustav lin. rovnic s něolia pravými stranami V této apitole se budeme zabývat analýzou a návrhy paralelních implementací metod BCG, SCG a SBCG pro multiprocesorové systémy s distribuovanou pamětí. Vycházet budeme z algoritmů publiovaných v předchozí apitole. Algoritmy napíšeme v syntaxi programovacího jazya Matlab, terý je dnes v podstatě standardem v maticovém počítání. 6.1 Zadání úlohy Uvažujme soustavu lineárních rovnic s q-pravými stranami (1). uto soustavu chceme řešit nějaým paralelním algoritmem na víceprocesorovém počítači. Aby výsledný program fungoval co možná nejlépe, měl by být přizpůsoben pro onrétní výpočetní systém, na terém bude spouštěn. Při návrhu musíme vzít v úvahu typ architetury paralelního počítače, počet a rychlost procesorů a výonnost meziprocesorové omuniace. 6.2 Obecné schéma paralelního řešiče Úlohy budeme řešit na počítači IBM SP. Jedná se o symetricý multiprocesorový systém s osmi RISC procesory, teré jsou propojeny vysoorychlostní sběrnicí. Jedná se tedy o výonný paralelní počítač s distribuovanou pamětí a s relativně malým počtem procesorů. Poud porovnáme výon jednotlivých procesorů a rychlost meziprocesorové omuniace, uáže se, že cena omuniace mezi procesory je poměrně vysoá. V našem návrhu se proto nebudeme bránit repliaci výpočtů, poud se tím sníží počet předávaných zpráv. Budeme se taé snažit rozdělit problém (1) na supinu relativně nezávislých úloh. Rodičovsý proces vytvoří q dětsých procesů. i-tý dětsý proces bude řešit i-tou soustavu systému. Obecné schéma paralelního řešiče je následující: Rodičovsý proces: 1. Načti parametry úlohy, vytvoř q dětsých procesů 2. for i = 1:q Pošli i-tému dětsému procesu parametry úlohy. 3. for i = 1:q Přijmi od i-tého dětsého procesu řešení soustavy x i. 4. Konec

28 i-tý dětsý proces: 1. Přijmi od rodičovsého procesu parametry a data úlohy i i 2. Vyřeš soustavu x = Kf 3. Pošli rodičovsému procesu řešení x i 4. Konec 6.3 Principy meziprocesové omuniace Procesy, teré jsou spuštěny na paralelním počítači s distribuovanou pamětí, spolu mohou omuniovat pouze prostřednictvím předávaných zpráv. Potřebujeme tedy zavést jazy, terý by tuto ativitu popisoval. Jedna z možností je použít s / receive notaci: s( {matice}, {cíl} ) recv( {matice}, {originál} ) Jestliže např. i-tý proces provede s( A, j), potom tato instruce zopíruje matici A, terá je uložena na i-tém procesu a pošle ji j-tému procesu. Matice může být samozřejmě řádu 1 1 nebo n 1. V těchto případech se posílá salár nebo vetor. Jestliže j-tý proces provede instruci recv( A, i), potom je vyonávání programu v tomto procesu zastaveno do té doby, doud tento proces nepřijme matici A od i-tého procesu. V následujících apitolách se budeme zabývat druhým roem dětsého procesu, tedy samotným řešením soustav. Nejdříve uvedeme sevenční verze, z nich potom odvodíme paralelní verze algoritmů BCG, SCG a SBCG. Komuniační protool se bude držet zásady, že proces pošle data dalším procesům ja jen to bude možné a bude je přijímat až v oamžiu, dy je sutečně potřebuje. 6.4 Návrh paralelizace metody BCG Sevenční verze BCG metody Implementace BCG metody v syntaxi jazya Matlab je uvedena níže. Vetor m obsahuje množinu indexů master soustav, ve teré jsou pořadová čísla nevyřešených soustav. Při inicializaci obsahuje vetor m pořadová čísla všech soustav. Funce nrmtst provádí ontrolu relativní přesnosti řešení a atualizuje vetor m. V případě, že je soustava s požadovanou přesností vyřešena, je její

29 index z této množiny vyjmut. Je-li množina m prázdná, všechny soustavy jsou vyřešeny a BCG algoritmus se uončí. function X = bcg( K, F, repsil, coef ) /* repsil - rel. přesnost řešení */ = 0; Kpoper = 0; new = 1 q = size(f,2) /* Zjištění počtu pravých stran */ m = 1:q /* Master obsahuje indexy všech pravých stran*/ M = precond(k) /* Výpočet předpodmínění */ X = zeros(size(f)); R = F; P = R for i = 1:q, /* Výpočet epsil */ epsil(i) = repsil * norm(r(:,i)) while 1 Z(:,m) = M \ R(:,m) ZR(m,m) = Z(:,m) * R(:,m) = + 1 if new == 1 new = 0 P(:,m) = Z(:,m) else beta = ZRold(m,m) \ ZR(m,m) P(:,m) = Z(:,m) + oldp(:,m) * beta U(:,m) = K * P(:,m) Kpoper = Kpoper + size(m,2) UP(m,m) = U(:,m) * P(:,m) alfa = UP(m,m) \ ZR(m,m) X(:,m) = X(:,m) + P(:,m) * alfa R(:,m) = R(:,m) - U(:,m) * alfa m = nrmtst( R(:,m), m, epsil(m)) /* Odstraň indexy vyřešených soustav */ if size(m,2)== 0, /* Poud je master prázdný, onec */ brea ZRold(m,m) = ZR(m,m) Pold(:,m) = P(:,m)

30 Paralelní verze BCG metody Poud vyjdeme ze sevenční verze BCG algoritmu, dostaneme následující paralelní verzi: function X = bcg_palg( K, F, repsil) = 0; Kpoper = 0; new = 1 q = size(f,2); m = 1:q M = precond(k); X = zeros(size(f)); R = F; P = R for i = 1:q epsil(i) = repsil * norm(r(:,i)) while 1 for i = m Z(:,i) = M \ R(:,i) (1) for i = m ZR(m,i) = Z(:,m) * R(:,i) (2) = + 1 if new == 1 (3) new = 0 for i = m P(:,i) = Z(:,i) else for i = m beta = ZRold(m,m) \ ZR(m,i) P(:,i) = Z(:,i) + oldp(:,m) * beta for i = m U(:,i) = K * P(:,i) (4) Kpoper = Kpoper + size(m,2) for i = m UP(m,i) = U(:,m)' * P(:,i) (5) for i = m alfa = UP(m,m) \ ZR(m,i) (6), (7) X(:,i) = X(:,i) + P(:,m) * alfa

31 R(:,i) = R(:,i) - U(:,m) * alfa m = nrmtst( R(:,i), m, epsil(i)) (8) if size(m,2) == 0, brea for i = m ZRold(:,i) = ZR(:,i) (9) Pold(:,i) = P(:,i) Z principu BCG algoritmu plyne, že všechny dětsé procesy jsou si rovnocenné. Následující tabula uazuje data, terá jsou dostupná na i-tém dětsém procesu a data, terá jsou nutná výpočtu řešení. Nutná data Dostupná data i-tý proces i-tý proces Z(:,m) Z(:,i) ZR([m,i],i) ZR(i,i) P(:,m) P(:,i) U(:,m) U(:,i) UP(m,m) UP(i,i) X(:,i) X(:,i) R(:,i) R(:,i) abula 6.4.1. Přehled nutných a dostupných dat v i-tém procesu BCG metody Obsahy sloupců tabuly jsou různé. Je zřejmé, že zísání všech potřebných dat se neobejde bez meziprocesové omuniace. Seznam a parametry všech reducí prováděných v BCG metodě jsou uvedeny v následující tabulce. Zrata comp znamená výpočet. Reduce i-tý proces Veliost zprávy Z(:,m) s( Z(:,i), [m-i]) recv( Z(:,m-i), [m-i]) (M-1)n (M-1)n P(:,m), U(:,m) ZR(m,m) obdobně jao Z(:,m) comp ZR(i,i) reduce Z(:,m) comp ZR(m-i,i)

32 s(zr(m,i),[m-i]) (M-1)M recv(zr(m,m-i),[m-i]) (M-1)M UP(m,m) obdobně jao ZR(m,m) abula 6.4.2. Seznam reducí prováděných v BCG metodě Reduce matice Z(:,m) i-tý proces (i m) vypočítá vetor Z(:,i) a rozešle ho všem zbývajícím procesům. Potom přijme od zbývajících procesů příspěvy Z(:,m-i). Reduce matice ZR(m,m) Po provedení reduce Z(:,m) má již aždý proces tuto matici, a proto může vypočítat součin ZR(m,i) = Z(:,m) * R(:,i). Výslede tohoto součinu je vetor ZR(m,i). i-tý proces jej následně rozešle všem zbývajícím master procesům. Poté tento proces přijme od zbývajících master procesů matici ZR(m,m-i). Obdobně se postupuje i při reduci matice UP(m,m). Analýza omuniačního modelu Poud analyzujeme omuniační model, zjistíme, že zprávy mají něteré společné parametry, viz tabula 6.4.3. Poud je odesílatelem zprávy i-tý proces, potom příjemci této zprávy jsou všechny zbývající procesy (m - i). Odesílatel Počet Příjemce Počet odesílatelů příjemců i-tý proces, i m M m - i M - 1 abula 6.4.3. Společné parametry zpráv Počet zpráv Zabývejme se nyní počtem zpráv, terý musí i-tý proces rozeslat (i m), aby se provedla reduce matice Z(:,m). Každý proces rozešle svůj příspěve matice Z všem zbývajícím procesům - těch je M - 1. Celový počet odeslaných zpráv pro jeden proces je tedy M - 1. Obdobný výslede platí i pro počet přijímaných zpráv. Každý proces dostane od zbývajících procesorů zprávu s jejich příspěvem Z, celem tedy přijme M - 1 zpráv. Počet zpráv i-tý proces odeslaných M - 1 přijatých M - 1 abula 6.4.4 a) Počet zpráv odeslaných a přijatých jedním procesem

33 Počet zpráv i-tý proces odeslaných M (M - 1) přijatých M (M - 1) abula 6.4.4 b) Počet zpráv odeslaných a přijatých všemi procesy Celový počet odeslaných (respetive přijatých) zpráv v systému je roven součtu odeslaných (respetive přijatých) zpráv všemi procesory. Pro BCG algoritmus je tento počet rovný M 2 - M. Stejné výsledy pochopitelně obdržíme i při reduci P(:,m), U(:,m), ZR(m,m) a UP(m,m). Komuniační protool metody BCG Komuniační protool metody BCG je uveden níže. Příspěvy ZR(m,i) a UP(m,i) jsou počítány průběžně a nečeá se tedy na zaslání všech slože vetorů Z(:,m), P(:,m), respetive U(:,m). 1) Výpočet Z(:,m) = M \ R(:,m) Master Poznáma Z(:,i) = M \ R(:,i) Řešení předpodmínění 2) Výpočet ZR(m, m) = Z(:,m) * R(:,m), reduce ZR(m,[m,i]) Master Poznáma s( Z(:,i), [m - i] ) Rozešli vetor Z(:,i) ZR(i,i) = Z(:,i) * R(:,i) Vypočítej ZR(i,i) for j = m - i Přijmi od zbývajících recv( Z(:,j), j) ZR(j,i)= Z(:,j) * R(:,i) procesů Z(:,m-i) Vypočítej ZR(m-i,i) s( ZR(m, i), [m - i] ) for j = m - i recv( ZR(m, j), j) Rozešli vetor ZR(m,i) Přijmi od zbývajících procesů ZR(m,j) 3) Výpočet P(:,m) Master if new == 1 new = 0 P(:,i) = Z(:,i) else Poznáma

34 beta = Zrold(m,m) \ ZR(m,i) P(:,i)=Z(:,i) + oldp(:,m)*beta Vypočítej oeficient beta a i-tý sloupec matice P 4) Výpočet U(:,m) = K * P(:,m) Master Poznáma U(:,i) = K * P(:,i) Vypočítej i-tý sloupec matice U 5) Výpočet UP(m,i) = U(:,m)' * P(:,i), reduce UP(m,m) Master Poznáma s( U(:,i), [m - i] ) Rozešli vetor U(:,i) UP(i,i) = U(:,i) * P(:,i) Vypočítej UP(i,i) for j = m - i Přijmi od zbývajících recv( U(:,j), j) UP(j,i)= U(:,j) *P(:,i) procesů U(:,m-i) Vypočítej UP(m-i,i) s( UP(m, i), [m - i] ) for j = m - i recv( UP(m, j), j) Rozešli UP(m,i) Přijmi od masteru UP(m,j) 6) Rozeslání P(:,m) (nutný pro výpočet X(:,i), i m) Master Poznáma s( P(:,i), [m - i] ) Rozešli P(:,i) 7) Výpočet alfa, R(:,m), příjmutí P(:,m), výpočet X(:,[m,s]) Master Poznáma alfa = UP(m,m) \ ZR(m,i) R(:,i) = R(:,i) - U(:,m) * alfa for j = m - i Přijmi P(:,m-i) recv( P(:,j), j) X(:,i) = X(:,i) + P(:,m) * alfa 8) estování přesnosti řešení Master Poznáma m = nrmtst( R(:,i), m, epsil(i)) Při vyřešení své soustavy informuj zbývající procesy a uonči se.

35 9) Atualizace ZRold(m,m) a Pold(:,m) pro novou iteraci BCG Master Poznáma ZRold(:,i) = ZR(:,i) Pold(:,i) = P(:,i) 6.5 Návrh paralelizace metody SCG Sevenční verze metody SCG Implementace SCG metody v syntaxi jazya Matlab je uvedena níže. Z principu SCG algoritmu plyne, že master soustava je pouze jedna. Její pořadové číslo je zapsáno ve vetoru m. Jeliož je počet master soustav roven jedné, vetor m obsahuje jen jedno číslo. Vetor s obsahuje pořadová čísla všech slave soustav. Funce nrmtst provádí ontrolu relativní přesnosti řešení master soustavy a všech slave soustav. Popišme si nyní, ja se může během iteračního cylu měnit obsah proměnné m a vetoru s. Při inicializaci SCG metody obsahuje proměnná m index první soustavy, indexy všech zbylých soustav jsou uloženy ve vetoru s. Soustava může být vyjmuta z master systému pouze tehdy, je-li vyřešena. Soustava může být vyjmuta ze slave systému při splnění jedné z následujících podmíne: soustava je vyřešena master systém je prázdný. V tomto případě se přesune jeden index slave soustavy do master soustavy. V případě, že jsou obě množiny indexů prázdné, jsou všechny soustavy vyřešeny a SCG algoritmus se uončí. function X = scg( K, F, repsil) = 0; Kpoper = 0; new = 1 q = size(f,2) m = 1 /* Master obsahuje index první pravé strany */ s = 2:q /* Slave obsahuje indexy zbývajících pravých stran */ M = precond(k) X = zeros(size(f)); R = F; p = R(:,m) for i = 1:q, /* výpočet epsil*/ epsil(i) = repsil * norm(r(:,i)) while 1

36 z = M \ R(:,m) zr([m,s]) = z * R(:,[m,s]) = + 1 if new == 1 new = 0 p = z else beta = zr(m) / zroldm p = z + beta * p u = K * p Kpoper = Kpoper + 1 up= u * p alfa = zr([ma,sl]) / up X(:,[m,s]) = X(:,[m,s]) + p * alfa R(:,[m,s]) = R(:,[m,s]) - u * alfa m = nrmtst( R(:,m), m, epsil(m)) s = nrmtst( R(:,s), s, epsil(s)) if size(m,2)== 0, /* Poud je master prázdný, přesuň 1. index ze slave do master */ if size(s,2)~= 0, m = s(1); s(1) = [ ]; new = 1 else /* Poud je prázdný i slave, onec */ brea zroldm=zr(m) Paralelní verze metody SCG Poud vyjdeme ze sevenční verze SCG algoritmu, dostaneme následující paralelní verzi: function X = scg_palg( K, F, repsil) = 0; Kpoper = 0; new = 1 q = size(f,2); m = 1; s = 2:q M = precond(k); X = zeros(size(f)); R = F; p = R(:,m) for i = 1:q epsil(i) = repsil * norm(r(:,i))

37 while 1 z = M \ R(:,m) (1) for i = [m,s] zr(i) = z * R(:,i) (2) = + 1 if new == 1 (3) new = 0 p = z else beta = zr(m) / zroldm p = z + beta * p u = K * p (4) Kpoper = Kpoper + 1 up= u * p (5, 6) for i = [m,s] alfa = zr(i) / up (7) X(:,i) = X(:,i) + p * alfa R(:,i) = R(:,i) - u * alfa [m,s] = nrmtst( R(:,i), [m,s], epsil(i)) (8) if size(m,2) == 0, if size(s,2) ~= 0, m = s(1); s(1) = [ ]; new = 1 else brea zroldm=zr(m) (9) Z principu SCG algoritmu plyne, že dětsé procesy se dělí na master a slave procesy. Master proces je vždy pouze jeden. Následující tabula uazuje data, terá jsou dostupná na i-tém dětsém procesu a data, terá jsou nutná výpočtu řešení. Nutná data i: [Master, Slave] z zr(i) Dostupná data i: Master i: Slave z zr(i)

38 p u up X(:,i) R(:,i) p u up X(:,i) R(:,i) X(:,i) R(:,i) abula 6.5.1. Závislost dostupnosti dat na typu dětsého procesu Obsahy prvních dvou sloupců tabuly jsou stejné. Master proces nepotřebuje od slave procesů žádná data. Jiná situace je u slave procesu. Slave proces potřebuje výpočtu vetory z, p, a u. ato data si tedy musí vyžádat od master procesu. Seznam a parametry všech reducí prováděných v SCG metodě jsou uvedeny v následující tabulce. Reduce i: Master proces Veliost zprávy i: Slave proces Veliost zprávy z s( z, s) Sn recv( z, m) n p u obdobně jao vetor z obdobně jao vetor z zr(i) up comp zr(i) reduce z reduce z comp zr(i) comp up s( up, s) S*1 recv( up, m) 1 abula 6.5.2. Seznam reducí prováděných v SCG metodě Reduce vetoru z Popišme si, ja bude probíhat omuniace při reduci vetoru z. Komuniace bude záviset na tom, zda daný proces je master nebo slave. Komuniace master procesu Předpoládejme, že i-tý proces je master. Pa tento proces vypočítá vetor z a rozešle ho všem slave procesům. Komuniace slave procesu Z principu SCG algoritmu plyne, že slave proces nepočítá vetor z. Proto slave proces nic neposílá, nýbrž tento vetor přijme od master procesu. Reduce zr(i) Po provedení reduce vetoru z mají již všechny procesy tento vetor, a proto mohou vypočítat součin zr(i) = z * R(:,i). Obdobně můžeme postupovat i při reduci up. Jediný rozdíl je v tom, že slave procesy nic nepočítají a přijmou od master procesu celý oeficient up.

39 Další možností je, že aždý slave proces si vypočítá oeficient up sám. (Repliace výpočtů.) Analýza omuniačního modelu Poud analyzujeme omuniační model, zjistíme, že zprávy mají něteré společné parametry. Odesílatelem zprávy je vždy master proces, příjemci této zprávy jsou všechny slave procesy. Odesílatel Počet odesílatelů Příjemce Počet příjemců m 1 s S abula 6.5.3. Společné parametry zpráv Počet zpráv Zabývejme se nyní počtem zpráv, terý musí aždý proces rozeslat, aby se provedla reduce dat z tabuly 6.5.2. Počet zpráv závisí na tom, zda daný proces je master nebo slave. V případě, že se jedná o master proces, rozešle tento proces vetor z všem slaveům - těch je S. Celový počet zpráv, teré rozešle master proces, je tedy S. Slave procesy nerozesílají žádné zprávy. Počet přijatých zpráv taé závisí na typu procesu. Master proces nepřijímá žádné zprávy. Slave proces přijímá data od master procesu. Protože v SCG metodě je jen jeden master proces, přijme aždý slave proces právě jednu zprávu. Celový počet přijatých a odeslaných zpráv pro jeden a dále pro všechny procesy, je uveden v následujících tabulách. Počet zpráv Master Slave odeslaných přijatých S 0 0 1 abula 6.5.4a) Počet zpráv odeslaných a přijatých jedním procesem Počet zpráv Master Slave odeslaných přijatých 1 S 0 0 S 1 abula 6.5.4b) Počet zpráv odeslaných a přijatých všemi procesy Celový počet odeslaných (respetive přijatých) zpráv v systému je roven součtu odeslaných (respetive přijatých) zpráv master procesem a všemi slave procesy. Pro SCG algoritmus je tento počet rovný počtu slave soustav S. Stejné výsledy pochopitelně obdržíme i při reduci p, u, zr(i) a up - viz tabula 6.5.2.

40 Komuniační protool SCG Komuniační protool SCG metody je uveden níže. 1) Výpočet z = M \ R(:,m) Master Slave Poznáma z = M \ R(:,i) m: Řešení předpodmínění 2) Výpočet zr(i) Master Slave Poznáma s( z, s) m: Rozešli vetor z zr(i) = z * R(:,i) m: Vypočítej zr(i) recv( z, m) zr(i) = z * R(:,i) s: Přijmi od master procesu vetor z s: Vypočítej zr(i) 3) Výpočet vetoru p Master Slave Poznáma if new == 1 new = 0 p = z else beta = zr(m) / zroldm p = z + beta * p m: Vypočítej oeficient beta a vetor p 4) Výpočet u = K * p Master Slave Poznáma u = K * p Slave nepotřebují matici K 5) Výpočet oeficientu up = u * p, rozeslání up a vetoru u Master Slave Poznáma s( u, s ) m: Rozešli vetor u up = u * p m: Vypočítej up s( up, s ) m: Rozešli up recv( up, m) s: Přijmi od master procesu oeficient up 6) Rozeslání vetoru p (nutný pro výpočet X(:,i), i s ) Master Slave Poznáma s( p, s ) m: Rozešli vetor p