1° edizione 3 - 14 luglio 2006 2° edizione 4 - 15 settembre 2006 Principi di Parallelismo Giovanni Erbacci - Gruppo Supercalcolo -

Slides:



Advertisements
Presentazioni simili
Meccanismi di IPC Problemi classici di IPC
Advertisements

Scomposizione funzionale
Procedure e funzioni A. Ferrari.
Linguaggi di programmazione
Algoritmi e Programmazione
1 Processi e Thread Meccanismi di IPC, Inter Process Communication (1)
1 Processi e Thread Meccanismi di IPC (1). 2 Comunicazioni fra processi/thread Processi/thread eseguiti concorrentemente hanno bisogno di interagire per.
Time Sharing Il termine “Time Sharing” proviene dall'inglese e significa letteralmente “partizione di tempo”. Questa è una tecnica sviluppatasi negli.
Sincronizzazione fra processi
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09
Algoritmi Paralleli e Distribuiti a.a. 2008/09 Lezione del 10/03/2009 Prof. ssa ROSSELLA PETRESCHI a cura del Dott. SAVERIO CAMINITI.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Algoritmi e Strutture Dati
Capitolo 4 Ordinamento Algoritmi e Strutture Dati.
Corso di Informatica (Programmazione)
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Gestione dei processi Un sistema operativo multitasking è in grado di gestire più processi Un processo corrisponde ad un programma in esecuzione. Un programma.
1 2. Analisi degli Algoritmi. 2 Algoritmi e strutture dati - Definizioni Struttura dati: organizzazione sistematica dei dati e del loro accesso Algoritmo:
Il linguaggio Fortran 90: 4. Array: Vettori e Matrici
Introduzione alla programmazione lll
Struttura dei sistemi operativi (panoramica)
Il Linguaggio Macchina
Software di base Il sistema operativo è un insieme di programmi che opera sul livello macchina e offre funzionalità di alto livello Es.organizzazione dei.
Sincronizzazione fra thread
Sistemi Operativi GESTIONE DEI PROCESSI.
Estensioni allarchitettura di Von Neumann Vito Perrone Corso di Informatica A per Gestionali.
Il sistema operativo Vito Perrone
Strutture di controllo in C -- Flow Chart --
Reti di Calcolatori Reti di Calcolatori2 Il modello Client/Server I Sistemi di Rete Dal punto di vista del programmatore.
Reti di Calcolatori L-S Un Sistema Decentrato di Allocazione del Carico per Applicazioni di Calcolo Distribuito Mauro Bampo.
Elementi di Informatica
INTRODUZIONE l sistema operativo è il primo software che lutente utilizza quando accende il computer; 1)Viene caricato nella memoria RAM con loperazione.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
PROBLEMA ALGORITMO PROGRAMMA LINGUAGGI di PROGRAMMAZIONE
Architettura del calcolatore
Il modello di riferimento OSI
Dati e DBMS DBMS relazionali SQL Progettazione di una base di dati Programma del Corso.
TURBOPASCAL …. ripassiamo - prof. V. Riboldi -.
Definizione di un algoritmo
- prof. V. Riboldi - SOTTOPROGRAMMI IN TPASCAL METODO TOP DOWN.
Il linguaggio Fortran 90: 3. Procedure e Funzioni
I processi.
La ricorsione.
GLI ALGORITMI VISIBILE SUL BLOG INFORMATICA ANNO SCOLASTICO 2013 / 2014 GABRIELE SCARICA 2°T.
Informatica Lezione 5 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Paola Disisto, Erika Griffini, Yris Noriega.  Insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce.
III corso avanzato di calcolo e grid computing Catania 29 settembre Architettura e modelli di programmazione parallela Giovanni Erbacci.
Processi e Thread Processi Thread
1 Ordinamento (Sorting) INPUT: Sequenza di n numeri OUTPUT: Permutazione π = tale che a 1 ’  a 2 ’  … …  a n ’ Continuiamo a discutere il problema dell’ordinamento:
Sistema operativo Il Sistema Operativo gestisce le risorse hw e sw del sistema di elaborazione Facilita l'interazione tra utente e sistema Esistono diversi.
Algoritmi.
L’esecuzione dei programmi
Sistemi operativi di rete Ing. A. Stile – Ing. L. Marchesano – 1/18.
1 Ordinamento (Sorting) Input: Sequenza di n numeri Output: Permutazione π = tale che: a i 1  a i 2  ……  a i n Continuiamo a discutere il problema dell’ordinamento:
1 Risorse e Stallo 2 Risorse (1) Esempi di risorse –stampanti –nastri –tabelle I processi devono accedere alle risorse in un ordine ragionevole Supponiamo.
Automi temporizzati.
Informatica e Informatica di Base
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
INTRODUZIONE AI SISTEMI OPERATIVI. Introduzione Il software può essere diviso un due grandi classi: Il software può essere diviso un due grandi classi:
© 2016 Giorgio Porcu - Aggiornamennto 18/03/2016 I STITUTO T ECNICO SECONDO BIENNIO T ECNOLOGIE E P ROGETTAZIONE Il Sistema Operativo Concorrenza e Grafi.
Hardware Struttura fisica (architettura) del calcolatore formata da parti meccaniche, elettriche, elettroniche.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Simulazione di lettura e scrittura concorrente Tecnica dell’accelerated cascading Lezione.
Algoritmi Avanzati a.a.2010/2011 Prof.ssa Rossella Petreschi Complessità e Trasportabilità Lezione n°3.
Il Sistema Operativo Processi e Risorse
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Algoritmi distribuiti Lezione n°9.
Algoritmi Avanzati a.a.2014/2015 Prof.ssa Rossella Petreschi Lezione n°9.
Algoritmi Avanzati a.a.2011/2012 Prof.ssa Rossella Petreschi Interconnessione tramite reti Lezione n°6.
Transcript della presentazione:

