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 Rnn , 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 rn 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 Rnr , 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