Principi Di Parallelismo

20
1°edizione 7 - 18 luglio 2008 2°edizione 8 – 19 settembre 2008 Principi di parallelismo Giovanni Erbacci - [email protected] Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie Giovanni Erbacci Principi di parallelismo 1 Elaborazione Parallela Elaborazione sequenziale Pipelining Elaborazione parallela 53

Transcript of Principi Di Parallelismo

Page 1: Principi Di Parallelismo

1°edizione 7 - 18 luglio 2008 2°edizione 8 – 19 settembre 2008

Principi di parallelismo

Giovanni Erbacci - [email protected]

Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie

Giovanni Erbacci

Principi di parallelismo

1

Elaborazione

ParallelaElaborazione sequenziale

Pipelining

Elaborazione parallela

53

Page 2: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

2

Parallel Computing

Cosa si intende per parallel computing?

– Parallel computing è una tecnica di programmazione che coinvolge l’utilizzodi più processori che operano insieme su un singolo problema

– Il problema globale è suddiviso in parti, ciascuna delle quali viene eseguitada un diverso processore in parallelo.

Programma Parallelo

programma composto di tasks (processi) che comunicano tra loro per realizzare un obiettivo computazionale complessivo.

Giovanni Erbacci

Principi di parallelismo

3

Calcolatori Paralleli

P M

54

Page 3: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

4

P

M

P

MP

M

P

M

P

M

P

M

N

MP P

PP

M

P P

PP

Giovanni Erbacci

Principi di parallelismo

5

Un modello di programmazione è una collezione di astrazioni di programma che

fornisce una visione semplificata e trasparente del sistema hardware e software

nella sua globalità.

I processori di un calcolatore parallelo comunicano tra loro secondo 2 schemi di

comunicazione:

– Shared memory: I processori comunicano accedendo a variabili condivise

– Message-passing: I processori comunicano scambiandosi messaggi

Questi schemi identificano altrettanti paradigmi di programmazione parallela:

- paradigma a memoria condivisa o ad ambiente globale (Shared memoy)

i processi interagiscono esclusivamente operando su risorse comuni

- paradigma a memoria locale o ad ambiente locale (Messsage passing)

non esistono risorse comuni, i processi gestiscono solo informazioni locali e l'unica

modalità di interazione è costituita dallo scambio di messaggi (message passing)

55

Page 4: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

6

Paradigma Message Passing

A B

Giovanni Erbacci

Principi di parallelismo

7

Paradigma Shared Memory

……

56

Page 5: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

8

Esempio: Sort di n numeri

#define SWAP(a,b) { int t; t=a; a=b; b=t; }

void SORT( int a[], int n )

{

int i, j;

for(i=0;i<n;i++)

{

for(j=1;j<(n-i);j++)

{

if( a[j-1]>a[j] ) SWAP(a[j-1],a[j]);}

} }

Input: una sequenza di n numeri <a1, a2, a3, … an>

Output: una permutazione <a’1, a’2, a’3, … a’n> degli elementi,

tale che a’1!!!! a’2, !!!! a’3!!!! …!!!! a’n

Giovanni Erbacci

Principi di parallelismo

9

Sort di n numeri / 1

Idea: - si potrebbe dividere il vettore da ordinare in due vettori di n/2

elementi ciascuno,

- ordiare i due vettori separatamente

- richiamare una procedura di merge per ricomporre i due

vettori ordinati precedentemente

SORT(a[0 : n/2-1])

SORT(a[n/2 : n-1])

MERGE(a[0 : n/2-1], a[n/2 : n-1])

57

Page 6: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

10

Complessità

L’ algoritmo di sort richiede n-1 passi:

ogni passo pone un elemento nella sua corretta posizione

il passo imo fa n-I confronti e scambi.

Complessità: O(n2) .

L’ algoritmo di merge opera la fusione facendo n confronti:

Complessità: O(n) .

Giovanni Erbacci

Principi di parallelismo

11

Complessità / 1

0

1000

2000

3000

4000

5000

6000

7000

8000

9000

10000

0 10 20 30 40 50 60 70 80 90 100

(n**2 )/ 2

(n**2 )/ 4 + n

(n**2 )/ 8 + n

n**2

La procedura di sort nella versione modificata viene richiamata 2 volte e

ogni volta ordina n/2 elementi mentre la procedura merge è richiamata

