Principi Di Parallelismo
Upcoming SlideShare
Loading in...5
×
 

Principi Di Parallelismo

on

  • 1,390 views

 

Statistics

Views

Total Views
1,390
Views on SlideShare
1,390
Embed Views
0

Actions

Likes
0
Downloads
22
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Principi Di Parallelismo Principi Di Parallelismo Document Transcript

  • Principi di parallelismo Giovanni Erbacci - g.erbacci@cineca.it Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie 1°edizione 7 - 18 luglio 2008 2°edizione 8 – 19 settembre 2008 Principi di parallelismo Elaborazione Parallela Elaborazione sequenziale Pipelining Elaborazione parallela Giovanni Erbacci 1 53
  • Principi di parallelismo Parallel Computing Cosa si intende per parallel computing? – Parallel computing è una tecnica di programmazione che coinvolge l’utilizzo di più processori che operano insieme su un singolo problema – Il problema globale è suddiviso in parti, ciascuna delle quali viene eseguita da un diverso processore in parallelo. Programma Parallelo programma composto di tasks (processi) che comunicano tra loro per realizzare un obiettivo computazionale complessivo. Giovanni Erbacci 2 Principi di parallelismo Calcolatori Paralleli P M Giovanni Erbacci 3 54
  • Principi di parallelismo M M P P P P M P P P N P M M P P M M P P M P P Giovanni Erbacci 4 Principi di parallelismo 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) Giovanni Erbacci 5 55
  • Principi di parallelismo Paradigma Message Passing A B Giovanni Erbacci 6 Principi di parallelismo Paradigma Shared Memory … … Giovanni Erbacci 7 56
  • Principi di parallelismo Esempio: Sort di n numeri 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  #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]); } } } Giovanni Erbacci 8 Principi di parallelismo 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]) Giovanni Erbacci 9 57
  • Principi di parallelismo 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 10 Principi di parallelismo Complessità / 1 10000 (n **2 )/ 2 9000 (n **2 )/ 4 + n 8000 (n **2 )/ 8 + n n **2 7000 6000 5000 4000 3000 2000 1000 0 0 10 20 30 40 50 60 70 80 90 100 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. 2 n 2 n2 Nella versione modificata vengono eseguiti 2  +n= + n confronti. 2 4 Giovanni Erbacci 11 58
  • Principi di parallelismo Sort su k Processori P0 P1 P2 …….. Pk-1 Giovanni Erbacci 12 Principi di parallelismo 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 Giovanni Erbacci 13 59
  • Principi di parallelismo Indirizzamento Locale o Globale s ∑ ∑m Giovanni Erbacci 14 Principi di parallelismo Indirizzamento Globale P0 P1 P2 P3 Giovanni Erbacci 15 60
  • Principi di parallelismo Indirizzamento Locale P0 P1 P2 P3 ?? Giovanni Erbacci 16 Principi di parallelismo Filosofia Master Slave e SPMD main (int argc, char **argv) { if (process is to become a controller process) { Controller (/* Arguments /*); } else { PROGRAM Worker (/* Arguments /*); IF (process is to become a controller process) } THEN } CALL Controller (/* Arguments /*) ELSE CALL Worker (/* Arguments /*) ENDIF END Giovanni Erbacci 17 61
  • Principi di parallelismo 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 18 Principi di parallelismo Modelli di Parallelismo Parallelismo sui Dati Giovanni Erbacci 19 62
  • Principi di parallelismo Modelli di Parallelismo Giovanni Erbacci 20 Principi di parallelismo Gestione del contorno Parallelismo sui Dati Giovanni Erbacci 21 63
  • Principi di parallelismo Bilanciamento del carico t t Giovanni Erbacci 22 Principi di parallelismo Giovanni Erbacci 23 64
  • Principi di parallelismo 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 24 Principi di parallelismo Concetto di Processo Algoritmo procedimento logico che occorre seguire per risolvere un determinato problema Programma descrizione dell'algoritmo, mediante un opportuno formalismo (il linguaggio di programmazione) in modo da poterlo eseguire su di un particolare elaboratore Processo sequenziale sequenza di eventi (esecuzione di operazioni) cui dà luogo l'elaboratore quando opera sotto il controllo di un particolare programma entità astratta che identifica l'attività dell'elaboratore relativa all'esecuzione del programma Giovanni Erbacci 25 65
  • Principi di parallelismo Grafo di Precedenza INIZIO 2*4=8 3+6=9 4-2=2 9*2 = 18 8+18=26 FINE Giovanni Erbacci 26 Principi di parallelismo Processi concorrenti INIZIO 2 * 4 =8 3+6=9 4-2=2 9*2 = 18 8+18=26 FINE Giovanni Erbacci 27 66
  • Principi di parallelismo Processi indipendenti P1 Pi Pj Pn e 11 e i1 e j1 e n1 e 12 e i2 e j2 e n2 e 13 e i3 e j3 e n3 . . . . . .. . . . . . . . . . . . . . e 1m e im e jm e nm Giovanni Erbacci 28 Principi di parallelismo 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 tra loro completamente indipendenti, ma si influenzano a vicenda Spesso i processi durante la loro evoluzione cooperano e interagiscono scambiandosi informazioni Fra eventi di processi diversi esistono quindi dei vincoli di precedenza che 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 Giovanni Erbacci 29 67
  • Principi di parallelismo Processi Interagenti P1 Pi Pj Pn Un arco dal nodo eij al nodo ekl significa che il task eij deve e 11 e i1 e j1 e n1 esses completato prima che inizi il task ekl. Si dice che il task e 12 e i2 e j2 e n2 ekl dipende dal task eij I vincoli di precedenza sono e 13 e i3 e j3 e n3 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 e 1m e im e jm e nm grafo di precedenza e quindi dalla logica dell'algoritmo Giovanni Erbacci 30 Principi di parallelismo L’accesso concorrente in lettura a una stessa locazione di memoria non causa problemi. Tale operazione è ben definita: P1 P2 concettualmente ogni processore fa una copia del contenuto della locazione di memoria e la memorizza in un proprio registro. I problemi si possono manifestare quando si verifica un accesso concorrente in scrittura X := X + 1 cioè quando più processi scrivono simultaneamente sulla stessa locazione di memoria. Qual'è il valore finale di x ? Giovanni Erbacci 31 68
  • Principi di parallelismo 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 32 Principi di parallelismo Nella programmazione a memoria condivisa occorrono costrutti per accedere in modo mutualmente esclusivo a sezioni critiche. Processor 1: Processor 2: LOCK (X) LOCK (X) X=X+1 X=X+2 UNLOCK (X) UNLOCK (X) Giovanni Erbacci 33 69
  • Principi di parallelismo Deadlock Situazione in cui uno o pi processi rimangono indefinitamente bloccati perch non possono verificarsi le condizioni necessarie per il loro proseguimento 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 ) receive (x2, P0) ……. ……. send (x2, P1) send(x1,P0) Giovanni Erbacci 34 Principi di parallelismo Costrutti per dichiarare entità parallele: moduli di programma che devono 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 deve iniziare l'esecuzione del modulo di programma che corrisponde a quel processo) 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 fra processi che competono (per il modello a memoria condivisa) Giovanni Erbacci 35 70
  • Principi di parallelismo 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 da svolgere • 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 Giovanni Erbacci 36 71
  • 72