Sommario. Analysis & design delle applicazioni parallele. Misura delle prestazioni parallele. Tecniche di partizionamento.

Documenti analoghi
Sommario. Analysis & design delle applicazioni parallele. Tecniche di partizionamento. Load balancing. Comunicazioni

CALCOLO PARALLELO SUPERARE I LIMITI DI CALCOLO. A cura di Tania Caprini

Sommario. Elementi di Parallelismo. Misura delle prestazioni parallele. Tecniche di partizionamento. Load Balancing. Comunicazioni

Speedup. Si definisce anche lo Speedup relativo in cui, invece di usare T 1 si usa T p (1).

La Gestione delle risorse Renato Agati

Disegnare programmi paralleli

Scheduling della CPU. Sistemi multiprocessori e real time Metodi di valutazione Esempi: Solaris 2 Windows 2000 Linux

Più processori uguale più velocità?

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Operazioni di Comunicazione di base. Cap.4

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Calcolatori Elettronici A a.a. 2008/2009

Architetture Applicative

INFORMATICA. Il Sistema Operativo. di Roberta Molinari

Università degli Studi di Salerno

LabVIEW offre un ambiente di programmazione grafica

Sistemi Operativi SCHEDULING DELLA CPU

Appunti di Sistemi Elettronici

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Università di Roma La Sapienza Dipartimento di Matematica gennaio Calcolo parallelo. Claudia Truini

Esempio: aggiungere j

La memoria centrale (RAM)

TECNICHE DI SIMULAZIONE

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Fasi di creazione di un programma

Input/Output. Moduli di Input/ Output. gestiscono quantità di dati differenti a velocità diverse in formati diversi. n Grande varietà di periferiche

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web: Prof. G. Quarella prof@quarella.

Sistemi Operativi. 5 Gestione della memoria

Consumo di Potenza nell inverter CMOS. Courtesy of Massimo Barbaro

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

RAPPRESENTAZIONE GRAFICA DEGLI ALGORITMI

Lo scheduling. Tipici schedulatori

ELABORAZIONE DI DATI TRIDIMENSIONALI - RELAZIONE HOMEWORK 2

La memoria - generalità

Scheduling. Sistemi Operativi e Distribuiti A.A Bellettini - Maggiorini. Concetti di base

I Thread. I Thread. I due processi dovrebbero lavorare sullo stesso testo

ALGORITMI e PROGRAMMI Programmazione: Lavoro che si fa per costruire sequenze di istruzioni (operazioni) adatte a svolgere un dato calcolo

La valutazione nella didattica per competenze

Esempi di algoritmi. Lezione III

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Tirocinio per la Laurea Triennale

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

Elaborazione dati parallela con map/reduce. Roberto Congiu

COSTER. Import/Export su SWC701. SwcImportExport

Parte VIII. Architetture Parallele

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Linguaggi di programmazione

Parallelizzazione Laplace 2D: MPI e MPI+OMP. - Cineca - SuperComputing Applications and Innovation Department

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Corso di Architettura degli Elaboratori

Architettura hardware

PARTE II PROGRAMMAZIONE PARALLELA

Introduzione alle applicazioni di rete

Architettura di un calcolatore

Lezione 1 Introduzione

Valutazione delle Prestazioni

Scheduling. Scheduling 14/12/2003 1/7

Matematica generale CTF

3. Introduzione all'internetworking

I Problemi e la loro Soluzione. Il Concetto Intuitivo di Calcolatore. Risoluzione di un Problema. Esempio

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Approccio stratificato

Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Concetti fondamentali. Dispatcher. Scheduler della CPU

CPU. Maurizio Palesi

Benchmark Ansys Fluent su CRESCO

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. D. Talia - UNICAL. Sistemi Operativi 9.1

Routing Dinamico EIGRP con Manual Summarization e Default Route 16/12/2014 Autore Roberto Bandiera