1° edizione luglio ° edizione settembre 2006 Principi di Parallelismo Giovanni Erbacci - Gruppo Supercalcolo - Settore Sistemi ad Alte Prestazioni

Giovanni Erbacci Principi di Parallelismo Elaborazione Parallela Un esempio dalla vita quotidiana: la costruzione di un muro

Giovanni Erbacci 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. L'esecuzione di processi di calcolo non sequenziali richiede: - un calcolatore non sequenziale (in grado di eseguire un numero arbitrario di operazioni contemporaneamente) - un linguaggio di programmazione che consenta di descrivere formalmente algoritmi non sequenziali

Giovanni Erbacci Principi di Parallelismo Calcolatori Paralleli Un calcolatore parallelo è un sistema costituito da una collezione di processori in grado di comunicare e cooperare per risolvere grandi problemi computazionali in modo veloce. Progettati anche per evitare il von Neumann bottleneck: “The instruction stream is inherently sequential – there is one processing site and all instructions, operands and results must flow through a bottleneck between processors and memory.” Tecniche per risolvere il von Neumann bottleneck: - Unità funzionali multiple - Parallelismo e pipelining interno alla CPU - Operazioni di I/O e della CPU sovrapposte - Memoria gerarchica PM

Giovanni Erbacci Principi di Parallelismo Calcolatori Paralleli / 1 P M P M P M P M P M P M N Sstema a Memoria Distribuita Sistema a Memoria Condivisa M PP PP Network M PP PP Nodo 1 Nodo 5Nodo 6 Nodo 4 Nodo 2Nodo 3 Sstema ibrido

Giovanni Erbacci Principi di Parallelismo Paradigmi di Programmazione Parallela 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 Principi di Parallelismo Paradigma Message Passing Nel paradigma message passing i processi comunicano scambiandosi messaggi Primitive message passing di base: –Send (parameter list) –Receive (parameter list) AB

Giovanni Erbacci Principi di Parallelismo Paradigma Shared Memory Nel paradigma shared memory i processi comunicano accedendo a variabili e strutture dati condivise. Primitive shared memory di base: –Read da una variabile condivisa –Write su una variabile condivisa Sistema di Interconnessione … Processori Moduli di Memoria …

Giovanni Erbacci Principi di Parallelismo Esempio: Sort di n numeri /* Bubble sort for integers */ #define SWAP(a,b) { int t; t=a; a=b; b=t; } void SORT( int a[], int n ) /* Pre-condition: a contains n items to be sorted */ { int i, j; /* Make n passes through the array */ for(i=0;i<n;i++) { /* From the first element to the end of the unsorted section */ for(j=1;j<(n-i);j++) { /* If adjacent items are out of order, swap them */ if( a[j-1]>a[j] ) SWAP(a[j-1],a[j]); } Input: una sequenza di n numeri Output: una permutazione degli elementi, tale che a’ 1  a’ 2,  a’ 3  …  a’ n Bubble Sort

