Paralelní algoritmy v lineární algebře. Násobení matic

Podobné dokumenty
VYBRANÉ PARTIE Z NUMERICKÉ MATEMATIKY

SOUSTAVY LINEÁRNÍCH ALGEBRAICKÝCH ROVNIC

Soustavy lineárních rovnic

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

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

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

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

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

Cvičení z Numerických metod I - 12.týden

IB112 Základy matematiky

0.1 Úvod do lineární algebry

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

(Cramerovo pravidlo, determinanty, inverzní matice)

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:

Aplikovaná numerická matematika - ANM

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

[1] LU rozklad A = L U

Soustavy linea rnı ch rovnic

1 Determinanty a inverzní matice

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

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

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

Determinant matice řádu 5 budeme počítat opakovaným použitím rozvoje determinantu podle vybraného řádku nebo sloupce. Aby byl náš výpočet

Determinanty. Obsah. Aplikovaná matematika I. Pierre Simon de Laplace. Definice determinantu. Laplaceův rozvoj Vlastnosti determinantu.

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

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

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

Úvod do lineární algebry

Numerické metody a programování. Lekce 4

0.1 Úvod do lineární algebry

Numerické metody a programování

Matice. Předpokládejme, že A = (a ij ) je matice typu m n: diagonálou jsou rovny nule.

Operace s maticemi. 19. února 2018

Co je obsahem numerických metod?

[1] Determinant. det A = 0 pro singulární matici, det A 0 pro regulární matici

Operace s maticemi

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

Numerické řešení soustav lineárních rovnic

Paralelní grafové algoritmy

Uspořádanou n-tici reálných čísel nazveme aritmetický vektor (vektor), ā = (a 1, a 2,..., a n ). Čísla a 1, a 2,..., a n se nazývají složky vektoru

Numerické řešení soustav lineárních rovnic

VI. Maticový počet. VI.1. Základní operace s maticemi. Definice. Tabulku

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á.

Numerické metody lineární algebry

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

maticeteorie 1. Matice A je typu 2 4, matice B je typu 4 3. Jakých rozměrů musí být matice X, aby se dala provést

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

SOUSTAVY LINEÁRNÍCH ALGEBRAICKÝCH ROVNIC

1 Vektorové prostory.

Paralelní a distribuované výpočty (B4B36PDV)

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

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

Soustavy lineárních rovnic a determinanty

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

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

8 Matice a determinanty

Matematika B101MA1, B101MA2

z = a bi. z + v = (a + bi) + (c + di) = (a + c) + (b + d)i. z v = (a + bi) (c + di) = (a c) + (b d)i. z v = (a + bi) (c + di) = (ac bd) + (bc + ad)i.

0 0 a 2,n. JACOBIOVA ITERAČNÍ METODA. Ax = b (D + L + U)x = b Dx = (L + U)x + b x = D 1 (L + U)x + D 1 b. (i) + T J

Základy matematiky pro FEK

4. LU rozklad a jeho numerická analýza

Úlohy k přednášce NMAG 101 a 120: Lineární algebra a geometrie 1 a 2,

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

IB109 Návrh a implementace paralelních systémů. Analytický model paralelních programů. RNDr. Jiří Barnat, Ph.D.

10. Soustavy lineárních rovnic, determinanty, Cramerovo pravidlo

MATICE. a 11 a 12 a 1n a 21 a 22 a 2n A = = [a ij]

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

P 1 = P 1 1 = P 1, P 1 2 =

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

Lineární algebra Operace s vektory a maticemi

D 11 D D n1. D 12 D D n2. D 1n D 2n... D nn

Základy matematiky pro FEK

Katedra aplikované matematiky FEI VŠB Technická univerzita Ostrava luk76/la1

pro řešení soustav lineárních rovnic. Gaussova eliminační metoda pro řešení soustavy lineárních rovnic sestává ze dvou kroků:

Budeme hledat řešení y(x) okrajové úlohy pro diferenciální rovnici druhého řádu v samoadjungovaném tvaru na intervalu a, b : 2 ) y i p i+ 1

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.

Determinanty. Determinanty. Přednáška MATEMATIKA č. 3. Jiří Neubauer

KOMPLEXNÍ ČÍSLA INVESTICE DO ROZVOJE VZDĚLÁVÁNÍ