una sola volta ed esegue n confronti.

Nella versione modificata vengono eseguiti 22

2 4

2

2

" + = +

n

nn

n confronti.

58

Page 7: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

12

Sort su k Processori

P0 P1 P2 …….. Pk-1

Giovanni Erbacci

Principi di parallelismo

13

Problema

Lettura dati da ordinare

SORT(a[0 : n/2-1])

SORT(a[n/2 : n-1])

MERGE(a[0 : n/2-1], a[n/2 : n-1])

Scrittura del vettore ordinato

59

Page 8: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

14

Indirizzamento Locale o Globale

s ∑ ∑ m

Giovanni Erbacci

Principi di parallelismo

15

Indirizzamento Globale

P0

P3

P2

P1

60

Page 9: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

16

Indirizzamento Locale

P0

P3

P2

P1

??

Giovanni Erbacci

Principi di parallelismo

17

Filosofia Master Slave e SPMD

main (int argc, char **argv){

if (process is to become a controller process){

Controller (/* Arguments /*);}else{

Worker (/* Arguments /*);}

}

PROGRAM

IF (process is to become a controller process)

THEN

CALL Controller (/* Arguments /*)

ELSE

CALL Worker (/* Arguments /*)

ENDIF

END

61

Page 10: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

18

Paradigmi di Programmazione Paralela

Linguaggi Procedurali sequenziali (Fortran 90,C,C++)

- Parallelism is not visible to the programmer

- Compiler responsible for parallelism

- Easy to do

- Small improvements in performance

Esplicito– Parallelism is visible to the programmer

– Difficult to do (right)

– Large improvements in performance

Giovanni Erbacci

Principi di parallelismo

19

Modelli di Parallelismo

Parallelismo sui Dati

62

Page 11: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

20

Modelli di Parallelismo

Giovanni Erbacci

Principi di parallelismo

21

Gestione del contorno

Parallelismo sui Dati

63

Page 12: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

22

Bilanciamento del carico

t

t

Giovanni Erbacci

Principi di parallelismo

23

64

Page 13: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

24

Functional or Data Parallelism?

Partition by task (functional parallelism)

o each process performs a different "function"

o identify functions, then data requirements

o commonly programmed with message-passing

Partition by data (data parallelism)

o each process does the same work on a unique piece of data

o data placement is critical

o more scalable than functional parallelism

Giovanni Erbacci

Principi di parallelismo

25

Concetto di Processo

Algoritmo

procedimento logico che occorre seguire per risolvere un determinatoproblema

Programma

descrizione dell'algoritmo, mediante un opportuno formalismo (illinguaggio di programmazione) in modo da poterlo eseguire su di un particolare elaboratore

Processo sequenziale

sequenza di eventi (esecuzione di operazioni) cui dà luogo l'elaboratorequando opera sotto il controllo di un particolare programma

entità astratta che identifica l'attività dell'elaboratore relativa all'esecuzione del programma

65

Page 14: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

26

Grafo di Precedenza

INIZIO

2 * 4 = 8

3 + 6 = 9

4 - 2 = 2

9*2 = 18

8+18=26

FINE

Giovanni Erbacci

Principi di parallelismo

27

Processi concorrenti

INIZIO

2 * 4 =8 3 + 6 = 9 4 - 2 = 2

9*2 = 18

8+18=26

FINE

66

Page 15: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

28

Processi indipendenti

e11

e12

e13

e1m

.

.

.

P1

ei1

ei2

e i3

eim

.

.

.

Pi

en1

en2

en3

enm

.

.

.

Pn

ej1

ej2

ej3

ejm

.

.

.

Pj

.. .... ..

Giovanni Erbacci

Principi di parallelismo

29

Processi interagenti

Se i processi sono indipendenti non esiste alcuna relazione tra un generico evento eik del processo Pi ed un evento ejl del processo Pj

(Algoritmi imbarazzantemente paralleli)

Le attivit rappresentate dai processi comunque non sono sempre traloro completamente indipendenti, ma si influenzano a vicenda

Spesso i processi durante la loro evoluzione cooperano e interagisconoscambiandosi informazioni

Fra eventi di processi diversi esistono quindi dei vincoli di precedenzache occorre rispettare

Nel grafo un vincolo di precedenza viene rappresentato attraverso un arco che collega un nodo di un processo con un nodo di un processo diverso

67

Page 16: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

30

Processi Interagenti

Un arco dal nodo eij al nodo ekl

significa che il task eij deve

esses completato prima che

inizi il task ekl. Si dice che il task

ekl dipende dal task eij

I vincoli di precedenza sono detti vincoli di sincronizzazione

poich indicano che i processi, quando arrivano ad un punto di interazione devono

sincronizzarsi cio ordinare i loro eventi come specificato dal grafo di precedenza e quindi

dalla logica dell'algoritmo

e11

e12

e13

e1m

.

.

.

P1

ei1

ei2

e i3

eim

.

.

.

Pi

en1

en2

en3

enm

.

.

.

Pn

ej1

ej2

ej3

ejm

.

.

.

Pj

.. .... ..

Giovanni Erbacci

Principi di parallelismo

31

L’accesso concorrente in lettura a una stessalocazione di memoria non causa problemi. Tale operazione è ben definita: concettualmente ogni processore fa una copiadel contenuto della locazione di memoria e la memorizza in un proprio registro.

I problemi si possono manifestare quando siverifica un accesso concorrente in scritturacioè quando più processi scrivonosimultaneamente sulla stessa locazione dimemoria.

P 1 P 2

X := X + 1

Qu

al'è

ilva

lore

fin

ale

dix ?

68

Page 17: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

32

Il non-determinismo è causato dalle race conditions.

Una race condition avviene quando due istruzioni in tasks concorrenti

accedono la stessa locazione di memoria, almeno una delle quali in

scrittura. Non c’è un un ordine di esecuzione garantito tra gli accessi.

Il problema del non determinismo può essere risolto sincronizzando

l’utilizzo dei dati condivisi.

– Infatti se x=x+1 e x=x+2 sono mutuamente esclusivi allora il valore finale della variabile x sarà sempre 3.

Le porzini di un programma paralello che richiedono sincronizzazione per

evitare il non determinismo sono chiamate sezioni critiche.

Giovanni Erbacci

Principi di parallelismo

33

Nella programmazione a memoria condivisa occorrono

costrutti per accedere in modo mutualmente esclusivo a

sezioni critiche.

Processor 1:

LOCK (X)

X = X + 1

UNLOCK (X)

Processor 2:

LOCK (X)

X = X + 2

UNLOCK (X)

69

Page 18: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

34

Deadlock

Situazione in cui uno o pi processi rimangono indefinitamente bloccatiperch non possono verificarsi le condizioni necessarie per il loroproseguimento

Un gruppo di processi entra in deadlock quando tutti i processi del gruppo attendono un evento (acquisizione o rilascio di risorse) che può essere causato solo da un altro dei processi in attesa

Processo P0 Processo P1

receive (x1, P1 )

…….

send (x2, P1)

receive (x2, P0)

…….

send(x1,P0)

Giovanni Erbacci

Principi di parallelismo

35

Costrutti per dichiarare entità parallele: moduli di programma chedevono essere eseguiti come processi sequenziali distinti

più processi possono svolgere lo stesso modulo di programma, operando su dati differenti

Costrutti per esprimere la concorrenza

strumenti per specificare l'attivazione di un processo (quando deveiniziare l'esecuzione del modulo di programma che corrisponde a quelprocesso)

strumenti per specificare la terminazione di un processo

Costrutti per specificere le interazioni dinamiche fra processi

- costrutti linguistici per specificare la sincronizzazione e la comunicazione fra i processi che devono cooperare

- costrutti linguistici per garantire la mutua esclusione fraprocessi che competono (per il modello a memoria condivisa)

70

Page 19: Principi Di Parallelismo

Giovanni Erbacci

Principi di parallelismo

36

Obiettivi (ideali) Assicurare lo speed-up e la Scalabilità:

• Assegnare a ciascun processo una quantità unica di lavoro

• Assegnare a ogni processo i dati necessari per il lavoro dasvolgere

• Minimizzare la replica dei dati e della computazione

• Minimizzare la comunicazione tra i processi

• Bilanciare il work load

Tenere ben in mente che:

- Per un problema esistono diverse soluzioni parallele

- La miglior soluzione parallela non sempre deriva dalla miglior

soluzione scalare

71

Page 20: Principi Di Parallelismo

72