PROBLEMA: Prodotto Matrice-Vettore
Calcolo Parallelo
Progettazione
di un algoritmo parallelo
per architettura MIMD
a memoria distribuita
per il calcolo del prodotto
di una matrice A per un vettore x:
Algoritmi Paralleli
per il prodotto
Matrice-Vettore
Ax  y, A  Rnn ,
Laura Antonelli
Matrice - Vettore
1
Matrice - Vettore
for i=0,n-1 do
yi =0
for j=0,n-1 do
yi=yi+aij xj
Qual è
Su un calcolatore tradizionale il
l’algoritmo parallelo
vettore y
?
Viene generalmente calcolato
componente per componente
secondo un ordine prestabilito
ovvero
Come decomporre
endfor
endfor
Matrice - Vettore
2
Domanda
In particolare…
Algoritmo sequenziale
x, y  Rn
il problema
L’i-esimo elemento di y
è il prodotto scalare della
i-esima riga di A per il vettore x
3
Matrice-Vettore ?
Matrice - Vettore
4
1
DECOMPOSIZIONE: IDEA GENERALE
I STRATEGIA
Decomporre un problema di dimensione N
in P sottoproblemi di dimensione N/P
e risolverli contemporaneamente
su più calcolatori
Decomposizione 1
suddividiamo la
matrice A in
BLOCCHI di RIGHE
N/P
N/P
N
N/P
N/P
Matrice - Vettore
5
Algoritmo “a blocchi”
Partizionamento “in blocchi”
delle righe della matrice A e quindi del vettore y
Algoritmo sequenziale per
blocchi di righe
begin
Distribuzione dei blocchi
y=0
ai processori
for i=0 to p-1 do
Ai  R rn
i  0, p  1
yi=Ai x
Matrice - Vettore
Algoritmo a blocchi
Ogni processore calcola un
prodotto matrice-vettore di
dimensione più piccola
endfor
A i x = yi
6
Qual è l’algoritmo parallelo ?
Partizionamento di A in p blocchi composti da r righe
A00 
A
 AA 
 11   x  yy




1 
App-1
Matrice - Vettore
end
7
Matrice - Vettore
Algoritmo parallelo
8
2
I STRATEGIA: In generale
Algoritmo parallelo 1
Se la decomposizione dei dati
nel prodotto Matrice-Vettore avviene
mediante un partizionamento in “blocchi”
di righe della matrice
I passo: decomposizione del problema
La matrice A viene distribuita
in BLOCCHI di RIGHE
fra p processori
Matrice - Vettore
9
I STRATEGIA: In generale
10
I STRATEGIA: In generale
II passo: risoluzione dei sottoproblemi
Il vettore x viene assegnato INTERAMENTE
ai p processori
Il prodotto Ax=y viene decomposto
in p prodotti matrice-vettore
x
Ai •x=yi
y
P0
dove y={yo y1 ... yp-1}
P0 Ciascun processore calcola r=n/p
P1 prodotti scalari di dimensione n,
P1
11
…
……
P2
…
P2
…
P1
P2
Matrice - Vettore
I passo: decomposizione del problema
Matrice - Vettore
P0
…
Il vettore prodotto finale (il vettore y)
viene calcolato in parallelo,
in “blocchi” distribuiti fra i processori
…
A
A0
A1
A2
Matrice - Vettore
cioé
un blocco del vettore finale y
12
3
Domanda
I STRATEGIA: osservazioni
Quale altro
 è la distribuzione “più naturale” perché deriva
direttamente dalla definizione del prodotto matrice
per vettore
algoritmo parallelo
?
 non sono richieste comunicazioni tra processori
MA
ovvero
Come decomporre diversamente
 il vettore x è assegnato a tutti i processori
 il vettore y risulta distribuito fra i processori
(necessità di comunicazione per collezionare il
prodotto finale)
Matrice - Vettore
il calcolo del prodotto
Matrice-Vettore ?
13
Matrice - Vettore
14
Algoritmo a blocchi
II STRATEGIA
Partizionamento di A in p blocchi composti da r colonne
Decomposizione 2
AA00
suddividiamo
la matrice A in
BLOCCHI di COLONNE
 xx00 
 x  p-1
A  Rnr , xi  Rr , ri  Rr
x
AA1 1  AAp-1c-1    1    ri = y i
   i 0
i  0,..., p  1
x 
Algoritmo
sequenziale per
x
 p-13 
