Sei sulla pagina 1di 37

Calcolo Parallelo e Distribuito I

Prodotto Matrice-Matrice

Prof. G. Laccetti

a.a. 2016-2017
Problema

Progettazione
di un algoritmo parallelo
per architettura MIMD
a memoria distribuita
per il calcolo del prodotto righe per colonne
di 2 matrici A e B:

C  A  B, A, B  Rnn

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 2


Quali sono i sotto-problemi indipendenti?

Gli elementi di C sono


calcolati effettuando i
prodotti scalari di ciascuna riga di A per
ciascuna colonna di B

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 3


Quali sono i sotto-problemi indipendenti?

Gli elementi di C sono


calcolati effettuando i
prodotti scalari di ciascuna riga di A per
ciascuna colonna di B

I prodotti scalari sono calcolati


in maniera indipendente
l’uno dall’altro
G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 4
Altra possibile decomposizione

Decomposizione in BLOCCHI di RIGHE

+
Decomposizione in BLOCCHI di COLONNE

=
Decomposizione in BLOCCHI QUADRATI

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 5


Esempio: matrici a blocchi 3x3 = 9

C00 C01 C02  A A A  B B B 


00 01 02 00 01 02
 C C C    A A A   B B B 
 10 11 12    10
 11 12 10 11 12

C20 C21 C22  A A A  B B B 


20 21 22 20 21 22

Supponiamo di disporre di pxp processori


secondo una griglia di dimensione pxp…

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 6


Esempio: 3x3=9 processori

P00 P01 P02

P10 P11 P12

P20 P21 P22

Al processore Pij assegniamo i blocchi Aij e Bij

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 7


Distribuzione dei dati

P00 P01 P02


A00 B00 A01 B01 A02 B02

P10 P11 P12


A10 B10 A11 B11 A12 B12

P20 P21 P22

A20 B20 A21 B21 A22 B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 8


IDEA!

Con i dati così distribuiti

Vogliamo che il processore Pij

Calcoli il blocco Cij

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 9


Ovvero…

C00 = C01 = C02 =


A00 B00 + A01B10 +A02B20 A00B01 + A01B11 +A02B21 A00B02 + A01B12 +A02B22

C10 = C11 = C12 =


A10 B00 +A11B10 +A12B20 A10 B01 +A11B11 +A12 B21 A10 B02 +A11B12 +A12B22

C20 = C21 = C22 =


A20B00 + A21B10+A22B20 A20B01 +A21B11 +A22B21 A20 B02 +A21B12 +A22B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 10


Ovvero…
A00 B00 A01 B01 A02 B02
C00 = C01 = C02 =
A00 B00 + A01B10 +A02B20 A00B01 + A01B11 +A02B21 A00B02 + A01B12 +A02B22

A10 B10 A11 B11 A12 B12


C10 = C11 = C12 =
A10 B00 +A11B10 +A12B20 A10 B01 +A11B11 +A12 B21 A10 B02 +A11B12 +A12B22

A20 B20 A21 B21 A22 B22


C20 = C21 = C22 =
A20B00 + A21B10+A22B20 A20B01 +A21B11 +A22B21 A20 B02 +A21B12 +A22B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 11


Osservazione I

Con la distribuzione
dei dati effettuata
solo i processori sulla diagonale
della griglia, ovvero Pii
possono calcolare
“un contributo” del blocco Cii
Ovvero…
G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 12
ovvero…
A00 B00 A01 B01 A02 B02
C00 = C01 = C02 =
A00 B00 + A01B10 +A02B20 A00B01 + A01B11 +A02B21 A00B02 + A01B12 +A02B22

A10 B10 A11 B11 A12 B12


C10 = C11 = C12 =
A10 B00 +A11B10 +A12B20 A10 B01 +A11B11 +A12 B21 A10 B02 +A11B12 +A12B22

A20 B20 A21 B21 A22 B22


C20 = C21 = C22 =
A20B00 + A21B10+A22B20 A20B01 +A21B11 +A22B21 A20 B02 +A21B12 +A22B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 13


Osservazione II
A00 B00 A01 B01 A02 B02
C00 = C01 = C02 =
A00 B00 + A01B10 +A02B20 A00B01 + A01B11 +A02B21 A00B02 + A01B12 +A02B22

A10 B10 A11 B11 A12 B12


C10 = C11 = C12 =
A10 B00 +A11B10 +A12B20 A10 B01 +A11B11 +A12 B21 A10 B02 +A11B12 +A12B22