LEGGE DI STEVIN (EQUAZIONE FONDAMENTALE DELLA STATICA DEI FLUIDI PESANTI INCOMPRIMIBILI) z + p / γ = costante

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Prodotto Matrice - Vettore in OpenMP

Lezione 10. Scheduling nei sistemi multiprocessori. Esempio: P=2 processori. Scheduling dei processi

matematica probabilmente

Linux nel calcolo distribuito

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Concetti di base. Scheduling della CPU. Diagramma della durata dei CPU-burst. Sequenza Alternata di CPU Burst e I/O Burst

Effetti sulla distribuzione del reddito

Amplificatori Audio di Potenza

Sviluppo Applicativi personalizzati per automatizzare le Analisi SPC

Richiesta pagina PHP (es: index.php)

Calcolatori Elettronici. La memoria gerarchica La memoria virtuale

Pag. 1. Introduzione allo scheduling. Concetti fondamentali. Scheduling della CPU. Concetti fondamentali. Concetti fondamentali. Algoritmi.

Risolvere un problema significa individuare un procedimento che permetta di arrivare al risultato partendo dai dati

Modello Di Schedulazione Con Capacità Finita

Gestione Turni. Introduzione

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

CAPACITÀ DI PROCESSO (PROCESS CAPABILITY)

Sequence Diagram e Collaboration Diagram

Esercizi per il corso di Algoritmi e Strutture Dati

Corso di Informatica

Descrizione di un algoritmo

Gestione della memoria centrale