Giovanni Erbacci 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 Principi di Parallelismo Complessità L’ algoritmo di sort richiede n-1 passi: ogni passo pone un elemento nella sua corretta posizione il passo i mo fa n-I confronti e scambi. Complessità: O(n 2 ). L’ algoritmo di merge opera la fusione facendo n confronti: Complessità: O(n).

Giovanni Erbacci Principi di Parallelismo Complessità / 1 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 confronti.

Giovanni Erbacci Principi di Parallelismo Sort su k Processori P0P0 P1P1 P2P2 ……..P k-1 Step 0 Step 2 Step 1 Step log 2 K

Giovanni Erbacci 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 Nella programmazione parallela occorre affrontare problematiche che non si presentano con la programmazione sequenziale. Occorrono decidere: · quali parti di codice costituiscono le sezioni parallele · quando iniziare l’esecuzione delle diverse sezioni parallele · quando terminare l’esecuzione delle sezioni parallele · quando e come effettuare la comunicazione fra le entità parallele. quando effettuare la sincronizzazione fra le entità parallele Poi occorrono gli strumenti per implementare questi aspetti

Giovanni Erbacci Principi di Parallelismo Indirizzamento Locale o Globale Con il modello di programmazione Shared Memory, si fa affidamento sull’indirizzamento globale della memoria Con il modello a memoria distribuita è possibile solo la gestione locale della memoria, e quindi si può gestire solo uno spazio di indirizzamento locale. Esempio: calcolare la somma degli elementi di una matrice M[n, n] s =  i  j m ij

Giovanni Erbacci Principi di Parallelismo Indirizzamento Globale Si alloca la matrice M[n, n] nella memoria comune e tutti i processori che intervengono nella computazione possono indirizzare tutti gli elementi di M. P0P0 P3P3 P2P2 P1P1 M s3s3 s2s2 s1s1 s0s0 S Memoria M(i,j) i = 1, n, j = 1,m Temp = M(857,760) + M(321, 251)

Giovanni Erbacci Principi di Parallelismo Indirizzamento Locale Ogni processore vede solo la sua memoria locale e vi alloca una fetta della matrice M[n, n] P0P0 P3P3 P2P2 P1P1 s1s1 s0s0 M(i,j) i = 1, n/k, j = 1,m s3s3 s2s2 ?? S Temp = M(857,760) + M(321, 251)   Temp = M(107,760)P 3 + M(71, 251) P 1 (N = 1000, 4 proc)

