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

Dense Matrix-Matrix Multiplication in Parallel PROGETTO PER IL CORSO DI CALCOLO PARALLELO A.A. 2006/07 Cappellazzo Pietro Carminati Roberto De Martin Andrea

Embed Size (px)

Citation preview

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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