dense matrix-matrix multiplication in parallel progetto per il corso di calcolo parallelo a.a....
TRANSCRIPT
![Page 1: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/1.jpg)
Dense Matrix-Matrix Multiplication in Parallel
PROGETTO PER IL CORSO DI CALCOLO PARALLELO
A.A. 2006/07
Cappellazzo PietroCarminati Roberto De Martin Andrea
![Page 2: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/2.jpg)
Matrix-Matrix Multiplication in Parallel 2
Obbiettivi
Implementazione dell’algoritmo sequenziale
Implementazioni di tre algoritmi paralleli Matrix-Matrix Multiplication Cannon Algorithm Processor Farm
Test e confronti fra gli algoritmi paralleli
![Page 3: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/3.jpg)
Matrix-Matrix Multiplication in Parallel 3
Strutture Dati Le matrici utilizzate sono descritte dalla seguente struttura:
typedef struct matrice{
int size;
double **valori;
} Matrice;
Per gestire queste sono state implementate varie funzioni, fra le quali:
Matrice *generaMatrici(int); void stampaMatrice(Matrice *matrice); Matrice *leggiMatrice(char nome[],int *n); void freeMatrice(Matrice *m);
![Page 4: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/4.jpg)
Matrix-Matrix Multiplication in Parallel 4
Strutture Dati
Le matrici possono essere sia caricate da disco, sia generate a runtime.
Se vengono caricate da file, il file deve essere strutturato come segue:
4
100652072.371159 244830855.097792 58656990.522433 49018021.012937
1069220144.632378 -141295504.878204 -109381498.803692 357493319.983084
392155482.578247 881982189.524574 -673959577.796322 151256985.897165
1043582072.493237 511353868.458505 189438468.246429 -344821564.773202
dimensione matrice contenuto della matrice
![Page 5: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/5.jpg)
Matrix-Matrix Multiplication in Parallel 5
Implementazione Algoritmo Sequenziale L’algoritmo sequenziale è stato implementato tramite una
semplice moltiplicazione di matrici: Entrambe le matrici da moltiplicare vengono caricate o generate
nello heap Anche la matrice risultante viene generata (vuota) nello heap Vengono effettuati i calcoli La matrice risultante viene salvata sul disco locale (di default
nella cartella /tmp) Complessità O(n3)
Questo non è l’algoritmo più efficiente (sequenziale) L’algoritmo ottimo è l’algoritmo di Strassen Complessità O( )
![Page 6: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/6.jpg)
Matrix-Matrix Multiplication in Parallel 6
Implementazione Matrix-Matrix Multiplication
Input Input da file Generazione a runtime
Suddivisione delle matrici (e posizionamento in array)
![Page 7: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/7.jpg)
Matrix-Matrix Multiplication in Parallel 7
Implementazione Matrix-Matrix Multiplication
Comunicazioni (Fase 1) Invio in broadcast il numero di celle che dovrà ricevere ogni
processo Ogni processo alloca lo spazio necessario Il processo master invia ad ogni altro processo le proprie
celle (scatter)
![Page 8: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/8.jpg)
Matrix-Matrix Multiplication in Parallel 8
Implementazione Matrix-Matrix Multiplication
Comunicazioni (Fase 2) i processi devono comunicare il proprio blocco a
tutti gli altri processi presenti nella stessa riga della prima matrice e nella stessa colonna della seconda
MPI_Comm_split(MPI_COMM_WORLD,xy[1],myid,&MPI_Riga);MPI_Comm_split(MPI_COMM_WORLD,xy[0],myid,&MPI_Colonna);
![Page 9: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/9.jpg)
Matrix-Matrix Multiplication in Parallel 9
Implementazione Matrix-Matrix Multiplication
Comunicazioni (Fase 2) Vengono effettuate tutte le comunicazioni
necessarie (all_to_all) Viene eseguita una Allgather in ogni comunicatore
creato.
![Page 10: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/10.jpg)
Matrix-Matrix Multiplication in Parallel 10
Implementazione Matrix-Matrix Multiplication
Moltiplicazione ogni processo possiede tutti i dati necessari a calcolare il
proprio blocco risultante e procede con la moltiplicazione
Comunicazioni (Fase 3) I blocchi vengono convertiti in array monodimensionali e
inviati al processo master (gather)
![Page 11: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/11.jpg)
Matrix-Matrix Multiplication in Parallel 11
Implementazione Matrix-Matrix Multiplication Salvataggio
Il processo master a questo punto compone la matrice risultante e la salva nel disco locale
Di default nella cartella /tmp del sistema
Riassunto funzionamento
![Page 12: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/12.jpg)
Matrix-Matrix Multiplication in Parallel 12
Implementazione Cannon Algorithm
Input Input da file Generazione a runtime
Suddivisione delle matrici (e posizionamento in array)
![Page 13: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/13.jpg)
Matrix-Matrix Multiplication in Parallel 13
Implementazione Cannon Algorithm
Allineamento delle matrici
![Page 14: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/14.jpg)
Matrix-Matrix Multiplication in Parallel 14
Implementazione Cannon Algorithm Comunicazioni (Fase 1)
La fase di allineamento pone le matrici in array monodimensionali
Viene comunicato ad ogni processo quante celle dovrà ricevere(broadcast)
Ogni processo alloca quindi lo spazio necessario a ricevere i dati Il master invia ad ogni processo il proprio blocco (scatter)
![Page 15: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/15.jpg)
Matrix-Matrix Multiplication in Parallel 15
Implementazione Cannon Algorithm Determinazione del rank dei processi vicini
Per ogni processo vengono determinati gli id del processo Sopra, Sotto, A Destra, A Sinistra
![Page 16: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/16.jpg)
Matrix-Matrix Multiplication in Parallel 16
Implementazione Cannon Algorithm
Moltiplicazione ogni processo procede al calcolo del blocco
parziale (moltiplicando i due blocchi in suo possesso)
Comunicazioni (Fase 2) Attraverso la primitiva MPI_Sendrecv_replace
ogni processo comunica: Il proprio blocco della prima matrice al vicino di destra
e lo riceve da quello di sinistra Il proprio blocco della seconda matrice al vicino in alto
e lo riceve dal vicino in basso
![Page 17: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/17.jpg)
Matrix-Matrix Multiplication in Parallel 17
Implementazione Cannon Algorithm In questo modo viene effettuato uno shift delle matrici
Ad ogni passo il valore del blocco risultante temporaneo viene aggiornato
![Page 18: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/18.jpg)
Matrix-Matrix Multiplication in Parallel 18
Implementazione Cannon Algorithm Una volta ricevuti:
tutti i blocchi della riga della prima matrice e della colonna della seconda matrice
Il blocco calcolato è il risultato finale Comunicazioni (Fase 3)
I blocchi calcolati vengono trasformati in array monodimensionali e inviati al processo master (gather)
![Page 19: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/19.jpg)
Matrix-Matrix Multiplication in Parallel 19
Implementazione Cannon Algorithm Salvataggio
Il processo master a questo punto compone la matrice risultante e la salva nel disco locale Di default nella cartella /tmp del sistema
Riassunto funzionamento
![Page 20: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/20.jpg)
Matrix-Matrix Multiplication in Parallel 20
Implementazione Processor Farm
Input Input da file Generazione a runtime
Comunicazioni (Fase 1) Viene comunicata la dimensione della seconda
matrice (broadcast) Ogni processo può allocare lo spazio necessario L’intera seconda matrice viene quindi replicata in tutti i
processi slave (broadcast)
![Page 21: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/21.jpg)
Matrix-Matrix Multiplication in Parallel 21
Implementazione Processor Farm
Comunicazioni (Fase 2) Il Processo master inizia a scandire la prima matrice
comunica ad ogni processo slave una riga (MPI_send) Ed un id che indica la posizione della riga nella prima matrice se ci sono più processi che righe viene comunicato il valore
id = -1 che indica al processo slave che non ci sono dati da computare
Moltiplicazione Ogni processo slave può calcolare la riga risultante
Possiede una riga della prima matrice (MPI_recv) e l’intera seconda matrice
![Page 22: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/22.jpg)
Matrix-Matrix Multiplication in Parallel 22
Implementazione Processor Farm Comunicazioni (Fase 3)
Il processo slave, una volta terminato il calcolo invia il risultato (e l’indice) al processo master (MPI_send)
Comunicazioni (Fase 4) Il processo master :
se ha ancora righe della matrice Ris che non sono state calcolate, invia una riga della prima matrice (e l’indice corrispondente)
al processo dal quale ha appena ricevuto un risultato altrimenti
Invia al processo richiedente l’indice -1 che indica che il lavoro è terminato Salvataggio
Il processo master a questo punto compone la matrice risultante e la salva nel disco locale
Di default nella cartella /tmp del sistema
![Page 23: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/23.jpg)
Matrix-Matrix Multiplication in Parallel 23
Implementazione Processor Farm
Master
Slave 1 B
Slave 1 B Slave 1 B
Slave 1 B
Riga matric
e A + id
Rig
a m
atric
e A
+ id R
iga matrice A
+ id
id = -1
Riga matric
e Ris
+ id
Rig
a m
atric
e R
is +
id
Riga m
atrice Ris + id
Processo Idle
Processo Attivo
![Page 24: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/24.jpg)
Matrix-Matrix Multiplication in Parallel 24
Implementazione Processor Farm
![Page 25: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/25.jpg)
Matrix-Matrix Multiplication in Parallel 25
Scelte progettuali Funzione per appesantire la computazione
Funzione che accetta in input un numero e, a seconda del suo valore, utilizza il processore per più o meno tempo.
E’ basata sulle dimensione delle matrici Ad esempio:
per calcolare una matrice 1920x1920,vengono effettuate 19203 moltiplicazioni Supponendo che la funzione occupi il processore per 1ms 1ms* 19203≈1960 ore di computazione (in sequenziale)
(81 giorni !!!! ) Per questo la scelta è ricaduta su un semplice ciclo for
for (k=0;k<granularita;k++)l++; Sono state scelte tre granularità:
![Page 26: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/26.jpg)
Matrix-Matrix Multiplication in Parallel 26
Scelte progettuali
Dimensioni delle matrici Sono state scelte delle matrici che permettono
di occupare la memoria di essere calcolate in un tempo ragionevole
![Page 27: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/27.jpg)
Matrix-Matrix Multiplication in Parallel 27
Test I test sono stati eseguiti su un cluster di workstation con
macchine omogenee, così configurate: CPU: Intel® Pentium® 4 1.80Ghz (1795 Mhz) RAM: 768MB (774300KB total - 528184KB free) RETE: Ethernet 100.0Mbps indirizzi Ip 157.138.22.* OS: Ubuntu Linux (kernel version: 2.6.15-26-686)
Per i test sono state utilizzate fino a 16 macchine
I test sono stati eseguiti variando: Granularità (BASSA – MEDIA – ALTA) Dimensione matrice (192 – 384 – 960 - 1920)
Questo per ogni algoritmo, con un totale di 120 test prestazionali
![Page 28: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/28.jpg)
Matrix-Matrix Multiplication in Parallel 28
Test – tempi di esecuzioneAlgoritmo sequenziale O(n3)
algoritmo sequenziale - tempi di calcolo
0
500
1000
1500
2000
2500
192 384 960 1920
dimensione n della matrice (n*n)
tem
po
(se
c)
BASSA
MEDIA
ALTA
• la complessità dell’algoritmo è O(n3)
• nella matrice con dimensioni maggiori (1920x1920) la differenza è di circa 1469sec (≈24minuti).
• Questo permetterà poi di valutare effettivamente il comportamento degli algoritmi paralleli
![Page 29: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/29.jpg)
Matrix-Matrix Multiplication in Parallel 29
Test – tempi di esecuzioneMatrix-Matrix Multiplication
Matrice 384x384 Algoritmo Matrix Matrix Multiplication
0
2
4
6
8
10
12
14
16
18
4 9 16
numero processi
tem
po
(se
c)
BASSAMEDIAALTA
• l’aumento del numero di processi non comporta l’aumento delle prestazioni auspicabile
• con l’aumento del numero di processori, aumentano anche le comunicazioni necessarie a fornire ad ogni processo il proprio blocco di dati da computare.
![Page 30: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/30.jpg)
Matrix-Matrix Multiplication in Parallel 30
Test – tempi di esecuzioneMatrix-Matrix Multiplication
Matrice 1920x1920 Algoritmo Matrix Matrix Multiplication
0
200
400
600
800
1000
1200
1400
1600
4 9 16
numero processi
tem
po
(se
c)
BASSA
MEDIA
ALTA
• Matrix-Matrix Multiplication non effettua il bilanciamento del carico
• Si ipotizza infatti che almeno una delle macchine coinvolte nel calcolo, sia risultata più lenta, comportando un aumento del tempo totale di calcolo
![Page 31: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/31.jpg)
Matrix-Matrix Multiplication in Parallel 31
Test – tempi di esecuzioneCannon Algorithm
Matrice 384x384 Algoritmo Cannon
0
1
2
3
4
5
6
4 9 16
numero processi
tem
po
(se
c)
BASSA
MEDIA
ALTA
• l’algoritmo offre un significativo aumento delle prestazioni fino a 9 processi, per poi diminuire le prestazioni passando a 16
![Page 32: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/32.jpg)
Matrix-Matrix Multiplication in Parallel 32
Test – tempi di esecuzioneCannon Algorithm
Matrice 1920x1920 Algoritmo Cannon
0
100
200
300
400
500
600
4 9 16
numero processi
tem
po
(s
ec)
BASSA
MEDIA
ALTA
• Questo comportamento viene enfatizzato con matrici di grandi dimensioni
• arriva addirittura ad impiegare lo stesso tempo utilizzando 9 oppure 16 processi
![Page 33: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/33.jpg)
Matrix-Matrix Multiplication in Parallel 33
Test – tempi di esecuzioneProcessor Farm
Matrice 1920x1920 Algoritmo Processor Farm
0
100
200
300
400
500
600
700
800
900
4 9 16
numero processi
tem
po
(se
c)
BASSA
MEDIA
ALTA
• L’algoritmo processor farm risente meno dello sbilanciamento del carico
• il numero di comunicazioni totali dipende esclusivamente dalla dimensione della matrice
![Page 34: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/34.jpg)
Matrix-Matrix Multiplication in Parallel 34
Test – speedupMatrice 192x192 Funzione di Granularità MEDIA
0,0
0,2
0,4
0,6
0,8
1,0
1,2
1,4
1,6
4 9 16
numero processi
spee
du
p Matrix Matrix Multiplication
Cannon Algorithm
Processor Farm
• Nei problemi semplici Matrix-Matrix Multiplication è l’unico algoritmo ad avere un andamento positivo del valore di speedup.
![Page 35: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/35.jpg)
Matrix-Matrix Multiplication in Parallel 35
Test – speedupMatrice 1920x1920 Funzione di granularità ALTA
0
2
4
6
8
10
12
14
4 9 16
numero processi
spee
du
p Matrix Matrix Multiplication
Cannon Algorithm
Processor Farm
• In problemi onerosi, l’algoritmo Processor Farm ha una crescita con andamento lineare del valore di speedup.
![Page 36: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/36.jpg)
Matrix-Matrix Multiplication in Parallel 36
Test – efficienza
Matrice 192x192 Funzione di granularità BASSA
0,000
0,050
0,100
0,150
0,200
0,250
0,300
0,350
4 9 16
numero processi
effi
cien
za
Matrix MatrixMultiplication
Cannon
ProcessorFarm
• Con problemi di ridotte dimensioni gli algoritmi paralleli implementati non hanno mai evidenziato valori di efficienza significativi (max≈0.3)
![Page 37: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/37.jpg)
Matrix-Matrix Multiplication in Parallel 37
Test – efficienza
Matrice 1920x1920 Funzione granulartià ALTA
0,000
0,200
0,400
0,600
0,800
1,000
1,200
1,400
4 9 16
numero processi
effi
cien
za
Matrix MatrixMultiplication
Cannon
ProcessorFarm
• Cannon Algorithm presenta un buon valore di efficienza nel caso in cui i processi coinvolti siano pochi.
• Riteniamo più efficiente l’algoritmo Processor Farm, che tende a far rimanere il valore dell’efficienza costante
![Page 38: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/38.jpg)
Matrix-Matrix Multiplication in Parallel 38
Test – dimensione del problema
Numero processi 16 Funzione granularità ALTA
0
100
200
300
400
500
600
700
800
900
192 384 960 1920
dimensione matrice
tem
po
(se
c)
Matrix Matrix Multiplication
Cannon Algorithm
Processor Farm
• il tempo di calcolo dell’algoritmo matrix-matrix multiplication aumenta notevolmente rispetto agli algoritmi cannon e processor farm, rendendolo praticamente inutilizzabile per la risoluzione di compiti di grande dimensione
![Page 39: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/39.jpg)
Matrix-Matrix Multiplication in Parallel 39
Test – Complessità del problema
Matrice 1920x1920 numero processi 16
0
100
200
300
400
500
600
700
800
900
B M A
granularità
tem
po
(se
c)
Matrix Matrix Multiplication
Cannon Algorithm
Processor Farm
• l’algoritmo processor farm ha un andamento all’incirca costante al variare della granularità
• il bilanciamento del carico effettuato da questo algoritmo è sempre più efficiente all’aumentare della complessità del problema
![Page 40: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/40.jpg)
Matrix-Matrix Multiplication in Parallel 40
Conclusioni L’algoritmo Matrix Matrix Multiplication, non si è mostrato
idoneo alla parallellizzazione, arrivando al massimo ad un efficienza pari a 0.4.
Gli algoritmi Cannon e Processor Farm hanno invece evidenziato dei tempi di esecuzione simili: Cannon algorithm ha una tendenza a far diminuire l’efficienza
all’aumentare dei processi coinvolti nel calcolo; Processor farm ha invece mantenuto invariato tale valore.
L’algoritmo che quindi è da preferire, nell’ambiente di test provato, è sicuramente Processor Farm: ha dimostrato di risolvere i calcoli in un buon tempo; di riuscire a bilanciare il carico; di non soffrire di un aumento di comunicazioni, all’aumentare nel
numero di processi coinvolti nelle fasi di calcolo.
![Page 41: Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea](https://reader035.vdocuments.net/reader035/viewer/2022070312/5542eb4e497959361e8bde35/html5/thumbnails/41.jpg)
Matrix-Matrix Multiplication in Parallel 41
Riferimenti
MPI: The Complete Reference, by Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker and Jack Dongarra, The MIT Press, Cambridge, Massachusetts London, England.
Parallel Matrix Multiplication and other Full Matrix Algorithms, G. Fox, Community Grids Laboratory, Indiana University, 2005.
Introduction to Parallel Computing, 2° Ed., A. Grama, A. Gupta, G. Karypis, V. Kumar Addison-Wesley, 2003.
The C Programming Language, Kernighan, Brian W.; Dennis M. Ritchie, Prentice Hall.
http://www-unix.mcs.anl.gov/mpi/ - The Message Passing Interface (MPI) standard.
http://www.cs.mu.oz.au/498/notes/node30.html - The University of Melbourne - Department of Computer Science and Software Engineering - Cannon's algorithm.
http://www.dsi.unive.it/~calpar/ - Università Ca’Foscari, Venezia – Dipartimento di informatica - Appunti per il corso di calcolo parallelo