Lineární algebra. Matice, operace s maticemi

1 Projekce a projektory

Numerické metody lineární algebry

Cvičení z Lineární algebry 1

Všechno, co jste kdy chtěli vědět o maticích, ale báli jste se zeptat

Lineární algebra. Soustavy lineárních rovnic

Lingebraické kapitolky - Počítání s maticemi

1 Soustavy lineárních rovnic

Součin matice A a čísla α definujeme jako matici αa = (d ij ) typu m n, kde d ij = αa ij pro libovolné indexy i, j.

Vektory a matice. Petr Hasil. Podpořeno projektem Průřezová inovace studijních programů Lesnické a dřevařské fakulty MENDELU v Brně (LDF)

V exponenciální rovnici se proměnná vyskytuje v exponentu. Obecně bychom mohli exponenciální rovnici zapsat takto:

Static Load Balancing Applied to Time Dependent Mechanical Problems

Číselné vektory, matice, determinanty

Soustavy lineárních rovnic

Vlastní čísla a vlastní vektory

Kapitola 11: Vektory a matice:

1/10. Kapitola 12: Soustavy lineárních algebraických rovnic

Slovo ALGEBRA pochází z arabského al-jabr, což znamená nahrazení. Toto slovo se objevilo v názvu knihy

VĚTY Z LINEÁRNÍ ALGEBRY

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

Matematika. Kamila Hasilová. Matematika 1/34

Transkript:

Paralelní algoritmy v lineární algebře Násobení matic

Násobení matic mějme matice A, B, C R n,n počítáme součin C = AB mějme p procesu a necht p je mocnina dvou matice rozdělíme blokově na p p bloků pak je C i,j = p 1 k=0 A i,k B k,j výpočet bloku C i,j provádí ten proces, na který je blok mapován od ostatních procesů si musí vyžádat příslušné bloky A i,k a B k,j

Násobení matic Příklad: pro p = 9 C 0,0 = A 0,0 B 0,0 + A 0,1 B 1,0 + A 0,2 B 2,0 C 1,0 = A 1,0 B 0,0 + A 1,1 B 1,0 + A 1,2 B 2,0 C 2,0 = A 2,0 B 0,0 + A 2,1 B 1,0 + A 2,2 B 2,0 C 0,1 = A 0,0 B 0,1 + A 0,1 B 1,1 + A 0,2 B 2,1 C 1,1 = A 1,0 B 0,1 + A 1,1 B 1,1 + A 1,2 B 2,1 C 2,1 = A 2,0 B 0,1 + A 2,1 B 1,1 + A 2,2 B 2,1 C 0,2 = A 0,0 B 0,2 + A 0,1 B 1,2 + A 0,2 B 2,2 C 1,2 = A 1,0 B 0,2 + A 1,1 B 1,2 + A 1,2 B 2,2 C 2,2 = A 2,0 B 0,2 + A 2,1 B 1,2 + A 2,2 B 2,2 vidíme, že např. v prvním kroku tři různé procesy potřebují současně bloky A 0,0, A 1,0, A 2,0 a podobně pro bloky z matice B

Násobení matic tyto konflikty jsou nevýhodné zejména pro architektury s distribuovanou pamětí změníme pořadí sčítání bloků v jednotlivých procesech každý řádek pro výpočet bloku C i,j orotujeme (i + j)-krát doleva C 0,0 = A 0,0 B 0,0 + A 0,1 B 1,0 + A 0,2 B 2,0 C 1,0 = A 1,1 B 1,0 + A 1,2 B 2,0 + A 1,0 B 0,0 C 2,0 = A 2,2 B 2,0 + A 2,0 B 0,0 + A 2,1 B 1,0 C 0,1 = A 0,1 B 1,1 + A 0,2 B 2,1 + A 0,0 B 0,1 C 1,1 = A 1,2 B 2,1 + A 1,0 B 0,1 + A 1,1 B 1,1 C 2,1 = A 2,0 B 0,1 + A 2,1 B 1,1 + A 2,2 B 2,1 C 0,2 = A 0,2 B 2,2 + A 0,0 B 0,2 + A 0,1 B 1,2 C 1,2 = A 1,0 B 0,2 + A 1,1 B 1,2 + A 1,2 B 2,2 C 2,2 = A 2,1 B 1,2 + A 2,2 B 2,2 + A 2,0 B 0,2

