Parallel Rekenen
Rob Bisseling
http://www.math.uu.nl/people/bisseling
Mathematisch Instituut
Universiteit Utrecht
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 1
Indeling
Motivatie: waarom parallel rekenen?
Verdeel en heers: principes van parallel rekenen
Mondriaan: ijle matrix-vector vermenigvuldiging
Alhambra: verdelen van rekenroosters
Conclusie
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 2
Zoeken op het Web: welke pagina is de eerste?
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 3
De linkmatrix A
We hebben n webpagina’s met onderlinge verwijzingen(links) en definiëren de ijle n × n linkmatrix A door
aij =
{
1 als er een link is van pagina j naar pagina i
0 anders.
Zij e = (1, 1, . . . , 1)T een vector die de initiële uniformebelangrijkheid van alle webpagina’s representeert. Dan is
(Ae)i =∑
j
aijej =∑
j
aij
het totaal aantal links die naar pagina i wijzen.
De vector Ae representeert het belang van de pagina’s;A2
e houdt ook rekening met het belang van deverwijzende pagina’s; enz.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 4
Het random surfer model
Een websurfer kiest elk van de uitgaande Nj links vanpagina j met gelijke kans.
Definieer de n × n diagonale matrix D met djj = 1/Nj.
Zij α de waarschijnlijkheid dat een websurfer eenuitgaande link van de huidige pagina volgt.Typische waarde van α = 0.85.
De surfer verveelt zich en springt naar een willekeurigepagina met kans 1 − α.
Elke webpagina is dus bereikbaar.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 5
De Google-matrix
De Google-matrix is gedefinieerd door Brin and Page(1998) als
G = αAD + (1 − α)eeT /n.
De PageRank van een verzameling webpagina’s kanworden verkregen door herhaalde vermenigvuldiging vande matrix G met een vector.
Hiervoor is nodig: ijle matrix–vector vermenigvuldigingvoor de matrix A, en enige vectoroperaties.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 6
Parallelle computer: PC cluster
PC PC PC PC PC PC PC PC
switch switch switch switch
Google heeft 100.000 PC’s die samenwerken bij hetindexeren van het web en het zoeken naar informatie.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 7
Parallelle computer: abstract model
����
����
����
����
M
P P P PP
M M M M
Communicatie
netwerk
Bulk synchrone parallelle (BSP) computer (Valiant 1989)
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 8
Parallel algoritme: superstappen
����
����
��������
��������
��������
��������
�������
�������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������
����������������������������������������������������������������������������������������������������������������
����������������������������
����������������������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
����������������
������������
������������
������������������������
������������������������
���������������������������������
���������������������������������
������������������������������������������������
������������������������������������������������
P(0) P(1) P(2) P(3) P(4)
sync
sync
sync
sync
sync
comm
comm
comm
comp
comp
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 9
Tijd van een communicatiesuperstap
2-relaties:
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
������������������������������������������������������������������������������������
P(0) P(1)
P(2)
P(0)P(0) P(0)P(0) P(1)
P(2)
(a) (b)
Een h-relatie is een communicatiesuperstap waarin elkeprocessor ten hoogste h datawoorden stuurt en ontvangt:h = max{hsend, hrecv}
T (h) = hg + l, waarbij g de tijd is per datawoorden l de globale synchronisatietijd.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 10
Tijd van een h-relatie op een 8-processor IBM SP
0
50000
100000
150000
200000
250000
300000
350000
0 50 100 150 200 250
Tim
e (i
n fl
op u
nits
)
h
Measured dataLeast-squares fit
flop = floating-point operatie zoals +,−,×, /
r = 212 Mflop/s, p = 8, g = 187 flop (0.88µs),l = 148212 flop (698 µs)
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 11
BSP-parameters van een SGI Origin 3800 (Teras)
p g l Tcomm(0)
1 99 55 3782 75 5118 14144 99 12743 20988 126 32742 4947
16 122 93488 15766r = 285 Mflop/s
Tcomm(0) is de tijd van een 0-relatie
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 12
IJle matrix-vector vermenigvuldiging u := Av
A ijle m × n matrix, m rijen, n kolommenu vector van lengte mv vector van lengte n
Sequentiële berekening
ui :=n−1∑
j=0
aijvj
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 13
Parallelle ijle matrix-vector vermenigvuldiging u = Av
1
22
2 3
5
5
9
1
3
4
6
5
8
4
6
41 3
1
9 2
64
9
1
u
v
A4 superstappen:communiceren, rekenen, communiceren, rekenen
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 14
Matrix priem60
Blokverdeling van 60 × 60 matrix priem60 met 462niet-nullen, voor p = 4
aij 6= 0 ⇐⇒ i|j or j|i (1 ≤ i, j ≤ 60)
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 15
Matrix priem60: algemene dataverdeling
4 processoren
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 16
Cartesische matrixverdeling
Blokdistributie van 59 × 59 matrix impcol_b met 312niet-nullen voor p = 4
Aantal niet-nullen per processor: 126, 28, 128, 30
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 17
Niet-Cartesische matrixverdeling
Blokdistributie van 59 × 59 matrix impcol_b met 312niet-nullen voor p = 4
Aantal niet-nullen per processor: 76, 76, 80, 80
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 18
Compositie in Rood, Geel, Blauw en Zwart
Piet Mondriaan 1921
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 19
Ook geïnspireerd door Mondriaan
Yves Saint LaurentParallel rekenen - Kaleidoscoop 10 maart 2009 – p. 20
Een andere compositie: Blauw, Rood, Geel en Zwart
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 21
Communicatievolume voor een verdeelde matrix
V (A0, A1, A2, A3) = V (A0, A1, A2 ∪ A3) + V (A2, A3)
Hierbij is V (A0, A1, A2, A3) het globale matrix–vectorcommunicatievolume behorend bij de partitioneringA0, A1, A2, A3
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 22
Communicatievolume voor een verdeelde matrix
Stelling. Gegeven A: m × n matrix, A0, . . . , Ak
niet-doorsnijdende deelverzamelingen van A (k ≥ 1). Dan
V (A0, . . . , Ak) = V (A0, . . . , Ak−2, Ak−1 ∪ Ak) + V (Ak−1, Ak).
k delen ⇒ k + 1 delen kan onafhankelijk gedaan worden
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 23
Recursief verdeelalgoritme
MatrixPartition(A, p, ǫ)Output: nz (Ai) ≤ (1 + ǫ)nz (A)
p, i = 0, . . . , p − 1.
if p > 1 thenq := log2 p;(Ar
0, Ar1) := h(A, row, ǫ/q);
(Ac0, A
c1) := h(A, col, ǫ/q);
if V (Ar0, A
r1) ≤ V (Ac
0, Ac1) then
(A0, A1) := (Ar0, A
r1)
else (A0, A1) := (Ac0, A
c1)
maxnz := nz (A)p
(1 + ǫ);ǫ0 := maxnz
nz (A0)· p
2− 1; MatrixPartition(A0, p/2, ǫ0);
ǫ1 := maxnz
nz (A1)· p
2− 1; MatrixPartition(A1, p/2, ǫ1);
else output A;
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 24
Hypergraaf
0
4
2
1
3
6
8
5
7
Hypergraaf met 9 knopen en 6 netten,verdeeld over 2 processoren
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 25
Splitsen via hypergrafen
012345
0 1 2 3 4 5 6vertices
nets
Kolomsplitsen van m × n matrix
Hypergraaf H = (V,N) ⇒ exact communicatievolume.
Kolommen zijn knopen: 0, 1, 2, 3, 4, 5, 6.Rijen zijn netten, deelverzamelingen van V :n0 = {1, 4, 6}, n1 = {0, 3, 6}, n2 = {4, 5, 6},n3 = {0, 2, 3}, n4 = {2, 3, 5}, n5 = {1, 4, 6}.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 26
Functie h: minimaliseer communicatievolume
012345
0 1 2 3 4 5 6vertices
nets
Gebroken netten: n1, n2 veroorzaken horizontalecommunicatie
Gebruik aangepast Kernighan–Lin algoritme voorpartitionering van hypergraaf.
Multilevel methode: maak probleem kleiner doorkolommen (vertices) die op elkaar lijken samen tevoegen.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 27
Vectorverdeling
u A
v
vj 7→ een eigenaar van een niet-nul in matrixkolom jui 7→ een eigenaar van een niet-nul in matrixrij i
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 28
Broadway Boogie Woogie
Piet Mondriaan 1943
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 29
Mondriaan 2D partitionering
⇒
⇒
⇒
Recursieve splitsing van de matrix in 2 delen.
Probeer splitsing in beide richtingen, rij en kolom. Kies debeste. Rij/kolom-permutaties toegestaan.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 30
Fijnkorrelige 2D partitionering
(Çatalyürek and Aykanat, 2001)
Elke niet-nul van A krijgt individueel een processortoegewezen.
Elke niet-nul wordt een vertex in de hypergraaf.
Elke rij en kolom van de matrix wordt een net.
Er zijn dus nz (A) vertices en m + n netten.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 31
Fijnkorrelige 2D partitionering
⇒
⇒
Recursieve splitsing van de matrix in 2 delen.
Ken individuele niet-nullen toe aan delen.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 32
Hybride 2D partitioning
⇒
⇒
Probeer splitsing in rij- en kolomrichting, en fijnkorrelig.Neem telkens de beste.
Afstudeerwerk Tristan van Leeuwen (Jan. 2006).
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 33
Communicatievolume: PageRank matrix Stanford
Parkway 1D Parkway fine−grained Mondriaan 2D 0
1
2
3
4
5
6
7
8x 10
4
p = 4, 8, 16
n = 281.903 (pg’s), nz (A) = 2.594.228 niet-nullen (links).
Representeert het Stanford WWW subdomein, verkregenm.b.v. een webcrawl in sept. 2002 door Sep Kamvar.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 34
Communicatievolume: Stanford_Berkeley
Parkway 1D Parkway fine−grained Mondriaan 2D 0
5
10
15x 10
4
p = 4, 8, 16
n = 683.446, nz (A) = 8.262.087 niet-nullen.
Representeert Stanford en Berkeley WWWsubdomeinen, webcrawl in dec. 2002 door Sep Kamvar.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 35
Gemiddeld communicatievolume voor 3 methoden
2D Mondriaan Fine−grained Hybrid 0
0.2
0.4
0.6
0.8
1
1.2
Testverzameling van 18 matrices (kleiner dan PageRank).
Volume vergeleken met oorspronkelijke Mondriaanprogramma uit 2002.
Implementatie: Mondriaan’s hypergraafpartioneerder
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 36
Gemiddeld communicatievolume voor 3 methoden
2D Mondriaan Fine−grained Hybrid 0
0.2
0.4
0.6
0.8
1
1.2
Testverzameling van 18 matrices.
Volume vergeleken met oorspronkelijke Mondriaanprogramma uit 2002.
Implementatie: andere hypergraafpartioneerder, PatoH.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 37
Alhambra: meetkundige vlakverdeling
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 38
8 × 8 rekenrooster
(a) (b) (c)
4 processoren
Verdeel rekenwerk eerlijk:hoekpunt 3 tijdseenheden (flops),randpunt 4, inwendig punt 5
Beperk communicatie door korte grenzen
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 39
Alhambra: schuin snijden
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 40
Rechthoekig rooster, schuin verdeeld
Periodieke betegeling
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 41
12 × 12 rekenrooster: periodiek verdeeld
8 processoren
Totaal rekenwerk: 672 flops. Gem. 84. Maximum 90.
Communicatie: 104 waarden. Gem. 13. Maximum 14.
Totale tijd: 90 + 10 · 14 = 230.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 42
12 × 12 rekenrooster: verdeeld door Mondriaan
8 processoren
Totaal rekenwerk: 672 flops. Gem. 84. Maximum 91.
Communicatie: 85 waarden. Gem. 10.525. Maximum 16.
Totale tijd: 91 + 10 · 16 = 251.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 43
Oplossingen 12 × 12 rekenrooster
8 processoren
Beste oplossingen:maart 2003 Casper Zelissen 219 (kaleidoscoop 2003)maart 2003 Rob Bisseling 214sept. 2005 Arjen Vermolen 200 (kleine scriptie)maart 2006 Bas den Heijer 199 (kaleidoscoop 2006).Benedengrens 199?
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 44
Mogelijke oplosmethoden
8 processoren
Probeer maar wat (trial-and-error)
Meetkundig (regelmatig)
Mondriaan, met verschillende parameters
Statistisch koelen (simulated annealing)
Genetische algoritmen (mutatie en crossover)
Geheeltallig lineair programmeren (ILP)
Enumeratie (branch-and-bound zoekalgoritme in bomen)
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 45
15 × 15 rekenrooster: kaleidoscoopopgave
Huiswerkpgave: verdeel een 15 × 15 rooster over 8processoren.
Zorg voor een goede werkverdeling en zo min mogelijkcommunicatie.
De maximaal beladen processor telt.
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 46
Conclusie
De Mondriaanmethode is een goede manier om matriceste verdelen volgens de principes van parallel rekenen:
Verdeel het werk eerlijkMinimaliseer de communicatie
Parallel rekenen bevat alles wat wiskunde leuk maakt:creatief bedenken van algoritmes, van concreet naarabstract en weer terug, toepassen
Vak in 2-jarige Master Scientific Computing: ParallelAlgorithms. Onderdeel van Mastermath.
Toepassingen parallel rekenen:zoekmachinescryptoanalyse: het testen (‘kraken’) vanversleutelingsmethodenweersvoorspelling met globale rekenroosters
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 47
Dank voor de aandacht!
Parallel rekenen - Kaleidoscoop 10 maart 2009 – p. 48