Sei sulla pagina 1di 51

Calcolo Parallelo e Distribuito

a.a. 2019-2020

I parametri di valutazione del software parallelo

Docente: Prof. L. Marcellino


Tutor: Dott. P. De Luca
Previously on… CPD

2
Previously on… CPD
 Classificazione di Flynn
 Temporale  SIDS/MISD
 Spaziale  SIMD
 asincrono  MIMD
 Strategie di Parallelizzazione per la somma in ambiente DM
(I, II, III)
 Strategie di Parallelizzazione per la somma in ambiente SM
(I, II)
 Introduzione alla libreria OpenMP per la programmazione in
ambiente multicore (che riprenderemo domani) con il
laboratorio

3
Introduzione all’efficienza

Valutare l’efficienza di un algoritmo


in ambiente di calcolo parallelo

Cosa si intende per “EFFICIENZA” ?

4
Efficienza di un algoritmo sequenziale

 COMPLESSITA’ di TEMPO T(n)


Numero di operazioni eseguite dall’algoritmo

 COMPLESSITA’ di SPAZIO S(n)


Numero di variabili utilizzate dall’algoritmo

5
Esempio: calcolo della somma di n=16 numeri

ALGORITMO SEQUENZIALE
1 studente
numero di addizioni = 15
Passi passi temporali = 15
temporali
1  
2
2 
33 

4 

5
5 

6
6 

7
7 

8
8 

9 

9
10 
10 
11
11 

12
12 
13
13 

14
14 

15
15 
complessità di
tempo
T(n)=n-1 addizioni
6
6
In un algoritmo sequenziale

Il numero complessivo di operazioni


determina anche
il numero dei passi temporali
(Il tempo di esecuzione)

7
In un software sequenziale

L’efficienza del software


dipende dalla complessità di
tempo T(n)
numero operazioni fl.p.

8
Domanda

Cosa si intende
per efficienza di un algoritmo
in ambiente parallelo?

9 9
Domanda

Si può ancora legare il tempo di esecuzione


al numero delle operazioni che costituiscono
l’algoritmo ?

10
Esempio: calcolo della somma di n=16 numeri

ALGORITMO PARALLELO
numero di addizioni = 15
2 studenti
MA
Passi
temporali
passi temporali = 8
1  
2  
3  
4  
5  
6  
7  

8 
Passi temporali 1-7: 14 addizioni
(7 per ciascuno studente)

• Passo temporale 8: 1 addizione


11
Esempio: calcolo della somma di n=16 numeri

ALGORITMO PARALLELO
numero di addizioni = 15
4 studenti
MA
Passi
temporali
passi temporali = 5
1    
2    
3    


4 
Passi temporali 1-3: 12 addizioni
5 

Passo temporale 4: 2 addizioni

Passo temporale 5: 1 addizione

12
Nell’algoritmo parallelo della somma

Il numero delle operazioni


non è legato
al numero dei passi temporali

13
Infatti …
Un calcolatore parallelo è in grado di eseguire più operazioni
concorrentemente
(allo stesso passo temporale)

Il tempo di esecuzione non è proporzionale alla complessità di tempo


(ovvero non dipende soltanto dal numero di operazioni fl. p. effettuate)

La complessità di tempo non è adatta a misurare


l’efficienza di un algoritmo parallelo

14
… e allora

Che cosa si intende per


efficienza
di un algoritmo
in ambiente parallelo?

15
… altre osservazioni:
Se p indica il numero di processori, p=1, 2, 3,…

T(p) = tempo di esecuzione su p processori


p=2

Ci aspettiamo che T(1) sia il doppio di T(2):


T(1)
2
T(2)

16
Se p indica il numero di processori, p=1, 2, 3,…

T(p) = tempo di esecuzione su p processori


p=4

Ci aspettiamo che T(1) sia il quadruplo di T(4):

T(1)
4
T(4)

17
In generale

Con p processori ci aspettiamo che


T(1) sia p volte T(p)

T(1)
p
T(p)

ovvero
ci aspettiamo di ridurre di
p volte il tempo di
esecuzione
18
IDEA

Misuriamo di quanto si riduce il tempo di


esecuzione su p processori

rispetto al tempo di esecuzione

su 1 processore…

19
Esempio: calcolo della somma di n=16 numeri

ALGORITMO SEQUENZIALE
p=1
tcalc
1  
2

3
4  numero di addizioni = 15
5 
6 
7 
8 
9 

Tempo di
T(1)=15 tcalc
10
11 
12  esecuzione
13 
14 
15

tcalc= tempo di esecuzione di 1 addizione

20
Esempio: calcolo della somma di n=16 numeri

ALGORITMO PARALLELO
II-III strategia p=2
numero di addizioni = 15
P0 P1
tcalc
1  
2  
 
T(2)=8 tcalc
3
4  
5  
6  
7  

8 
tcalc= tempo di esecuzione di 1 addizione

21
Esempio: calcolo della somma di n=16 numeri