Násobení matic Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Násobení matic a sumu zaměníme za 2 C i,j = A i,k B k,j k=0 2 C i,j = A i,(k+i+j)%3 B (k+i+j)%3,j k=0

Násobení matic Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 v každém kroku algoritmu bloky matice A rotují o jeden doleva a bloky matice B o jeden nahoru

Násobení matic Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda GEM je základem přímých řešičů lineárních soustav rovnic ukážeme si paralelizaci pro případ plné matice lineární soustavy začneme s přímým chodem GEM, tj. prvním eliminačním krokem sekvenční algoritmus má následující tvar

Gaussova eliminační metoda 1 void GEM( double A [ n ] [ n ], double b [ n ] ) 2 { 3 / 4 Outer loop 5 / 6 for ( i n t k = 0; k < n ; k++ ) 7 { 8 / 9 D i v i s i o n step 10 / 11 for ( i n t j = k + 1; j < n ; j ++ ) 12 A [ k ] [ j ] /= A [ k ] [ k ] ; 13 b [ k ] /= b [ k ] / A [ k ] [ k ] ; 14 A [ k ] [ k ] = 1. 0 ; 15 for ( i n t i = k + 1; i < n ; i ++ ) 16 { 17 / 18 E l i m i n a t i o n step 19 / 20 for ( i n t j = k + 1; j < n ; j ++ ) 21 A [ i ] [ j ] = A [ i ] [ k ] A [ k ] [ j ] ; 22 b [ i ] = A [ i ] [ k ] y [ k ] ; 23 A [ i ] [ k ] = 0. 0 ; 24 } 25 } 26 }

Gaussova eliminační metoda výpočet probíhá podle následujícího schématu Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda Paralelizace podle řádků matice: každý rádek matice A mapujeme na jeden proces výpočet k-tého kroku eliminace probíhá následujícím způsobem

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda lze ukázat, že tento algoritmus není nákladově optimální tedy ani nebude mít dobrou efektivitu a škálovatelnost ukážeme si modifikaci, která tento problém řeší zavedeme pipelining, čímž dokážeme současně provádět komunikaci i výpočet v předchozím algoritmu byl vnější cyklus (řádek 6) prováděn sekvenčně to nyní napravíme jakmile proces P k+1 provede eliminaci svého řádku, nemusí již čekat na ostatní procesy a může provést dělení pivotem a následně poslat svůj řádek ostatním

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003

Gaussova eliminační metoda dále si můžeme všimnout, že proces P 3 provádí výrazně více výpočtů, než P 0 řešením je použít méně procesů, než kolik je řádků matice např. pro n = 8 a p = 2 se nabízí: blokové mapování P 0 {0, 1, 2, 3} P 1 {4, 5, 6, 7} cyklické mapování P 0 {0, 2, 4, 6} P 1 {1, 3, 5, 7} je zřejmé, že cyklické mapování je pro GEM výhodnější GEM má složitost n 3 při využití n procesorů se nemůžeme dostat na nižší složitost než n 2 ukážeme si algoritmus pro p = θ(n 2 ) procesorů

Gaussova eliminační metoda tentokrát budeme pro začátek mapovat jeden proces na jeden prvke matice budeme paralelizovat i cykly přes řádky

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 na začátku k-tého kroku nejrpve provedeme broadcast prvků v k-tém sloupci pod diagonálou, každý do svého řádků

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 dále se podělí k-tý řádek pivotem

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 prvky k-tého řádku se broadcastují každý ve svém sloupci

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 provede se paralelně eliminace v celé aktivní části matice