A20 B20 A21 B21 A22 B22


C20 = C21 = C22 =
A20B00 + A21B10+A22B20 A20B01 +A21B11 +A22B21 A20 B02 +A21B12 +A22B22

Nel calcolo dei Cij …


•A00 è presente nel calcolo della I riga di C (C00,C01, C02)
•A11 è presente nel calcolo della II riga di C (C10, C11, C12)
•AG.
22 è presente nelCalcolo
Laccetti calcolo della
Parallelo III riga
e Distribuito di 2016/2017
I - a.a. C (C20, C21, C22) 14
IDEA!

I processori sulla diagonale:


P00 , P11 e P22
inviano il proprio blocco di A,
ovvero A00 , A11 e A22
Rispettivamente ai processori della riga 0,1,2
(ovvero ai processori che si trovano sulla loro stessa riga!)

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 15


I passo: invio dei blocchi diagonali di A

P00 P01 P02


A00 A00 A00

P10 P11 P12


A11 A11 A11

P20 P21 P22

A22 A22 A22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 16


Quindi, ogni processore calcola…
A00 B00 A00 A01 B01 A00 A02 B02
C00 = C01 = C02 =
A00B00 + A01B10 +A02B20 A00 B01+ A01B11+A02B21 A00B02 +A01B12 +A02B22

A11 A10 B10 A11 B11 A11 A12 B12


C10 = C11 = C12 =
A10 B00 +A11B10 +A12B20 A10 B01 + A11B11 +A12B21 A10 B02 +A11B12 +A12B22

A22 A20 B20 A22 A21 B21 A22 B22


C20 = C21 = C22 =
A20 B00 +A21B10 +A22B20 A20 B01 +A21B11 +A22B21 A20B02 +A21B12 +A22B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 17


Quindi, ogni processore calcola…
A00 B00 A00 A01 B01 A00 A02 B02
C00 = C01 = C02 =
A00B00 + A01B10 +A02B20 A00 B01+ A01B11+A02B21 A00B02 +A01B12 +A02B22

A11 A10 B10 A11 B11 A11 A12 B12


C10 = C11 = C12 =
A10 B00 +A11B10 +A12B20 A10 B01 + A11B11 +A12B21 A10 B02 +A11B12 +A12B22

A22 A20 B20 A22 A21 B21 A22 B22


C20 = C21 = C22 =
A20 B00 +A21B10 +A22B20 A20 B01 +A21B11 +A22B21 A20B02 +A21B12 +A22B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 18


II passo
A00 B00 A00 A01 B01 A00 A02 B02
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

A11 A10 B10 A11 B11 A11 A12 B12


C10 = C11 = C12 =
A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

A22 A20 B20 A22 A21 B21 A22 B22


C20 = C21 = C22 =
A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

Nel calcolo dei Cij …


•A01 è presente nel calcolo della I riga di C (C00,C01, C02)
•A12 è presente nel calcolo della II riga di C (C10, C11, C12)
G.•A è presente Calcolo
nel calcolo
Parallelodella IIII riga di C (C20, C21, C22)
Laccetti e Distribuito - a.a. 2016/2017 19
20
IDEA!

I processori:
P01 , P12 e P20
inviano il proprio blocco di A,
ovvero A01 , A12 e A20
Rispettivamente ai processori della riga 0,1,2
(ovvero ai processori che si trovano sulla loro stessa riga!)

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 20


II passo: invio dei blocchi di A

P00 P01 P02


A01 A01 A01

P10 P11 P12


A12 A12 A12

P20 P21 P22

A20 A20 A20

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 21


Osservazione: per effettuare i prodotti …
A01 B00 A00 A01 B01 A01 A02 B02
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

A12 A10 B10 A12 B11 A11 A12 B12


C10 = C11 = C12 =
A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

A22 A20 B20 A20 A21 B21 A20 B22


C20 = C21 = C22 =
A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

Ciascun processore ha bisogno anche del corrispondente blocco di B!


(E precisamente del blocco di B
del processore nella sua stessa colonna ma nella riga successiva! )
G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 22
IDEA!

Per ogni colonna della griglia di processori,


ciascun processore Pij
Invia il proprio blocco Bij,
al processore situato nella stessa colonna
e sulla riga precedente!

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 23


Comunicazione dei blocchi di B

P00 P01 P02


B00
10 B01
11 B02
12

P10 P11 P12


B20
10 B21
11 B22
12

P20 P21 P22

B00
20 B01
21 B02
22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 24