ALGORITMO PARALLELO
II-III strategia p=4
numero di addizioni = 15
P0 P1 P2 P3
tcalc
1    
2    
3    
T(4)=5 tcalc
4  

5 

tcalc= tempo di esecuzione di 1 addizione

22
Esempio: calcolo della somma di n=16 numeri

ALGORITMO PARALLELO
II-III strategia p=8
numero di addizioni = 15
tt calc
calc P0 P1 P2 P3 P4 P5 P6 P7

1        

2    
T(8)=4 tcalc
3  

4 

tcalc= tempo di esecuzione di 1 addizione

23
In sintesi… II-III strategia

p Tp
1 15tcalc
2 8tcalc
4 5tcalc
8 4tcalc
p ? tcalc
?
In generale quanto vale T(p)?
24
In generale: calcolo di T(p)
ALGORITMO PARALLELO della somma di n numeri
II-III strategia - posto p processori

p=1 T(1)=15 tcalc


p=2 T(2)=8 tcalc= (7+1) tcalc
p=4 T(4)=5 tcalc= (3+2) tcalc n = 16

p=8T(8)=4 tcalc= (1+3) tcalc


………………
n
T(p)= ( -1 +log2 p) tcalc
p
tcalc= tempo di esecuzione di 1 addizione

25
Domanda…
p Tp
1 15tcalc
2 8tcalc
4 5tcalc
8 4tcalc

Qual è l’algoritmo che impiega


meno tempo? ?
Quanto è più veloce di quello sequenziale?

26
Esempio: calcolo della somma di n=16 numeri

T(1)
p T(p)
T(p)

1 15tcalc 1.00
Maggiore
2 8tcalc 1.88 riduzione del
4 5tcalc 3.00
tempo ovvero
maggiore
8 4tcalc 3.75 aumento della
velocità

L’algoritmo su 8 processori è il più veloce


E’ più veloce di 3.75 volte di quello su 1 processore

27
Speed-up
Si definisce il rapporto T(1) su T(p)
T(1)
S(p) 
T(p)
Lo speed up misura la riduzione del
tempo di esecuzione rispetto
all’algoritmo su 1 processore

S(p)  p
SPEEDUP IDEALE

Sideale (p)  p

28
Osservazione
T (1)
S (p) 
ideale
p
T ( p)
Oh = pT(p) – T(1)
T(p) = (Oh + T(1)) /p
OVERHEAD totale

T(1) T(1) pT(1) p


S(p)    
T(p) (O h  T(1))/p O h  T(1) Oh
1
T(1)

L’OVERHEAD totale misura


quanto lo speed up differisce da quello ideale

29
L’overhead nell’algoritmo parallelo della somma
II-III str
T(1) = (n-1) tcalc
T(p) = (n/p - 1 + log2 p) tcalc

Oh = p T(p) - T(1) = [p (n/p + log2 p ) – (n-1)] tcalc =

= (n + p log2 p –n +1) tcalc =O(p log2 p) tcalc


p Oh
2 2
Al crescere di p
4 8
8 24 l’overhead aumenta!
2k p log2 p 30
Quindi

Se si vuole calcolare la somma di 16 numeri


nel minor tempo possibile
l’algoritmo su 8 processori è da preferire

Infatti, aumentando il numero di processori


si riduce
il tempo impiegato per eseguire le operazioni
richieste

31
32
Esempio: calcolo della somma di n=16 numeri

p Speed-up Speed-up
ottenuto ideale
2 1.88 2
4 3.00 4
8 3.75 8

Lo speed-up su 8 processori è il maggiore

MA
Lo speed-up su 2 processori è “il più vicino”
allo speed-up ideale…

33
Cioè

Ho utilizzato 8 processori per


avere un incremento
di quasi 4 volte

34
In altre parole

… lo speed up non basta a


fornire informazioni sull’efficienza
dell’algoritmo parallelo!

…e allora ?

35
Esempio: calcolo della somma di n=16 numeri
… se si rapporta lo speed-up al numero di processori…

Rapporto più grande


p S(p) S(p)
p
2 1.88 0.94
4 3.00 0.75
8 3.75 0.47 maggiore sfruttamento dei
processori per p=2

36
In altre parole

l’utilizzo di un maggior numero di processori NON


è sempre una garanzia di sviluppo di algoritmi
paralleli “efficaci”

OVVERO

di algoritmi che sfruttano


tutte le risorse della macchina parallela !

37
Come misurare se e quanto
è stata sfruttato il calcolatore parallelo ?

38
Efficienza
Si definisce il rapporto Ep su p
S(p)
E(p) 
p

misura quanto l’algoritmo sfrutta il parallelismo del


calcolatore

EFFICIENZA IDEALE
Sideale ( p)
Eideale ( p)  1
p

39
Infatti, per la somma con p=8
al I passo:
tt calc P0 P1 P2 P3 P4 P5 P6 P7
calc
lavorano p=8 processori
1         al II passo:

  lavorano p/2=4 processori


2  
al III passo:

3  lavorano p/4=2 processori
4 
al IV passo:
lavora p/8=1 processore!
tcalc= tempo di esecuzione di 1 addizione

Ad ogni passo si dimezza il numero


di processori attivi

40
Osservazione

Tutto quanto detto vale per l’ambiente


MIMD a memoria condivisa

Se si esegue l’algoritmo su un
calcolatore MIMD a memoria distribuita,
il tempo di esecuzione NON dipende solo
dal numero di operazioni eseguite
in differenti passi temporali

41
Esempio: calcolo della somma di n=16 numeri

ALGORITMO SEQUENZIALE
p=1
tcalc
1  
2

3
4  numero di addizioni = 15
5 
6 
7 
8 
9 

Tempo di
T(1)=15 tcalc
10
11 
12  esecuzione
13 
14 
15

tcalc= tempo di esecuzione di 1 addizione

42
Esempio: calcolo della somma di n=16 numeri

ALGORITMO PARALLELO
II-III strategia p=2
numero di addizioni = 15
P0 P1
tcalc
1  
2  
 
8 tcalc
3
4  
5  
6  
7  

1 tcom
8 
tcalc= tempo di esecuzione di 1 addizione

tcom= tempo di spedizione/ricezione di 1 elemento

43
Esempio: calcolo della somma di n=16 numeri

ALGORITMO PARALLELO
II-III strategia p=4
numero di addizioni = 15
P0 P1 P2 P3
tcalc
1    
2    
3    
5 tcalc
4  

5 
2 tcom

tcalc= tempo di esecuzione di 1 addizione

tcom= tempo di spedizione/ricezione di 1 elemento

44
Esempio: calcolo della somma di n=16 numeri

ALGORITMO PARALLELO
II-III strategia p=8
numero di addizioni = 15
tt calc
calc P0 P1 P2 P3 P4 P5 P6 P7

1        

2    
4 tcalc
3 tcom
3  

4 

tcalc= tempo di esecuzione di 1 addizione

tcom= tempo di spedizione/ricezione di 1 elemento

45
In sintesi …
p T(p)
1 15tcalc
2 8tcalc + 1 tcom
4 5tcalc + 2 tcom
8 4tcalc + 3 tcom
2k ? tcalc + ? tcom ?
In generale quanto vale T(p)
considerando le comunicazioni?

46
In generale: calcolo di T(p) considerando le comunicazioni
ALGORITMO PARALLELO
della somma di n numeri
su p=2k processori

p=1 T(1)=15 tcalc


p=2 T(2)=8 tcalc= (7+1) tcalc + 1 tcom
p=4 T(4)=5 tcalc= (3+2) tcalc + 2 tcom n = 16

p=8 T(8)=4 tcalc= (1+3) tcalc + 3 tcom


………………
n
p=2k T(p)= ( -1 +log2 p) tcalc + (log2 p) tcom
p
tcalc= tempo di esecuzione di 1 addizione
tcom= tempo di 1 comunicazione
47
Overhead di comunicazione unitario

tcom = tempo di comunicazione di 1 dato


tcalc = tempo di esecuzione di 1 operazione fl.p.

definiamo
Overhead di Comunicazione Unitario
il rapporto:

tcom
oc 
tcalc

48
Esempio: calcolo della somma di n=16 numeri
supponiamo
tcom
T(1)=15tcalc oc  2
tcalc
Trascurando la comunicazione Considerando la comunicazione
p Tp SP Ep comunicazioni p Tp SP Ep

2 8tcalc 1.88 0.94 2 (8+2∙1)tcalc 1.50 0.75

4 5tcalc 3.00 0.75 4 (5+2∙2)tcalc 1.67 0.42

8 4tcalc 3.75 0.47 8 (4+2∙3)tcalc 1.88 0.24

n n
p=2k T(p)= ( -1 +log2 p) tcalc p=2k T(p)= ( -1 +log2 p) tcalc + (log2 p) tcom
p p

Considerando o meno il tempo di comunicazione le prestazioni dell’algoritmo


possono cambiare notevolmente!
49
Overhead di comunicazione
Tcom(p) = tempo di comunicazione dell’algoritmo eseguito su p processori

Tcalc(p) = tempo di calcolo dell’algoritmo eseguito su p processori

definiamo

Overhead di Comunicazione Totale


il rapporto:

Tcom ( p )
OC(p) 
Tcalc ( p )
Fornisce una misura del “peso” della comunicazione sul
tempo di esecuzione dell’ algoritmo
50
Esempio: calcolo della somma di n=16 numeri
tcom
Posto ad esempio: oc  2
tcalc

p Tcalc(p) Tcom(p) OCp

2 8tcalc 1tcom 0.25

4 5tcalc 2tcom 0.80

8 4tcalc 3tcom 1.50

Su 8 processori il tempo di comunicazione


pesa di più rispetto al tempo di esecuzione

Ricordate che nel calcolare le comunicazioni NON si considerano quelle


relative alla distribuzione iniziale dei dati!!! 51

Potrebbero piacerti anche