Gaussova eliminační metoda i zde lze pomocí pipeliningu získat efektivnější algoritmus ukážeme si jak

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 (a) proces P 0,0 posílá pivota procesu P 0,1 (b) proces P 0,1 dělí svůj prvek pivotem (c) proces P 0,1 posílá pivota procesu P 0,2 a svůj podělený prvek procesu P 1,1, proces P 1,0 posílá svou hodnotu procesu P 1,1 (d) procesy P 0,2 a P 1,1 provádějí výpočet

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 (e) proces P0,2 přeposílá pivota z iterace k = 0 procesu P 0,3 a svou přepočítanou hodnotu procesu P 1,2 P1,1 posílá hodnotu od P 0,1 dále procesu P 2,1 a hodnotu od procesu P 1,0 přeposílá procesu P 1,2 proces P 2,0 posílá svou hodnotu procesu P 2,1

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 (f) procesy P 0,3, P 1,2 a P 2,1 provádějí výpočet (g) proces P 1,1 zahajuje iteraci pro k = 1 a posílá pivota procesu P 1,2, ostatní procesy přeposílají data pro iteraci k = 0 (h) procesy P 0,4, P 1,3, P 2,2 a P 3,1 provádějí výpočet pro iteraci k = 0, proces P 1,2 provádí výpočet pro iteraci k = 1

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 (i) procesy P 0,4,P 1,3, P 2,2, P 3,1 a P 4,0 provádí komunikaci pro iteraci k = 0, procesy P 1,2 a P 2,1 provádí komunikaci pro iteraci k = 1 komunikace procesu P 0,4 na obrázku chybí (j) procesy P 1,4, P 2,3, P 3,2 a P 4,1 provádí výpočet pro k = 0 a procesy P 1,3 a P 2,2 pro k = 1 (k)...

Gaussova eliminační metoda Zdroj: A. Grama, A. Gupta, G. Karypis, V. Kumar, Introduction to Parallel Computing, Pearson/Addison Wesley, 2003 (m) proces P 2,2 začíná iteraci pro k = 2 (p) proces P 4,4 ukončuje iteraci pro k = 0

GEM - zpětná substituce i v tomto případě je pro lepší efektivitu potřeba použít méně procesů než n 2 a mapovat cyklicky P 0 P 1 P 0 P 1 P 2 P 3 P 2 P 3 P 0 P 1 P 0 P 1 P 2 P 3 P 2 P 3

GEM - zpětná substituce původní matici jsme převedli na horní trojúhelníkovou nyní lze provést zpětnou substituci 1 for ( i n t k = n 1; k >= 0; k ) 2 { 3 x [ k ] = b [ k ] ; 4 for ( i n t j = n 1; j > k ; j ) 5 x [ k ] = x [ k ] A [ k ] [ j ] x [ j ] ; 6 } cyklus na ř. 1 je čistě sekvenční, lze paralelizovat jen cyklus na ř. 4 to lze ale jen pro 2D dělení pro velká k je tu navíc málo práce tj. i paralelismu při paralelizaci GEM je často výhodné provádět eliminaci a zpětnou substituci současně

GEM - zpětná substituce 1 void GEM2( double A [ n ] [ n ], double b [ n ] ) 2 { 3 / 4 Outer loop 5 / 6 for ( i n t k = 0; k < n ; k++ ) 7 { 8 / 9 D i v i s i o n step 10 / 11 for ( i n t j = k + 1; j < n ; j ++ ) 12 A [ k ] [ j ] /= A [ k ] [ k ] ; 13 b [ k ] /= b [ k ] / A [ k ] [ k ] ; 14 A [ k ] [ k ] = 1. 0 ; 15 for ( i n t i = 0; i < n ; i ++ ) 16 { 17 / 18 E l i m i n a t i o n step 19 / 20 i f ( i == k ) 21 continue ; 22 for ( i n t j = k + 1; j < n ; j ++ ) 23 A [ i ] [ j ] = A [ i ] [ k ] A [ k ] [ j ] ; 24 b [ i ] = A [ i ] [ k ] y [ k ] ; 25 A [ i ] [ k ] = 0. 0 ; 26 } 27 } 28 }

GEM - zpětná substituce paralelizací tohot alogritmu zaměstnáme procesy, které byly během eliminace nečinné a výsledkem je přímo řešení soustavy uvedené paralelní algoritmy výrazně využívají faktu, že pracujeme s hustými maticemi pro řídké matice je potřeba použít mnohem složitější algoritmy http://www.pardiso-project.org/ ukážeme si paralelizaci řešiče pro tridiagonální lineární systémy rovnic

Thomasův algoritmus mějme následující soustavu se silně regulární maticí a 1 b 1 x 1 c 2 a 2 b 2 x 2 c 3 a 3 b 3 x 3......... =. c n 1 a n 1 b n 1 c n a n x n 1 x n d 1 d 2 d 3. d n 1 d n

