Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
a.a. 2019-2020
Somma di N numeri
Su architetture MIMD
2
Dalla prossima settimana faremo lezione dalle
14:00 alle 15:30 sempre il mercoledì e il giovedì
a0+a1+…+aN-1
su un calcolatore parallelo
tipo MIMD
4
MIMD
Calcolatori MIMD a Calcolatori MIMD a
memoria condivisa memoria distribuita
(shared-memory) (distributed-memory)
CPU
CPU CPU
CPU CPU
CPU MEM MEM MEM
11 22 N
N
MEMORIA
MEMORIA
5
Somma di N numeri
Su un calcolatore monoprocessore la somma è
calcolata eseguendo le N-1 addizioni una per volta
secondo un ordine prestabilito
sumtot := a0
sumtot := sumtot + a1
sumtot := sumtot + a2
6
Somma di N numeri
Su un calcolatore monoprocessore la somma è
calcolata eseguendo le N-1 addizioni una per volta
secondo un ordine prestabilito
begin
sumtot:= a0;
for i=1 to N-1 do
sumtot:= sumtot+ai ;
endfor
end
Qual è
l’ALGORITMO PARALLELO?
7
CALCOLO PARALLELO
Decomporre un problema di dimensione N
in P sottoproblemi di dimensione N/P
e risolverli contemporaneamente
su più calcolatori
N/P N/P
N
N/P N/P
8
Esempio: N=16, p=4
a0 +…+ a3 + a4 +…+ a7 + a8 +…+ a11 + ..a15
s0 s1 s2 s3
s0+s1+s2+s3
9
PROBLEMA:
Calcolo della somma di N
numeri
a0+a1+…+aN-1
su un calcolatore
parallelo MEM MEM MEM
s0 s1 s2 s3
Somme parziali
11
IDEA
Le somme parziali devono poi essere
combinate in modo opportuno per
ottenere la somma totale
Somma totale
s0 s1 s2 s3
s0 s1 s2 s3
Somme parziali
12
Somma - MIMD Distributed Memory
a0 a4 a8 a12
a1 a5 a9 a13 Memoria
a2 a6 a10 a14 locale
a3 a7 a11 a15
a0 a4 a8 a12
a1 a5 a9 a13 Memoria
a2 a6 a10 a14 locale
a3 a7 a11 a15
a0 a4 a8 a12
a1 a5 a9 a13 Memoria
Somme
a2 a6 a10 a14
parziali a3 a7 a11 a15
locale
s0 s1 s2 s3
I passo
P1 spedisce s1 a P0
sumtot=s0 + s1
II passo
P2 spedisce s1 a P0
sumtot=sumtot + s2
III passo
P3 spedisce s3 a P0
sumtot=sumtot + s3
16
I strategia
Ogni processore
•calcola la propria somma parziale
Ad ogni passo
• ciascun processore invia tale valore ad un unico
processore prestabilito
17
Calcolo
II strategia p=4 somme
P0 P1 P2 P3 parziali
s0 s1 s2 s3
I passo
s01 s23
II passo
s0123
Il numero di “passi” è 2
18
II strategia
Ogni processore
•calcola la propria somma parziale.
Ad ogni passo,
• coppie distinte di processori comunicano contemporaneamente
• in ogni coppia, un processore invia all’altro la propria
somma parziale che provvede all’aggiornamento della somma
Operazioni
Operazioni concorrenti
quasi
concorrenti
19
III strategia p=4 Calcolo
somme
P0 P1 P2 P3
parziali
s0 s1 s2 s3
I passo
II passo
Il numero di “passi” è 2
20
III strategia
Ogni processore
•calcola la propria somma parziale .
Ad ogni passo
•coppie distinte di processori
comunicano contemporaneamente:
•in ogni coppia i processori
si scambiano le proprie somme parziali
Operazioni concorrenti
21
I, II, III strategia
Ogni processore calcola la sua somma parziale
ed invia tale valore agli altri processori in
modo da ottenere la somma totale
PARALLELISMO
COMUNICAZIONE
TRA I PROCESSORI
22
Algoritmo per la somma di N=kp numeri su
MIMD-Distribuited Memory
I Strategia
begin
forall Pi , 0 i p-1 do
sumi := 0
h := i * (n/p)
for j = h to h+(n/p)-1 do
sumi := sumi + aj
endfor
endforall
if P0 then
sumtot:= sum0
for k = 1 to p-1 do
recv(sumk , Pk )
sumtot:=sumtot+sumk
endfor
else if Pi then
send(sumi, P0)
endif
endif
end 23
Uno strumento software per lo sviluppo di
algoritmi in ambiente di calcolo
MIMD-Distribuited Memory
http://aws.amazon.com/
24
PROBLEMA
a0+a1+…+aN-1
CPU
CPU CPU
CPU CPU
CPU
su un calcolatore 11 22 N
N
parallelo
tipo MIMD
A MEMORIA MEMORIA
MEMORIA
CONDIVISA
25
IDEA DI ALGORITMO PARALLELO
Somma totale
s0 s1 s2 s3
s0 s1 s2 s3
Somme parziali
26
IDEA DI ALGORITMO PARALLELO
Somma totale
s0 s1 s2 s3
s0 s1 s2 s3
Somme parziali
27
Shared vs Distribuited
Calcolatori MIMD a Calcolatori MIMD a
memoria condivisa memoria distribuita
(shared-memory) (distributed-memory)
Necessità di
Possibilità di organizzare le
CPU
CPU CPU
utilizzare
CPU i dati CPU
CPU MEM comunicazioni tra i MEM
MEM
11 22 distribuirli
senza N
N processi
28
Schema Calcolatori
MIMD a memoria condivisa
(shared-memory)
CPU
CPU CPU
CPU CPU
CPU
1
1 22 N
N
MEMORIA
MEMORIA
29
Shared Memory: Multicore
MEMORIA
CHIP
CORE CORE CORE
ad un parallelismo
distribuited-memory?
30
Somma - MIMD Shared Memory
Esempio: N=16, p=4
a0 a1 a2 a3
a4 a5 a6 a7
a8 a9 a10 a11 Memoria
a12 a13 a14 a15 globale
C0 C1 C2 C3
13
Somma - MIMD Shared Memory
I core possono accedere
simultaneamente alla memoria
a0 a1 a2 a3
a4 a5 a6 a7
Lettura Memoria
a8 a9 a10 a11
a12 a13 a14 a15 globale
C0 C1 C2 C3
32
Somma - MIMD Shared Memory
Esempio: N=16, p=4
a0 a1 a2 a3
Calcolo somme a4 a5 a6 a7
parziali a8 a9 a10 a11 Memoria
a12 a13 a14 a15 globale
C0 C1 C2 C3
s0=a0+a4+a8+a12 s1=a1+a5+a9+a13 s2=a2+a6+a10+a14 s3=a3+a7+a11+a15
33
Somma - MIMD Shared Memory
I core possono accedere
simultaneamente alla memoria globale
Esempio: N=16, p=4 su dati differenti
Scrittura a0 a1 a2 a3
a4 a5 a6 a7
a8 a9 a10 a11 Memoria
a12 a13 a14 a15 globale
s0 s1 s2 s3
C0 C1 C2 C3
34
Somma - MIMD Shared Memory
Come calcolare
la somma totale?
35
Somma - MIMD Shared Memory
36
Esempio: Somma
Sincronizzazione
degli accessi in memoria
37
Esempio: Somma 1strategia
Esempio: N=16, p=4
a0 a1 a2 a3
a4 a5 a6 a7
a8 a9 a10 a11 Memoria
a12 a13 a14 a15 globale
s0 s1 s2 s3
sumtot
sumtot=sumtot+s0
Calcolo
CORE CORE CORE CORE
Scrittura C0 C1 C2 C3
38
Esempio: Somma 1strategia
sumtot
sumtot=sumtot+s1
Calcolo
CORE CORE CORE CORE
Scrittura
C0 C1 C2 C3
39
Esempio: Somma 1strategia
sumtot=sumtot+s2
Calcolo
CORE CORE CORE CORE
Scrittura
C0 C1 C2 C3
40
Esempio: Somma 1strategia
sumtot=sumtot+s3
Calcolo
CORE CORE CORE CORE
Scrittura C0 C1 C2 C3
41
Esempio: Somma 1strategia
C0 C1 C2 C3
42
I strategia (MIMD-SM)
Ogni core
•calcola la propria somma parziale
Ad ogni passo
• ciascun core aggiunge la propria somma parziale ad
ad un unico valore prestabilito
s01 s23
s23 = s2 + s3
s01 = s0 + s1
Calcolo CORE CORE CORE CORE
Scrittura C0 C1 C2 C3
44
Somma (II strategia MIMD-SM)
Esempio: N=16, p=4
a0 a1 a2 a3
a4 a5 a6 a7
a8 a9 a10 a11 Memoria
a12 a13 a14 a15 globale
s0 s1 s2 s3
Calcolo
Scrittura
C0 C1 C2 C3
45
II strategia (MIMD-SM)
Ogni core
•calcola la propria somma parziale.
Ad ogni passo,
• la metà dei core (rispetto al passo precedente) calcola un
contributo della somma parziale.
47
Esistono diversi strumenti per lo
sviluppo di software in ambiente di
calcolo MIMD-Shared Memory
OpenMp, Pthreads,
Windows threads…
48
Fine Lezione
49