Quindi, ogni processore calcola…
A01 B10 A00 A01 B11 A01 A02 B12
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

A12 A10 B20 A12 B21 A11 A12 B22


C10 = C11 = C12 =
A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

A22 A20 B00 A20 A21 B01 A20 B02


C20 = C21 = C22 =
A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 25


Quindi, ogni processore calcola…
A01 B10 A00 A01 B11 A01 A02 B12
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

A12 A10 B20 A12 B21 A11 A12 B22


C10 = C11 = C12 =
A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

A22 A20 B00 A20 A21 B01 A20 B02


C20 = C21 = C22 =
A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 26


III passo
A01 B10 A00 A01 B11 A01 A02 B12
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

A12 A10 B20 A12 B21 A11 A12 B22


C10 = C11 = C12 =
A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

A22 A20 B00 A20 A21 B01 A20 B02


C20 = C21 = C22 =
A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

Nel calcolo dei Cij …


•A02 è presente nel calcolo della I riga di C (C00,C01, C02)
•A10 è presente nel calcolo della II riga di C (C10, C11, C12)
•A è
G. Laccetti
21 presente nel Parallelo
Calcolo calcoloe Distribuito
della III riga
I - a.a. di C (C20, C21, C22)
2016/2017 27
IDEA!

I processori:
P02 , P10 e P21
inviano il proprio blocco di A,
ovvero A02 , A10 e A21
Rispettivamente ai processori della riga 0,1,2
(ovvero ai processori che si trovano sulla loro stessa riga!)

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 28


II passo: invio dei blocchi di A

P00 P01 P02


A02 A02 A02

P10 P11 P12

A10 A10 A10

P20 P21 P22

A21 A21 A21

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 29


Osservazione: per effettuare i prodotti …
A02 B10 A02 A01 B11 A01A02 B12
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

A12 A10 B20 A10 B21 A10 A12 B22


C10 = C11 = C12 =
A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

A21 A20 B00 A20 A21 B01 A21 B02


C20 = C21 = C22 =
A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

Ciascun processore ha bisogno anche del corrispondente blocco di B!


(E precisamente del blocco di B
del processore nella sua stessa colonna ma nella riga successiva! )
G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 30
Comunicazione dei blocchi di B

P00 P01 P02


B20
10 B21
11 B22
12

P10 P11 P12


B20
00 B21
01 B22
02

P20 P21 P22

B00
10 B01
21 B02
12

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 31


Quindi, ogni processore calcola…
A02 B20 A02 A01 B21 A01A02 B22
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

A12 A10 B00 A10 B01 A10 A12 B02


C10 = C11 = C12 =
A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

A21 A20 B10 A20 A21 B11 A21 B12


C20 = C21 = C22 =
A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 32


Quindi, ogni processore calcola…
A02 B20 A02 A01 B21 A01A02 B22
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

A12 A10 B00 A10 B01 A10 A12 B02


C10 = C11 = C12 =
A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

A21 A20 B10 A20 A21 B11 A21 B12


C20 = C21 = C22 =
A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 33


Quindi, ogni processore calcola…
C00 = C01 = C02 =
A00 B00 + A01 B10 +A02 B20 A00 B01 + A01 B11 +A02 B21 A00 B02 + A01 B12 +A02 B22

C10 = C11 = C12 =


A10 B00 + A11 B10 +A12 B20 A10 B01 + A11 B11 +A12 B21 A10 B02 + A11 B12 +A12 B22

C20 = C21 = C22 =


A20 B00 + A21 B10 +A22 B20 A20 B01 + A21 B11 +A22 B21 A20 B02 + A21 B12 +A22 B22

Dopo p passi ogni processore Pij ha calcolato


il corrispondente blocco Cij
G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 34
IV Strategia: in generale
Broadcast Multiply Rolling
La strategia è costituita da p passi.
Si parte dalla diagonale principale
della griglia di processori,
ad ogni passo k, si considera
la k-ma diagonale situata al di sopra di quella principale.
I processori situati lungo la diagonale
effettuano una comunicazione collettiva
del blocco di A in loro possesso a tutti i processori
della medesima riga.
G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 35
IV Strategia: in generale
Broadcast Multiply Rolling

Inoltre, ad ogni passo


ciascun processore effettua
una comunicazione del proprio blocco di B
al processore situato
nella stessa colonna
e nella riga precedente!

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 36


Fine

G. Laccetti Calcolo Parallelo e Distribuito I - a.a. 2016/2017 37