Thomasův algoritmus pomocí GEM ji lze převést na tvar 1 µ 1 1 µ 2 1 µ 3...... 1 µ n 1 1 x 1 x 2 x 3. x n 1 x n = ρ 1 ρ 2 ρ 3. ρ n 1 ρ n a zpětná substituce pak má tvar x n = ρ n x n 1 = ρ n 1 µ n 1 x n. x k = ρ k µ k x k+1. x 1 = ρ 1 µ 1 x 2

Thomasův algoritmus algoritmus lze zapsat takto 1 void Thomas ( double a [ n ], double b [ n ], double c [ n ], 2 double d [ n ], 3 double x [ n ] ) 4 { 5 double mu[ n ], rho [ n ] ; 6 mu[ 0 ] = b [ 0 ] / a [ 0 ] ; 7 rho [ 0 ] = d [ 0 ] / a [ 0 ] ; 8 for ( i n t i = 1; i < n 1; i ++ ) 9 { 10 mu[ i ] = b [ i ] / ( a [ i ] c [ i ] mu[ i 1 ] ) ; 11 rho [ i ] = ( d [ i ] c [ i ] rho [ i 1 ] ) / 12 ( a [ i ] c [ i ] mu[ i 1 ] ) ; 13 } 14 rho [ n 1 ] = ( d [ n 1 ] c [ n 1 ] rho [ n 2 ] ) / 15 ( a [ n 1 ] c [ n 1 ] mu[ n 2 ] ) ; 16 x [ n 1 ] = rho [ n 1 ] ; 17 for ( i = n 2; i > = 0; i ) 18 x [ i ] = rho [ i ] mu[ i ] x [ i + 1 ] ; 19 20 } jde o čistě sekvenční kód pomocí šikovného triku ho ale lze paralelizovat

Cyklická redukce vezměme si řádek i pro 1 < i < n a dva jeho sousedy c i 1 x i 2 + a i 1 x i 1 +b i 1 x i = d i 1, c i x i 1 +a i x i +b i x i+1 = d i, c i+1 x i +a i+1 x i+1 + b i+1 x i+2 = d i+1 z prostřední rovnice eliminujeme proměnné x i 1 a x i+1 první rovnici vynásobíme číslem β i = c i a i 1 a třetí číslem γ i = b i a i+1 a obě odečteme od prostřední dostaneme pro c (1) i x i 2 + a (1) i x i + b (1) i x i+2 = d (1) i, c (1) i = β i c i 1 a (1) i = a i β i b i 1 γ i c i+1 b (1) i = γ i b i+1 d (1) i = d i βd i 1 γd i+1.

Cyklická redukce dodefinováním c 1 = 0 a b n = 0 lze tuto úpravu provést pro každou sudou rovnici původní soustavu tak převedeme na redukovaný tvar a (1) 1 b (1) 1 c (1) 2 a (1) 2 b (1) 2 c (1) 3 a (1) 3 b (1) 3......... c (1) n/2 1 a (1) n/2 1 b (1) n/2 1 c (1) n/2 a (1) n/2 x 2 x 4 x 6. x n 2 x n pokud tuto soustavu vyřešíme, dokážeme pak ze znalosti x i 2, x i a x i+2 dopočítat i x i 1 a x i+1 ze vztahů původní soustavy = d (1) 1 d (1) 2 d 3. (1) d (1) n/2 1 d (1) n/2 c i 1 x i 2 + a i 1 x i 1 +b i 1 x i = d i 1, c i+1 x i +a i+1 x i+1 + b i+1 x i+2 = d i+1 tak tedy získáme i všechna lichá x i všimneme si, že redukovanou soustavu můžeme řešit stejným postupem...

Cyklická redukce Příklad: mějme úlohu o pěti neznámých a 1 b 1 d 1 c 2 a 2 b 2 d 2 c 3 a 3 b 3 d 3 c 4 a 4 b 4 d 4 c 5 a 5 d 5 budeme na sudých řádcích budeme eliminovat koeficienty odpovídající proměnným s lichým indexem, tj. indexy podél diagonály od druhého řádku odečteme c2 /a 1 násobek prvního a b 2 /a 3 násobek třetího od čtvrtého řádku odečteme c 4 /a 3 násobek třetího a b 4 /a 5 násobek pátého