La macchina di Von Neumann. Archite(ura di un calcolatore. L unità di elaborazione (CPU) Sequenza di le(ura. Il bus di sistema

Ambienti di calcolo a griglia Parte 2. Risorse (e loro gestione) Job di griglia e applicazioni di griglia Riservare le risorse ai job

Sistemi Operativi IMPLEMENTAZIONE DEL FILE SYSTEM. Implementazione del File System. Struttura del File System. Implementazione

Le fattispecie di riuso

Prof. Giuseppe Chiumeo. Avete già studiato che qualsiasi algoritmo appropriato può essere scritto utilizzando soltanto tre strutture di base:

RISOLUTORE AUTOMATICO PER SUDOKU

Transcript:

Sommario Analysis & design delle applicazioni parallele Misura delle prestazioni parallele Tecniche di partizionamento Comunicazioni Load balancing 2

Primi passi: analizzare il problema Prima di iniziare a scrivere un codice parallelo: Capire il problema che si vuole parallelizzare Capire il codice seriale (se esiste) Capire se il problema può essere parallelizzato: Problema parallelizzabile: esempio Serie geometrica: I calcoli sono indipendenti possono essere calcolati in parallelo Problema non parallelizzabile: esempio N Successione di Fibonacci: F (n) = F (n - 1) + F (n - 2) F (1) = 1 F (2) = 1 x i I calcoli sono dipendenti: per calcolare il valore F (n) devo conoscere i due valori precedenti F (n-1) e F (n-2) non possono essere calcolati in parallelo P P N / P S i x i 1 i 1 i 1 j 1 N ( i 1) j P 3

Primi passi: costruire l applicazione parallela Se il codice può essere parallelizzato: Identificare le parti maggiormente pesanti e su quelle focalizzare l attenzione generalmente nelle applicazioni tecnico-scientifiche la maggior parte del tempo è spesa in poche sezioni di codice (spesso loop) Identificare i possibili colli di bottiglia : provare a eliminarli o ridurli Identificare inibitori al parallelismo (ad. es. dipendenza dei dati) Studiare differenti algoritmi Distribuire i dati in modo da ridurre le comunicazioni e bilanciare il carico di lavoro Gestire le comunicazioni e la sincronizzazione tra i processi paralleli 4

Misurare le prestazioni Speedup: aumento della velocità (= diminuzione del tempo) dovuto all uso di n processi: S(n) = T(1)/T(n) T(1) = tempo totale seriale T(n) = tempo totale usando n processi S(n) = n S(n) < n S(n) > n speed-up lineare (caso ideale) speed-up di una caso reale speed-up superlineare (effetti di cache) 5

Misurare le prestazioni Efficienza: effettivo sfruttamento della macchina parallela: E(n) = S(n)/n = T(1)/(T(n)*n) E(n) = 1 E(n) < 1 E(n) << 1 caso ideale caso reale ci sono problemi Scalabilità: capacità di essere efficiente su una macchina parallela aumento le dimensione del problema proporzionalmente al numero di processi 6

Legge di Amdhal Quale è lo speed-up massimo raggiungibile? Tempo seriale: T = F + P F = tempo della parte seriale (non parallelizzata o non parallelizzabile) P = tempo della parte parallela Tempo con n processi: T(n) = F + P/n Speed-up su n processi: S(n) = T(1)/T(n) = (F + P)/(F+P/n) Per n grande S(n) = (F + P)/F esiste un limite asintotico allo speed-up! 7

Legge di Amdhal: Speedup 1000 100 Speed-up lineare 80% 85% 90% 95% 98% 99% 99,90% 10 1 1 2 4 8 16 32 64 128 256 8

Legge di Amdhal: Speedup 80% 85% 90% 95% 98% 99% 99.9% Ideale Massimo speed-up raggiungibile in funzione della percentuale della parte parallele 1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 2 1.7 1.7 1.8 1.9 2.0 2.0 2.0 2.0 4 2.5 2.8 3.1 3.5 3.8 3.9 4.0 4.0 8 3.3 3.9 4.7 5.9 7.0 7.5 7.9 8.0 16 4.0 4.9 6.4 9.1 12.3 13.9 15.8 16.0 32 4.4 5.7 7.8 12.6 19.8 24.4 31.0 32.0 64 4.7 6.1 8.8 15.4 28.3 39.3 60.2 64.0 128 4.8 6.4 9.3 17.4 36.2 56.4 113.6 128.0 256 4.9 6.5 9.7 18.6 42.0 72.1 204.0 256.0 9

Legge di Amdhal: Efficienza 1,20 1,00 0,80 Speed-up lineare Efficienza lineare 80% 85% 90% 0,60 0,40 95% 98% 0,20 99% 99,90% 0,00 1 2 4 8 16 32 64 128 256 10

Tecniche di Partizionamento Si divide il problema in n parti, ciascuna parte viene assegnata ad un processo differente Distribuzione del lavoro tra più soggetti: tutti eseguono le stesse operazioni, ma su un sottoinsieme di dati partizionamento dei dati Distribuzione delle funzioni tra più soggetti: non tutti eseguono le stesse operazioni decomposizione funzionale 11

Partizionamento dei dati Insieme (ordinato) di dati da elaborare tutti allo stesso modo Decompongo i dati associati al problema Ogni processo esegue le stesse operazioni su una porzione dei dati ( SPMD) PRO: scalabile con la quantità di dati CONTRO: vantaggiosa solo per casi sufficientemente grandi 12

Partizionamento dei dati: esempio Vari modi possibili per partizionare i dati Ogni processo lavora su una porzione di dati 13

Decomposizione funzionale Insieme di elaborazioni differenti ed indipendenti Decompongo il problema in base al lavoro che deve essere svolto Ogni processo prende in carico una particolare elaborazione ( MPMD) PRO: scalabile con il numero di elaborazioni indipendenti CONTRO: vantaggiosa solo per elaborazioni sufficientemente complesse 14

Decomposizione funzionale: esempio Modello climatico Ogni componente del modello può essere considerata come un processo separato. Le frecce rappresentano gli scambi di dati tra le componenti durante il calcolo 15

Operazione di riduzione/scattering Mettere tutto assieme/distribuire Somma/distribuzione dei vari risultati parziali in un risultato globale (e.g. somma dell integrale) Necessita di sincronizzazione e barriere tra i processi PRO: è necessaria CONTRO: overhead dovuto al parallelo CONTRO: onerosa all aumentare del numero di processi 16

Comunicazioni Sono necessarie? dipende dal problema no, se il problema è imbarazzantemente parallelo si, se il problema richiede dati di altri processi Quanto comunicare? dipende dal problema e da come viene partizionato Tutte le comunicazioni implicano un overhead 17

...e la rete? Fare attenzione anche alla rete di comunicazione Quando si pianifica il pattern di comunicazione tra task, e quando si disegnano in dettaglio le comunicazioni, ci sono diversi fattori da tenere in considerazione: Latenza (L): tempo necessario per spedire un messaggio vuoto (tempo di start-up) Bandwidth (B): velocità di trasferimento dei dati (Mb/sec.) Relazione tra latenza e bandwidth grossa bandwidth e bassa latenza: il migliore dei mondi possibili piccola bandwidth e grande latenza: il peggiore dei mondi possibili Tempo di comunicazione (T) di un messaggio di N MB: T = L + N/B 18

Legge di Amdhal Quale è lo speed-up massimo raggiungibile? Tempo seriale: T = F + P F = parte seriale (non parallelizzata/parallelizzabile) P = parte parallela C(n) = comunicazione, sincronizzazione etc. T(n) = F + P/n + C(n) S(n) = T(1)/T(n) = (F + P)/(F+P/n+C(n)) per n grande S(n) = (F + P)/(F+C(n)) Il limite asintotico allo speed-up è peggiore! Però potrebbe essere possibile nascondere comunicazione nel calcolo. 19

Granularità Parallelismo a grana fine Pochi calcoli tra le comunicazioni rapporto tra il calcolo e le comunicazioni è piccolo Può essere facile bilanciare il carico Overhead di comunicazioni Parallelismo a grana grossa Molti calcoli tra le comunicazioni rapporto tra il calcolo e le comunicazioni è grande Può essere difficile bilanciare il carico Probabile aumento delle performance 20

Load balancing È importante per le performance dei programmi paralleli Distribuire il carico di lavoro in modo da minimizzare i tempi morti (tempi di attesa) dei processi Esempio con 4 processi: tempo seriale = 40 tempo parallelo (teorico) = 10 tempo parallelo (reale) = 12 20% più lento PROCESSO 1 PROCESSO 2 PROCESSO 3 PROCESSO 4 La velocità dell'esecuzione dipenderà dal processo più lento time 21

Load balancing: assegnazione statica Partizionare ugualmente il lavoro di ogni processo Per operazioni su array/matrici dove ogni processo svolge operazioni simili, distribuisco uniformemente i dati sui processi Per cicli dove il lavoro fatto in ogni iterazione è simile, distribuisco le iterazioni uniformemente sui processi 22

Load balancing: assegnazione dinamica Alcuni partizionamenti anche se uniformi risultano sempre non bilanciati Matrici sparse Metodi con griglie adattative In questi casi solo l assegnazione dinamica può riuscire a bilanciare il carico computazionale divido la regione in tante parti (maggiori del numero di processi) ogni processo prenderà in carico una parte quando un processo termina una parte, ne prende in carico una nuova 23

Load balancing: confronti Assegnazione statica: si usa nella domain decomposition in genere semplice, proporzionale al volume soffre di possibili sbilanciamenti Assegnazione dinamica: può curare problemi di sbilanciamento introduce un overhead dovuto alla gestione del bilanciamento 24

Input e Output Le operazioni di I/O sono generalmente seriali Possono creare colli di bottiglia La gestione dell I/O porta all utilizzo di costrutti specifici del linguaggio e del modello di programmazione usato: Gather/Scatter per rimettere insieme/distribuire i dati su modelli message-passing (MPI) Utilizzo di un solo thread nel modello di programmazione multi-threaded (OpenMP) 25