Giovanni Erbacci Principi di Parallelismo Filosofia Master Slave e SPMD Master / Slave Un singolo processo (il Master) controlla il lavoro svolto dagli altri processi (slaves, Workers). Questi possono eseguire lo stesso programma o programmi differenti Single Program Multiple Data Ogni processore esegue la stessa copia del programma il flusso di esecuzione su ogni processore varia in funzione dell’ambiente locale (dati, numero di processore ecc.) Si può emulare la filosofia master /slave tipica di alcuni ambienti message passing. C main (int argc, char **argv) { if (process is to become a controller process) { Controller (/* Arguments /*); } else { Worker (/* Arguments /*); } Fortran PROGRAM IF (process is to become a controller process) THEN CALL Controller (/* Arguments /*) ELSE CALL Worker (/* Arguments /*) ENDIF END

Giovanni Erbacci Principi di Parallelismo Paradigmi di Programmazione Paralela - Paradigma a memoria condivisa (Open-MP) - Paradigma Message Passing (PVM, MPI, …) - Paradigma Data Passing (Shmem, One Side Communication) - Paradigma Data Parallel (HPF, HPF-Craft) Linguaggi Procedurali sequenziali (Fortran 90,C,C++) + API (Direttive al Compilatore) Si tende a favorire un Parallelismo implicito - Parallelism is not visible to the programmer - Compiler responsible for parallelism - Easy to do - Small improvements in performance Linguaggi Procedurali sequenziali (Fortran 90, C, C++) + API (Chiamate a Librerie) Parallelismo Esplicito –Parallelism is visible to the programmer –Difficult to do (right) –Large improvements in performance Schema SPMD oppure Fork/Join

Giovanni Erbacci Principi di Parallelismo Modelli di Parallelismo Parallelismo sui Dati Partizionamento dei dati (data parallelism) Ogni processo esegue lo stesso lavoro su un sottoinsieme dei dati - Il poizionamento dei dati (“data placement”) è critico - Più scalabile del parallelismo funczionale - Programmazione in message-passing o HPF - Problema della gestione del contorno - Bilanciamento del carico (in alcuni casi)

Giovanni Erbacci Principi di Parallelismo Modelli di Parallelismo Parallelismo sul Controllo (Parallelismo Funzionale) vengono distribuite le funzioni Partizionamento by task Ogni processo esegue una diversa "funzione“: Identificare le funzioni, e poi i data requirements Bilanciamento del carico

Giovanni Erbacci Principi di Parallelismo Gestione del contorno Parallelismo sui Dati

Giovanni Erbacci Principi di Parallelismo Bilanciamento del carico t P1P1 P0P0 P2P2 t P1P1 P2P2 P0P0 P4P4 P3P3

Giovanni Erbacci Principi di Parallelismo Bilanciamento del carico / 1 t P 0 P 1 P 2 P 3 P 4 P 5 P 6 P 7 t P 0 P 1 P 2 P 3 P 4 P 5 P 6 P 7 P 8 P 9 P 10 P 11 P 12 P 13 P 14 P 15

Giovanni Erbacci Principi di Parallelismo Parallelismo Funzionale o Parallelismo sui dati 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 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 Principi di Parallelismo Grafo di Precedenza Consente di rappresentare in maniera grafica un processo i nodi rappresentano i singoli eventi (lavoro da eseguire) e gli archi identificano le precedenze temporali fra tali eventi è un grafo ad ordinamento totale (ogni nodo ha esattamente un predecessore ed un successore, eccetto il nodo iniziale e quello finale): il processo è strettamente sequenziale Esempio: (2* 4) + (3 + 6) * (4 - 2)

Giovanni Erbacci Principi di Parallelismo Processi concorrenti In alcuni casi l'ordinamento totale è implicito nel problema da risolvere, molto più spesso è un'imposizione che deriva dalla natura sequenziale del calcolatore. Molte applicazioni reali possono essere rappresentate mediante processi non sequenziali fra i cui eventi non esiste un ordinamento totale ma solo parziale. Esempio: (2 * 4) + (3 + 6) * (4 - 2)

Giovanni Erbacci Principi di Parallelismo Processi indipendenti Un linguaggio di programmazione parallela deve consentire la descrizione delle attività concorrenti tramite moduli sequenziali che possono esere eseguiti in parallelo (processi sequenziali) Occorre quindi scomporre l'elaborazione di un algoritmo parallelo in un insieme di processi sequenziali eseguiti concorrentemente da "altrettanti elaboratori" L'attività di questi elaboratori può essere schematizzata come un insieme di n grafi di precedenza ad ordinamento totale

Giovanni Erbacci 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 P j (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 Principi di Parallelismo Processi Interagenti Un arco dal nodo e ij al nodo e kl significa che il task e ij deve esses completato prima che inizi il task e kl. Si dice che il task e kl dipende dal task e ij 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

Giovanni Erbacci Principi di Parallelismo Note sul modello Shared Memory: Accesso a variabili condivise L’accesso concorrente in lettura a una stessa locazione di memoria non causa problemi. Tale operazione è ben definita: 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 cioè quando più processi scrivono simultaneamente sulla stessa locazione di memoria. Due processi P1 e P2 condividono una variabile x che entrambi devono incrementare Qual'è il valore finale di x ? P1 legge il valore corrente di x P2 legge il valore corrente di x P1 incrementa di 1 il valore letto P2 incrementa di 1 il valore letto P1 memorizza il nuovo valore P2 memorizza il nuovo valore Il programmatore, il linguaggio di programmazione e/o l’architettura devono fornire strumenti per risolvere i conflitti

Giovanni Erbacci Principi di Parallelismo Note sul modello Shared Memory: Non determinismo 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 Note sul modello Shared Memory: Locks e Mutua esclusione 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)

Giovanni Erbacci 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 (x 1, P1 ) ……. send (x 2, P1 ) receive (x 2, P0 ) ……. send(x 1,P0 ) Il deadlock è detto anche blocco critico o stallo

Giovanni Erbacci Principi di Parallelismo Linguaggi per la programmazione parallela: requisti 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 Principi di Parallelismo Parallelizzazione: Obiettivi e decisioni 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