Cyklická redukce dostaneme a 1 b 1 0 0 0 d 1 0 a 2 c 2 a 1 b 1 b 2 a 3 c 3 0 b 2 a 3 b 3 0 d 2 c 2 a 1 d 1 b 2 a 3 d 3 0 c 3 a 3 b 3 0 d 3 0 c 4 a 3 c 3 0 a 4 c 4 a 3 b 3 b 4 a 5 c 5 0 d 4 c 4 a 3 d 3 b 4 a 5 d 5 0 0 0 c 5 a 5 d 5 což přeznačíme na a 0 1 b 0 1 0 0 0 d 0 1 0 b 1 2 0 c 1 2 0 d 1 2 0 c 0 3 a 0 3 b 0 3 0 d 0 3 0 a 1 4 0 b 1 4 0 d 1 4 0 0 0 c 0 5 a 0 5 d 0 5 (1) a sudé rovnice lze extrahovat ( b 1 2 c2 1 d2 1 ) a4 1 b4 1 d4 1

Cyklická redukce to je obecně opět tridiagonální soustava pokud by byla větší, lze na ní celý postup opakovat, až dostaneme soustavu pro jednu nebo dvě neznámé tu lze snadno vyřešit x 2, x 4 soustavu 1 lze upravit na tvar a 0 1 b 0 1 0 0 0 d 0 1 0 1 0 0 0 x 2 0 c 0 3 a 0 3 b 0 3 0 d 0 3 0 0 0 1 0 x 4 0 0 0 c 0 5 a 0 5 d 0 5 ze znalosti x 4 lze dopočítat x 5 ze znalosti x 2 a x 4 lze dopočítat x 3 ze znalosti x 2 lze dopočítat x 1

Cyklická redukce Celý výpočet pak probíhá takto: = a i pro i = 1,..., n 2: c (0) i = c i pro i = 2,..., n a c (0) 1 = 0 3: b (0) i = b i pro i = 1,..., n 1 a b (0) 1: a (0) i 4: for k = 1... log 2 n do 5: s = 2 k 6: for i = 1,..., n/2 k do 7: β i = c(k 1) i a (k 1) i 1, γ i = b(k 1) i a (k 1) i+1 n = 0 8: c (k) i/2 = β ic (k 1) i 1 9: a (k) i/2 = a(k 1) i β i b (k 1) i 1 γ i c (k 1) i+1 10: b (k) i/2 = γ ib (k 1) i+1 11: d (k) i/2 = d (k 1) i β i d (k 1) i 1 γ i d (k 1) i+1 12: end for 13: end for 14: vyřeš výslednou rovnici (nebo dvě) 15: for k = log 2 n... 1 do 16: s = 2 k 17: for i = 1,..., n/2 k do 18: ze znalosti x is dopočítej x is s/2 a x is+s/2 19: end for 20: end for

Cyklická redukce Jednotlivé kroky cycklické redukce pro tridiagonální soustavu s osmi neznámými. e značí indexy řádkům x indexy neznámých.

Cyklická redukce všimneme si, že jednotlivé kroky cyklické redukce lze provádět paralelně počet aktivních procesů se v každém kroku redukuje na polovinu snadno vidíme, že pro p = n TS (n) = θ(n) TP (n, p) = θ(log n) C(n, p) = θ(n log n) S(n, p) = θ( n log n ) E(n, p) = θ( 1 log n ) paralelizace není ideální, lze ji o trochu vylepšit

Cyklická redukce v prvním kroku jsme eliminovali liché řádky soustavy nynuděláme to samé i se sudými řádky dostaneme dvě nezávislé soustavy poloviční velikosti, jednu pro sudé neznámé a druhou pro liché neznámé tak postupujeme dále v dalším kroku získáme čtyři čtvrtinové soustavy atd. po log 2 n krocích získáme n/2 až n nezávislých soustav o jedné nebou dvou neznámých, které lze vyřešit paralelně ušetřím si tak druhou fázi algoritmu o log 2 n krocích doba běhu se sníží na polovinu a stále urdžujume všechny procesy aktivní i tento algoritmus ale zůstává nákladově neoptimální

Cyklická redukce Pruhy na obrázku znázorňují jednotlivé nezávislé soustavy rovnic.