blocchi di colonne
begin
y=0
for i=0 to p-1 do
Ai xi = ri
ri=Ai xi
y=y+ri
endfor
Matrice - Vettore
15
Matrice - Vettore
end
16
4
Algoritmo parallelo 2
Qual è l’algoritmo parallelo ?
Partizionamento “in blocchi”
delle colonne della matrice A e quindi del vettore x
Se la decomposizione dei dati
nel prodotto Matrice-Vettore avviene
mediante un partizionamento in “blocchi”
di colonne della matrice
Distribuzione dei blocchi
Algoritmo a blocchi
ai processori
Ogni processore calcola un
prodotto matrice-vettore di
dimensione più piccola
Algoritmo parallelo
Matrice - Vettore
17
Domanda
Il vettore prodotto finale (il vettore y)
viene ricondotto
al calcolo in parallelo dei contributi (alla somma)
del vettore y
distribuiti fra i processori
Matrice - Vettore
18
Risposta
Come calcolare
Matrice - Vettore
il vettore finale
Necessità di un algoritmo
y = r0 + r1 + r2 + …+ rp-1
parallelo efficiente per la
?
somma di vettori distribuiti
19
Matrice - Vettore
20
5
II STRATEGIA: In generale
II STRATEGIA: In generale
I passo: decomposizione del problema
I passo: decomposizione del problema
La matrice A viene distribuita
in BLOCCHI di COLONNE
fra p processori
x
P0
xo
P1
x1
P2
…
Matrice - Vettore
…
…
x2
21
P0
P1
P2
…
A
A0 A1 A2
Il vettore x viene distribuito
fra i p processori
Matrice - Vettore
II STRATEGIA: In generale
II STRATEGIA: osservazioni
II passo: risoluzione dei sottoproblemi
 Tutti i processori possono avere il vettore finale y
Il prodotto Ax=y viene decomposto
in p prodotti matrice-vettore
Ai •xi=ri
 Richiede un algoritmo parallelo per la somma di un
vettore (comunicazioni tra processori)
P-1
dove y= ri
MA
i=0
Ciascun processore calcola n prodotti scalari di
dimensione r=n/p
 il vettore y è assegnato a tutti i processori
 il vettore y finale necessita di un algoritmo parallelo
per la somma (aumento delle comunicazione) per
ottenere il prodotto finale
Ovvero un contributo parziale del vettore
(somma) finale y
I processori devono eseguire una somma globale
per calcolare il vettore prodotto finale
Matrice - Vettore
22
23
Matrice - Vettore
24
6
Domanda
Risposta: SI!
E’ possibile realizzare
Decomposizione 1: BLOCCHI di RIGHE
+
=
un’altra decomposizione
nel problema del prodotto
Matrice-Vettore
Decomposizione 2: BLOCCHI di COLONNE
?
Decomposizione 3: BLOCCHI QUADRATI
Matrice - Vettore
25
Strategia III: Esempio (4 processori)
Matrice - Vettore
26
Domanda
I passo: decomposizione del problema
Ciascun processore
Distribuzione della matrice A per blocchi quadrati
x
A
P0
P1
P2
P3
P0
P2
P1
P3
quale “parte” di y
calcola
Stesso blocco di x
?
Stesso blocco di x
Distribuzione del vettore x fra i processori
Matrice - Vettore
27
Matrice - Vettore
28
7
Esempio N = 10 , Processori=4
P0
Esempio N = 10 , P=4
P0
P1
a00 x0 + a01 x1 +……+ a04 x4
a05 x5 + a06 x6 +……+ a09 x9
r0
a40 x0 + a41 x1 +……+ a44 x4
a45 x5 + a46 x6 +……+ a49 x9
r4
a50 x0 + a51 x1 +……+ a54x4
a90 x0 + a91 x1 +……+ a94 x4
a55 x5 + a56x6 +……+ a59x9
r5
a95 x5 + a96x6 +……+ a99 x9
r9
P2
P3
+
s0
+
s5
P2
Calcolo dei prodotti parziali
Matrice - Vettore
P1
s4
s9
P3
Comunicazione: somma in parallelo
29
III strategia: in generale
Matrice - Vettore
30
III strategia: osservazioni
Ciascun processore calcola

somme parziali
di alcune componenti del vettore y
tutti i dati sono distribuiti tra
processori
 Per il calcolo del vettore finale y c’è
necessità di p algoritmi paralleli per la
somma di p vettori
I processori appartenenti ad una stessa riga
devono sommare i risultati parziali
Matrice - Vettore
31
Matrice - Vettore
32
8
Riassumendo
Decomposizione del problema
Matrice-Vettore
Riferimenti Bibliografici
A. Murli – Lezioni di Calcolo Parallelo – Liquori Ed.
Partizionamento della matrice A
IN BLOCCHI
M.J. Quinn – Parallel Programming – Mc Graw Hill Ed.
Riformulazione “A BLOCCHI”
dell’algoritmo sequenziale
Matrice - Vettore
Parallelismo dell’algoritmo
“A BLOCCHI”
33
Matrice - Vettore
34
FINE LEZIONE
Matrice - Vettore
35
9