SOR metoda Super-overrelaxation method jde o iterativní metodu pro řešení soustav lineárních rovnic při napočítávání nové iterace x (k+1) z x (k) využívá již napočítané složky vektoru x (k+1) x (k+1) i = (1 ω)x (k) i + ω b i a ii j<i a ij x (k+1) j j>i a ij x (k) j

SOR metoda 1 bool sormethod ( const Matrix& A, 2 const Vector& b, 3 Vector& x, 4 double eps, 5 double omega ) 6 { 7 double normb = norm ( b ) ; 8 double r = eps + 1. 0 ; 9 while ( r > eps ) 10 { 11 / 12 SOR i t e r a c e 13 / 14 15 for ( i n t i = 0; i < n ; i ++ ) 16 { 17 double s = 0. 0 ; 18 for ( int j = 0; j < n ; j ++ ) 19 i f ( j!= i ) 20 s = s + A [ i ] [ j ] x [ j ] ; 21 x [ i ] += omega ( b [ i ] s ) / A [ i ] [ i ] ; 22 } 23 / 24 Vypocet rezidua 25 / 26 r = 0. 0 ; 27 for ( i n t i = 0; i < n ; i ++ ) 28 { 29 double Ax_i = 0. 0 ; 30 for ( int j = 0; j < n ; j ++ ) 31 Ax_i = Ax_i + A [ i ] [ j ] x [ j ] ; 32 r = r + ( Ax_i b_i ) ( Ax_i b_i ) ; 33 } 34 r = s q r t ( r ) / normb ; 35 } 36 }

SOR metoda budeme se zabývat paralelizací této smyčky 1 / 2 SOR i t e r a c e 3 / 4 5 for ( i n t i = 0; i < n ; i ++ ) 6 { 7 double s = 0. 0 ; 8 for ( i n t j = 0; j < n ; j ++ ) 9 i f ( j!= i ) 10 s = s + A [ i ] [ j ] x [ j ] ; 11 x [ i ] += omega ( b [ i ] s ) / A [ i ] [ i ] ; 12 } řádky 8-10 vlastně odpovídají násobení i-tého řádku matice A s vektorem x s vynecháním diagonálního prvku to lze snadno paralelizovat s využitím paralelní redukce pro matici A R n,n lze využít maximálně n procesů pokud bude matice A řídká, může se stát, že naprostá většina procesů nebude mít nic na práci vlastně tak nemáme dost práce pro celkem n procesů

SOR metoda v případě řídkých matic lze provést rozklad na skupiny nezávislých řádků a provést paralelizaci cyklu na řádku 15 vysvětlíme si to na matici aproximující Laplaceův operátor konečnými diferencemi na strukturované síti řešíme tedy úlohu na Ω [0, 1] [0, 1] u = f na Ω, u Ω = g,

SOR metoda volíme pravidelnou čtvercovou sít ω h { x ij = (ih, jh) i = 1, N 1, j = 1, N 1 } na vnitřních uzlech pro 0 < i, j < N aproximujeme operátor pomocí konečných diferencí u ij uh i 1,j 2u h ij + u h i+1,j h 2 + uh i,j 1 2uh ij + u h i,j+1 h 2 tj. pro vnitřní uzly 0 < i, j < N řešíme soustavu rovnic u h i,j 1 + uh i 1,j 4u h ij + u h i+1,j + u h i,j+1 = h2 f ij a pro okrajové u ij = g ij.

SOR metoda Zdroj: http://math.stackexchange.com/questions/329765/ discretization-of-inhomogeneous-dirichlet-boundary-conditions-for-2d-poissons-e

SOR metoda Zdroj: http://www.cs.berkeley.edu/~demmel/cs267/lecture24/lecture24.html

SOR metoda obecně si setrojíme graf k němuž bude daná matice tvořit adjacenční matici provedeme vrcholové obarvení to odpovídá tomu, že každému sloupci matice přiřadíme jednu barvu a to tak, že na žadném se nesmí vyskutnout nenulový prvek stejné barvy jako diagonální prvek SOR iteraci pak rozdělíme na bloky řádků se sejnou barvou na diagonále x (k+1) i = (1 ω)x (k) i + ω b i a ii j<i a ij x (k+1) j j>i a ij x (k) j protoze všechny takové řádky jsou na sobě nezávislé, lze je zpracovat současně