Upload
others
View
2
Download
0
Embed Size (px)
Citation preview
1 CALCOLO ALTE PRESTAZIONI- S. Orlando
Introduzione
Salvatore Orlando
“CALCOLO AD ALTE PRESTAZIONI”
2 CALCOLO ALTE PRESTAZIONI- S. Orlando
Notizie generali sul corso
• Sito Web: – http://www.dsi.unive.it/~calpar/ – Iscriversi alla lista di discussione
• Esame suddiviso in due parti: – Lettura di articoli scientifici o capitoli di libro, con piccolo orale sugli
argomenti del corso – Progetto di Laboratorio
• Il voto per i due esami di Calcolo Parallelo e Laboratorio come media dei due voti
• Materiale didattico – Slides – A. Grama, A. Gupta, G. Karypis, V. Kumar. Introduction to Parallel
Computing, 2° Ed., Addison-Wesley, 2003. – B. Wilkinson, M. Allen. Parallel Programming: Techniques and Applications
Using Networked Workstation and Parallel Computers. 2° Ed., Prentice-Hall, 2003.
– The Sourcebook of Parallel Computing. J. Dongarra, I. Foster, G. Fox, et al. Morgan Kaufmann, 2002.
– I. Foster. Designing and Building Parallel Programs. Addison-Wesley, 1995, Versione online disponibile presso http://www-unix.mcs.anl.gov/dbpp.
3 CALCOLO ALTE PRESTAZIONI- S. Orlando
Calcolo parallelo
• Calcolo sequenziale: – risolve un problema tramite un algoritmo le cui istruzioni sono
eseguite in sequenza – modello computazionale caratterizzato da un singolo
processore
• Calcolo parallelo: – risolve un problema tramite un algoritmo le cui istruzioni sono
eseguite in parallelo – modello computazionale che prevede processori multipli e
relativi meccanismi di cooperazione – l’algoritmo deve sfruttare in maniera efficiente il parallelismo
esplicitabile nel problema, per rendere più veloce l’esecuzione
4 CALCOLO ALTE PRESTAZIONI- S. Orlando
Processo di parallelizzazione ottimale
• Metodologia generale: – dividere il problema tra processori (decomposizione) – i vari processori lavorano sui propri pezzi del problema, e
comunicano per cooperare – con l’obiettivo di bilanciare il carico e ridurre le comunicazioni/
sincronizzazioni allo stretto necessario
5 CALCOLO ALTE PRESTAZIONI- S. Orlando
Trend nello sviluppo di hw/sw ad alte prestazione
• Ultime decadi: migliorano le prestazioni dei microprocessori – Legge di Moore (2x transistor/chip ogni anno e mezzo) – Parallelismo/Pipeline nell’esecuzione delle istruzioni
• ILP (Instruction Level Parallelism) • Parallelismo implicito a grana finissima • CPI medio ridotto di un ordine di grandezza (in una decade) • Ciclo di clock ridottissimo (frequenza nell’ordine dei GHz) • Incremento FLOPS di picco
• Ultimi anni – Il bottleneck del collegamento con la memoria, la cui tecnologia non è migliorata
dal punto di vista delle latenze, diventa più evidente • si pone rimedio con la memoria cache, ma anche questo ha un limite
tecnologico e di costo – Limiti oggettivi nell’estrarre ulteriore parallelismo ILP da un singolo programma
sequenziale
6 CALCOLO ALTE PRESTAZIONI- S. Orlando
Trend nello sviluppo di hw/sw ad alte prestazione
• Ultimi anni – La curva delle prestazioni segna il passo per i processori più recenti
• curva misurata rispetto al benchmark SPEC, ovvero insiemi standard e rappresentativi di programmi sequenziali
7 CALCOLO ALTE PRESTAZIONI- S. Orlando
Trend nello sviluppo di hw/sw ad alte prestazione
• Esistono quindi limiti nell’approccio basato su hw/sw sequenziale, anche se con parallelismo implicito a grana fine di tipo ILP – i trend non fanno prevedere ulteriori incrementi di velocità
• HW – I costruttori di CPU corrono ai ripari, sfruttando l’area dei chip e
i grande numero di transistor per produrre CPU con processori multipli
• Si prevede che il numero di processori (“core”) per chip dovrebbe raddoppiare ogni 2 anni
• SW – Parallelismo, anche esplicito, ovvero specificato direttamente
dal programmatore tramite opportuni linguaggi, librerie, ambienti di programmazione parallela
8 CALCOLO ALTE PRESTAZIONI- S. Orlando
Trend nello sviluppo di hw/sw ad alte prestazione
• I bassi costi oggi permettono la larga diffusione di server/workstation con 2/4/8 processori (anche sullo stesso chip) interconnessi in cluster – usando reti veloci
• Non solo calcolo scientifico, ma anche applicazioni di tipo business • Ad esempio, per piattaforme parallele data intensive come web server, data
base, motori di ricerca, data mining – maggiore banda aggregata di accesso alla memoria – maggiore dimensione aggregata della memoria
9 CALCOLO ALTE PRESTAZIONI- S. Orlando
Trend nello sviluppo di hw/sw ad alte prestazione
• Piattaforme parallele usate anche per garantire high availability (ridondanza) • Applicazioni scientifiche e di ingegneria richiedono l’accesso a piattaforme
più complesse, con centinaia di processori (MPP – Massively Parallel Processor)
• Visto il campo applicativo in rapida espansione, è quindi estremamente importante capire dal punto di vista dei costi e delle prestazioni, e dei requisiti applicativi: – Principi, strumenti e tecniche per programmare le piattaforme parallele
oggi disponibili
• Applicazioni di visualizzazione e grafica computazionale usano pipe multiple per il rendering (rendering farm) – Uso massiccio di farm
parallele da parte di recenti produzioni cinematografiche
10 CALCOLO ALTE PRESTAZIONI- S. Orlando
• Contro – Lo sviluppo di software parallelo è considerato molto
difficile • Complessità inerente nello specificare e coordinare task
concorrenti • Algoritmi e software non portabili tra piattaforme differenti • Ambienti di programmazione non standardizzati
– Miglioramento continuo delle prestazioni dei microprocessori
• “Ha senso dedicarsi sviluppare sw parallelo con costi elevati di sviluppo, visto gli incrementi di prestazioni dei microprocessori?”
• In certe casi ha comunque senso per scalare con la dimensioni dei problemi da risolvere
Motivazioni contro il parallelismo
11 CALCOLO ALTE PRESTAZIONI- S. Orlando
Argomenti a favore del parallelismo
• A favore – Standardizzazione hw
• uso dei microprocessori off-the-shelf per realizzare piattaforme parallele
– ambienti di programmazione paralleli più standard che migliorano la portabilità del sw
• MPI, Open-MP, PVM – parallelismo implicito a grana fine non sufficiente in futuro
• limiti sulla quantità di parallelismo esplicitabile
12 CALCOLO ALTE PRESTAZIONI- S. Orlando
Altri argomenti a favore del parallelismo
• Bassa velocità della memoria e dei dischi – Prestazioni non dipendono solo dalla velocità del calcolo, ma
anche dalla capacità della memoria di fornire i dati sui cui computare alla velocità richiesta
– Von Neumann bottleneck • L’uso delle gerarchie di memoria (cache) ha diminuito in parte le
conseguenze sulle prestazioni del bottleneck – le cache diminuiscono le latenze di accesso alla memoria
• Il problema comunque rimane, in quanto le prestazioni della memoria sono limitate della frazione di richieste alla memoria che riescono ad essere soddisfatte dalla cache
– Le piattaforme parallele diminuiscono le conseguenze del bottleneck
• Perché forniscono cache aggregate più grandi • Banda aggregata di accesso alla memoria (anche dischi) più grande • Necessario comunque sviluppare algoritmi paralleli in grado di
sfruttare il principio della località
13 CALCOLO ALTE PRESTAZIONI- S. Orlando
Altri argomenti a favore del parallelismo
• Le infrastrutture di rete – Oggi è possibile usare Internet e i computer ad essa interconnessi
come una piattaforma a larga scala, ma eterogenea, per il calcolo parallelo/distribuito
– Spesso l’esigenza nasce anche da vincoli sul movimento dei dati, che impediscono la centralizzazione degli stessi su una piattaforma standard parallela
– Però non tutte le applicazioni sono adatte per poter essere eseguite su tali piattaforme …
– Esempi: • SETI@home (Search for Extra Terrestrial Intelligence) utilizza la potenza dei
desktop computer per analizzare i segnali elettromagnetici provenienti dallo spazio
• Fattorizzazione di interi estremamente grandi, con applicazioni in crittografia e problemi di ottimizzazione
14 CALCOLO ALTE PRESTAZIONI- S. Orlando
Programmare in parallelo
• Un programma sequenziale può essere suddiviso in due tipi di sezioni: – non parallelizzabili, ovvero inerentemente sequenziali – potenzialmente parallelizzabili
• I metodi di suddivisione delle sezioni parallelizzabili sono critici per il raggiungimento di elevate prestazioni
• Scopo di una buona parallelizzazione: – ottenere piccole sezioni sequenziali – mantenere tutti i processori (equamente) occupati (load balancing) – minimizzare le comunicazioni inter-processor (grana grossa) – limitare la replicazione del calcolo allo stretto necessario – evitare che i processori rimangano idle nell’attesa di
sincronizzazioni o latenze di I/O • eliminare/spostare le sincronizzazioni • associare ad ogni processore task multipli indipendenti (eccesso di
parallelismo) per nascondere idle times
15 CALCOLO ALTE PRESTAZIONI- S. Orlando
A che serve il parallelismo?
• Esistono applicazioni che storicamente richiedono maggiore capacità di quanto i computer sequenziali possano attualmente fornire
• e-Science • Esempi di problemi scientifici Grand Challenge, ovvero problemi
che non possono essere oggi risolti in tempi ragionevoli: – Modellare grandi strutture di DNA – Modellare e previsione dei fenomeni meteorologici globali, e di
quelli correlati (es. inquinamento, maree, ecc.) – Modellare il movimento di corpi celesti
• Le esigenze applicative sono duplici 1. ottenere computazioni che terminano in un tempo ragionevole 2. eseguire nello stesso tempo e con lo stesso algoritmo problemi
più complessi (es. simulazione su dati più grandi, o con time-step più piccolo)
16 CALCOLO ALTE PRESTAZIONI- S. Orlando
E-Science
• Modellazione del Clima e Previsioni atmosferiche
• Ricerca di riserve energetiche • Problemi di cosmologia, con
grandissime scale spaziali e temporali
17 CALCOLO ALTE PRESTAZIONI- S. Orlando
e-Science & HPC Computational Science
• HPC (High Performance Computing) offre un nuovo modo di fare scienza: – Sperimentare, Teorizzare/Modellare, Computare
• Il modello computazione è principalmente usato per approssimare sistemi chimico/fisici
• Tra i vantaggi – Giocare con i parametri della simulazione per studiare nuove
soluzioni, o eventi su cui non abbiamo raccolto dati sperimentali • es. simulare eventi catastrofici
– La possibilità di ripetere particolari eventi simulati – Studiare sistemi quando non esistono teorie esatte
18 CALCOLO ALTE PRESTAZIONI- S. Orlando
Esempio di applicazione: Industria delle automobili
• Grandi utilizzatori di tecnologia HPC
• Principali usi della simulazione: – Aerodynamics (in modo simile all’industria aerospaziale) – Crash simulation – Metal sheet formation – Noise/vibration optimization
• Principali benefici: – Riduzione del time-to-market di nuove automobili – Aumento della qualità dei prodotti – Riduzione della necessità di costruire prototipi – Più integrazione ed efficienza nell’intero processo
manufatturiero
19 CALCOLO ALTE PRESTAZIONI- S. Orlando
Previsioni del tempo
• L’intera atmosfera è modellata dividendola in regioni o celle tridimensionali • Il calcolo su ogni cella è ripetuto diverse volte per modellare il trascorrere
del tempo • Esempio:
– atmosfera suddivisa in celle di dimensioni 1 miglio × 1 miglio × 1 miglio, per un’altezza di 10 miglia (per un’altezza di 10 celle)
– per un totale di circa 5 × 108 celle • Supponiamo che il calcolo associato a ciascuna cella richiede 200 FP ops,
in un passo sono necessari 1011 FP ops • Per una previsione meteo su 10 giorni, usando intervalli di tempo di
simulazione di 10 minuti, sono necessari 6 passi per simulare un’ora, per un totale di 1440 passi (circa 1,4 × 1014 FP ops) – Un computer che operasse a 100 Mflops (108 FP ops/sec)
impiegherebbe più di 106 secs (circa 16 giorni !!!!) – Per eseguire lo stesso calcolo in 10 minuti ci vorrebbe un computer in
grado di eseguire 0,2 Tflops (0,2 × 1012 FP ops/sec) • Cosa succede se aumentassimo i passi o rimpicciolissimo le celle?
20 CALCOLO ALTE PRESTAZIONI- S. Orlando
Simulazione movimento corpi celesti (N-bodies)
• Ogni corpo celeste è attratto dagli altri dalla forza gravitazionale. • Il loro movimento può essere predetto calcolando la forza che incide su ogni
corpo • Se ci sono N corpi, dobbiamo calcolare N - 1 forze per corpo, o
approssimativamente N2 calcoli in totale • Esistono algoritmi approssimati che richiedono N × log2 N calcoli
– sono basati sulla suddivisione dei corpi in agglomerati di elementi vicini (galassie, sistemi solari)
– interazioni tra agglomerati, invece che tra singoli corpi (es. Sistema solare approssimato con il centro di massa per calcolare l’interazione con la stella Proxima Centaury)
21 CALCOLO ALTE PRESTAZIONI- S. Orlando
Simulazione movimento corpi celesti (N-bodies)
– Gli algoritmi approssimati (come ad es. quello di Barnes-Hut) usano strutture dati irregolari organizzate ad albero (oct-tree)
• tali alberi mantengono informazioni sui corpi presenti nello spazio, che viene suddiviso in sottoblocchi
• su quali agglomerati di corpi ricadono nello stesso box • sui centri e i valori di massa degli agglomerati di corpi
22 CALCOLO ALTE PRESTAZIONI- S. Orlando
Simulazione movimento corpi celesti (N-bodies)
• Gli algoritmi di simulazione degli N corpi si iterano per più passi: – ad ogni passo si determina la nuova posizione dei corpi – il calcolo deve essere quindi ripetuto
• Supponiamo di avere una galassia con 1011 stelle. • Anche se ogni calcolo potesse essere ottimisticamente fatto in 1 µs (10-6 s),
sarebbero necessari – circa 109 anni per un’iterazione, usando l’algoritmo di complessità N2 – quasi un anno per un’iterazione usando l’algoritmo approssimato (di
complessità N × log2 N)
23 CALCOLO ALTE PRESTAZIONI- S. Orlando
Web Search Engines
Crawl Control
Crawlers
Ranking
Indexer
Page Repository
Query Engine
Collection Analysis
Text Structure Utility
Queries Results
Indexes
24 CALCOLO ALTE PRESTAZIONI- S. Orlando
Data Mining (DM)
• Applicazioni tipicamente commerciali/business • Esplorazione & Analisi, in modo automatico o semi automatico, di
grandissime quantità di dati per scoprire e estrarre Pattern Significativi & Regole – Pattern & Regole devono essere innovative, valide, potenzialmente utili,
comprensibili • Algoritmi di DM su grandi quantità di dati costosi dal punto di vista
computazionale e di Input/Output • DM è un passo del processo di KDD ….
25 CALCOLO ALTE PRESTAZIONI- S. Orlando
DM
• Disciplina che trae origine da vari campi: machine learning/AI, pattern recognition, statistica, database, e visualizzazione di dati scientifici
• Alcuni dei più importanti Data Mining Tasks: • Classification [Predittiva, Supervised]
• Clustering [Descrittiva, Unsupervised]
• Association Rule Discovery [Descrittiva, Unsupervised]
• Le tecniche tradizionali (sequenziali) possono non essere adatte a causa di – dati enormi e con alta dimensionalità – natura eterogenea e distribuita dei dati
26 CALCOLO ALTE PRESTAZIONI- S. Orlando
DM: Association rules
• Uno degli algoritmi di DM più impiegati e più studiati dal punto di vista della parallelizzazione
• Identifica regole associative all’interno di insiemi di transazioni, dato un certo supporto e una data confidenza
TID Items 1 Pane, Latte 2 Birra, Pane, Pannolini, Uova 3 Birra, Coca, Pannolini, Latte 4 Birra, Pane, Pannolini, Latte 5 Coca, Pane, Pannolini, Latte
Association rule: X⇒s,c y
Support: s =σ(X∪y) / |T|
Confidence: c = σ(X∪y) / σ(X)
Esempio: {Pannolini,Latte} ⇒s,c Birra
Il supporto è la probabilità che un certo itemset appaia nelle transazioni del dataset. s=P({Pannolini,Latte, Birra}) La confidenza è una probabilità condizionata c=P({Birra} | {Pannolini,Latte})
s = σ({Pannolini,Latte, Birra}) / Tot_trans = = 2/5 = 0.4 = 40%
c = σ({Pannolini,Latte, Birra}) /
σ({Pannolini,Latte}) = = 2/3 = 0.66
27 CALCOLO ALTE PRESTAZIONI- S. Orlando
DM: Association rules
• Per identificare tutte regole associative dato un certo supporto s – si trovano prima tutti gli itemset frequenti, ovvero almeno con
supporto σ(Itemset) = s – è il passo più costoso dell’algoritmo – l’algoritmo più noto è Apriori [Agarwal, Srikant]
• Apriori visita il dataset più volte, e identifica, ad ogni iterazione k, i k-itemset più frequenti – l’algoritmo termina quando troviamo che, per un certo valore k, non
esistono k-itemset frequenti caratterizzati da quel certo valore di s • Per supporti piccoli (es. 0.5 %) e dataset relativamente piccoli (es. 128 MB),
Apriori può impiegare anche diversi minuti per completare in sequenziale – il tempo impiegato dipende
• dalle caratteristiche del dataset, dal numero di item presenti nella transazioni, dalla dimensione del dataset, oltre che
• dalla potenza del calcolatore, dalla memoria disponibile e dal I/O – per provare più istanze dell’algoritmo, per scalare con la dimensione del
dataset, per rendere il processo di mining interattivo è necessario distribuire/parallelizzare l’algoritmo
28 CALCOLO ALTE PRESTAZIONI- S. Orlando
Computer paralleli e loro programmazione
• Negli scorsi anni abbiamo assistito al proliferare di architetture parallele diverse, associate con paradigmi di programmazione differenti e specializzati
• A causa di ciò, programmare in parallelo è stata considerata un’attività complessa, che richiede l’uso di strumenti di programmazione a basso livello, e un’elevata attività di tuning dei programmi per ottenere alte prestazioni
• Flynn [1972] ha introdotto la seguente tassonomia dei computer, dove le classi interessanti di computer paralleli sono MIMD (Multiple Instruction stream- Multiple Data stream) e SIMD (Single Instruction stream - Multiple Data stream)
29 CALCOLO ALTE PRESTAZIONI- S. Orlando
Potenzialità dei 4 modelli di computer
30 CALCOLO ALTE PRESTAZIONI- S. Orlando
SIMD
• L’array di processori opera in modo sincrono, ovvero a ogni passo (global clock tick) tutti i processori eseguono la stessa istruzione su dati differenti – Array processors : Connection
Machine, ICL DAP (Distributed Array Processor), MasPar MP
– Pipelined vector computer : CRAY 1 & 2 e CYBER 205
– Co-processori SIMD per multimedia – GPUs (Graphics Proc. Units)
• Macchine SIMD adatte per risolvere problemi data parallel regolari, dove la stessa istruzione può essere applicata a (partizioni di) dati distinti – es.: Somma di 2 matrici: A + B = C. – Se A[2][2] e B[2][2] distribuite su 4
processori, in parallelo: A11 + B11 = C11 A12 + B12 = C12 A21 + B21 = C21 A22 + B22 = C22
31 CALCOLO ALTE PRESTAZIONI- S. Orlando
MIMD (Multiprocessor / Multicomputer)
• Ogni processore opera in modo asincrono sotto il controllo di un proprio programma e su dati diversi
• Come nel caso SIMD, la comunicazione dei dati e dei risultati può avvenire attraverso memoria condivisa o rete
• Computer MIMD con memoria condivisa sono conosciuti come multiprocessors o tightly coupled machines. I multi-core attuali rientrano in questa classe.
• Computer MIMD dove i processi comunicano tramite messaggi sono conosciuti come multicomputers o loosely coupled machines. Esempi sono le vecchie reti di Transputer, IBM SP, Intel Paragon, TM CM5, Cray T3E, Meiko CS-2, i moderni cluster di WS.
32 CALCOLO ALTE PRESTAZIONI- S. Orlando
Shared memory vs message passing
• Sia nel caso SIMD e sia nel caso MIMD per cooperare è necessario scambiare dati tra processori. Questo può essere fatto in due modi – Usando SHARED MEMORY (SM) e SHARED VARIABLES – Usando DISTRIBUTED MEMORY (DM) e MESSAGE PASSING
• Alcune architetture moderne: Shared Memory Message Passing
33 CALCOLO ALTE PRESTAZIONI- S. Orlando
Shared memory vs message passing
• Nel caso SM abbiamo un unico spazio di indirizzamento fisico a cui i vari processori possono accedere – problemi legati alla scalabilità, parzialmente risolvibile tramite cache – modalità di cooperazione adatta per piccoli numeri di processori
(multiprocessor MIMD a 2-32 vie) – message-passing emulato a software tramite astrazioni di canali di
comunicazione realizzati in SM
• Nel caso DM abbiamo uno spazio di indirizzamento privato a ciascun processore, per cui per comunicare i processori devono scambiarsi messaggi via rete – modalità tipica di molti MPP di tipo MIMD e dei cluster di WS con rete
veloce – un unico spazio di indirizzamento (shared address space) può essere
emulato a software - Virtual Shared Memory (VSM)
34 CALCOLO ALTE PRESTAZIONI- S. Orlando
Il processo di parallelizzazione
• Una buona metodologia di progetto richiede di progettare in maniera indipendente dall’architettura target
• Individuiamo prima cosa può essere eseguito concorrentemente (data/task parallelism)
• Ritardiamo quanto più possibile tutti gli aspetti di progetto machine-specific
35 CALCOLO ALTE PRESTAZIONI- S. Orlando
Il processo di parallelizzazione
• Esempio di ciclo di progetto – Partizionamento. Decomponiamo la computazione in task, a cui
assegniamo i dati su cui operare, e senza preoccuparci delle risorse fisiche disponibili (processori/memoria).
– Comunicazione/Sincronizazione. Determiniamo la struttura di comunicazione/sincronizzazione per coordinare i task.
• Accesso ai dati, comunicazione e sincronizzazione tra i processi • Compito diverso se prevediamo una SM o una DM
– Agglomerazione. Valutiamo le strutture di comunicazione / sincronizzazione, e cerchiamo di limitarle assegnando task piccoli (di minima granularità) a processi (thread) sequenziali più grossi. Necessario modello dei costi.
– Mapping e Scheduling. I processi (thread) sono mappati sui processori per massimizzare l’utilizzo del processore e minimizzare le comunicazioni. Può essere effettuato staticamente o a runtime per bilanciare il carico. Scheduling locale dei processi assegnati allo stesso nodo.
36 CALCOLO ALTE PRESTAZIONI- S. Orlando
Il processo di parallelizzazione (Foster)
37 CALCOLO ALTE PRESTAZIONI- S. Orlando
Partizionamento / Decomposizione
• Algoritmo sequenziale: – funzione F applicata su un dato I
per produrre un dato O: O = F(I)
• Data Parallelism o Domain Decomposition
– Partizioniamo i dati – I = {I1,…,In}
O = {O1,…,On}, dove Oj=F(Ij)
• Task Parallelism o Functional Parallelism
– Partizioniamo il controllo – Pipeline (vantaggioso solo se
c’è uno stream di dati in input): • O= F(I) = Fm( Fm-1( … F1(I)))
– Task graph (esempio) • O = F(I) = F3( F1(I), F2(I) )
• Combinazioni di Task & Data Parallelism
F1 F2 Fm I O
F
I1 F F
I2 In
O1 O2 On
F1 F2
F3
O
I I
38 CALCOLO ALTE PRESTAZIONI- S. Orlando
Partizionamento / Decomposizione
• E’ buona norma provare strategie di partizionamento diverse, per poi valutarle durante le fasi successive
• Es. di programma sequenziale da parallelizzare – l’analisi Data Flow a livello delle singole operazioni (minima granularità)
mette in evidenza tutto il parallelismo esplicitabile nel programma
– Per eseguire il programma, bisogna assegnare le operazioni ai processi (processori virtuali) da mappare poi sui processori reali
L = I1 * I2 M = I3 * I4 N = I5 * I6 O = I7 * I8 J1 = L * M J2 = N * O K = J1 * J2
I1 I2 I3 I4 I5 I6 I7 I8
* * * *
* * L M N O
* J2 J1
K
39 CALCOLO ALTE PRESTAZIONI- S. Orlando
Comunicazione e Agglomerazione • Il grafo data flow definisce un partizionamento funzionale
– I nodi rappresentano task (di grana minima) eseguibili in parallelo – Gli archi sono dipendenze sui dati (relazioni prod/cons), da trasformare
in comunicazioni esplicite o in sincronizzazioni • dipende dal modello di programmazione (DM o SM)
– Al massimo 4 task sono eseguibili in parallelo su processori diversi – Se ogni task venisse eseguito in uno step da processori diversi:
• Tseq=7 step Tpar=3 step Speedupmax= 7/3 = 2,3 su 4 proc
• Il processo di agglomerazione tende a porre task dipendenti all’interno di uno stesso processo (da assegnare ad un processore) riducendo il grado di parallelismo massimo esplicitabile – incrementare la granularità dei processi (da fine a medio/grossa)
• riduce il rapporto tra numero di sincronizzazioni/comunicazioni e numero di passi computazionali elementari eseguiti da ciascun processo
– ridurre il numero di sincronizzazioni/comunicazioni è di solito vantaggioso perché si riducono i ritardi ad esse associate
• soprattutto nel modello DM, dove gli archi corrispondono a comunicazioni per spostare dati tra le memorie private associate ai processori
40 CALCOLO ALTE PRESTAZIONI- S. Orlando
Mapping e scheduling
• Mapping – Assegnamento dei processi sui processori fisici
• Mapping Tradeoff: – Processi mappati su nodi diversi, per migliorare la concorrenza e il
bilanciamento del carico – Processi (che comunicano frequentemente) mappati sullo stesso nodo,
per rendere locali le comunicazioni e
• Una volta co-allocati i processi (cooperanti) ai nodi (singolo- o multi-processori), essi dovrebbero essere schedulati simultaneamente per evitare ritardi – Su MPP, scheduling di tipo space-sharing, senza time-sharing – Sui cluster, dove i nodi sono dotati di SO general-purpose time-
sharing, i processi vanno solitamente in esecuzione secondo la politica di scheduling locale
• Non abbiamo il co-scheduling di processi cooperanti su nodi distinti
41 CALCOLO ALTE PRESTAZIONI- S. Orlando
Agglomerazione: aumentiamo la granularità
I1 I2 I3 I4 I5 I6 I7 I8
* * * *
* *
*
*
I1 I2
I1 I2 I3 I4
L = I1 * I2; M = I3 * I4; J = L * M; Task di grana media
Task a grana minima
1comp.+1outputcomm.
3comp.+1outputcomm.
42 CALCOLO ALTE PRESTAZIONI- S. Orlando
Granularità, mapping e performance
*: 5 *: 5 *: 5 *: 5
*: 5 *: 5
+: 5
6 6 6 6 6 6 6 6
6 6 6 6
6 6 P1 P2 P3 P4 Time
33
P1 P2 Time
32
5
6
Aumento granularità
43 CALCOLO ALTE PRESTAZIONI- S. Orlando
Replicazione
• Spesso, oltre a partizionare, è utile replicare la computazione per – Ridurre/evitare le comunicazioni e bilanciare il carico
• Rispetto al modello DM, può essere necessario replicare anche i dati associati ai task da replicare
44 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modello di programmazione
• Controllo – Come il parallelismo viene creato – Qual è e come viene garantito l’ordine corretto tra le operazioni – Come thread di controllo differenti si sincronizzano
• Naming – Quali dati sono private e quali shared – Come i dati shared sono acceduti/comunicati dal punto di vista logico – Nominandoli direttamente oppure inviando messaggi ai loro gestori (naming dei
processi/canali di comunicazione) • Insieme di operazioni e costi
– Quali sono le operazioni di base – Qual è il loro costo
• Storicamente – Ciascuna macchina parallela era unica, e caratterizzata da una specifico modello
architetturale – Aveva il proprio modello di programmazione e un linguaggio associato – Discutiamo con un semplice esempio
45 CALCOLO ALTE PRESTAZIONI- S. Orlando
Un semplice esempio
• Decomposizione/Agglomerazione: – Ciascuna valutazione / somma parziale diventa un task – Assegniamo n/p numeri/subtask a ciascuno dei p processori virtuali
• Ciascuno computa in maniera indipendente risultati “privati” e somme parziali
• Uno (o tutti) colleziona le somme parziali e computa la somma globale
=> Classi di Dati – Logicamente condivisi
• Lo sono gli n numeri originali, e la somma globale – Logicamente privati
• Lo sono le variabili usate per memorizzare le funzioni di valutazione individuali e le somme parziali
46 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modelli di programmazione 1 (SM)
• Shared Memory (SM). Nel modello shared-memory i processi (thread) condividono uno spazio di memoria comune, sul quale leggono/scrivono in maniera asincrona. Meccanismi vari come lock e semafori possono essere usati per controllare gli accessi alla SM.
• Un vantaggio dal punto di vista del programmatore è che non esiste la nozione di “ownership” dei dati, e quindi non c’è bisogno di comunicare dati. Comunque, dal punto di vista della programmazione efficiente, gestire la località può diventare complesso.
• Il modello shared memory è in un certo senso primitivo su macchine SM MIMD, ma uno spazio di indirizzamento comune può essere realizzato (efficientemente !?) anche su un DM MIMD (Virtual SM).
• Il modello non mette vincoli alla fantasia del programmatore (unrestricted model) ed è di basso livello. Un ambiente di programmazione tipico sono le librerie portabili per la programmazione multi-threading (es.: pthread) da linkare con codice sequenziale.
• Parallelismo di tipo esplicito: il programmatore è responsabile delle suddivisione del programma in task, e della cooperazione tra i task via SM
47 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modello di programmazione 1 (SM)
• Shared Address Space – Il programma consiste di una collezione di thread di controllo – Ciascuno con un set di variabili private,
• es. variabili locali sullo stack – Collettivamente hanno accesso a variabili condivise
• Es. variabili statiche, heap globale – I thread comunicano implicitamente leggendo/scrivendo variabili
condivise – I thread si coordinano attraverso operazioni di sincronizzazione su
variabili condivise • Leggi/scrivi flag • Usa locks, semafori
• Come la programmazione concorrente sugli uniprocessori
48 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modello architetturale 1 (SM)
• Una macchina SM (UMA) – Processori connessi ad una singola SM – Non abbiamo memoria “locale” del nodo, ma abbiamo una cache
• Sun, DEC, Intel “SMPs” (Symmetric multiprocessors) • Costo: molto più performante accedere alla cache rispetto alla memoria
principale
49 CALCOLO ALTE PRESTAZIONI- S. Orlando
Codice SM per calcolare la somma
• Variabili condivise – Array A[N], in sola lettura – Variabile s, che alla fine deve contenere la somma degli N numeri
Cosa potrebbe andare storto?
50 CALCOLO ALTE PRESTAZIONI- S. Orlando
Problemi e soluzioni
• Come avviene la somma globale (s = local_s1 + local_s2)?
• Istruzioni di thread differenti possono mescolarsi arbitrariamente • Quale potrebbe essere il risultato finale in memoria?
– Race Condition • Soluzione possibile: Mutua Esclusione con Lock (semafori binari)
• I lock devono essere atomici (senza interruzione)
51 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modello di programmazione 2 (MP)
• Message passing (MP). Il modello message-passing è basato sull’astrazione di processi multipli, creati staticamente o dinamicamente.
• Ogni processo è caratterizzato da uno specifico codice e incapsula dati privati.
• Le primitive send/receive nominano direttamente i processi (tramite degli identificatori/nomi unici) o delle astrazioni di canali di comunicazione che collegano i processi – Esistono primitive collettive (gather/scatter/reduce) e di multicast.
• Modello di basso livello, che permette qualsiasi tipo (unrestricted approach) di decomposizione e struttura di comunicazione
• Il modello message passing è in un certo senso primitivo su macchine DM MIMD, ma può essere realizzato efficientemente anche su un SM MIMD.
• Esistono linguaggi message passing, anche se oggi l’ambiente di programmazione tipico fa uso di librerie portabili, facili da usare, e efficienti da linkare con codice sequenziale (MPI, PVM)
• Parallelismo di tipo esplicito: il programmatore è responsabile delle suddivisione del programma in processi, e della cooperazione tra i processi via MP
• Paradigma naturale su DM-MIMD: – MPMD - Multiple Programs Multiple Data – ovvero processi che eseguono
programmi diversi su dati diversi e che cooperano tramite MP
52 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modello di programmazione 2 (MP)
• Message Passing – I programmi consistono in una collezione di processi con nome
• Thread di controllo con in più uno spazio di indirizzamento privato – Variabili locali, variabili statiche, heap
– I dati logicamente condivisi devono essere partizionati tra gli spazi di memoria locali dei vari processi
• Processi comunicano con data transfer espliciti – Coppie di send & receive (matching) tra una sorgente e una dest.
• La sincronizzazione è implicita in ogni evento di comunicazione
• Simile alla computazione distribuita su rete
53 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modello architetturale 2 (DM)
Processori connessi direttamente solo alla propria memoria privata & cache – Non possono accedere direttamente alla memoria di altri processori – Memoria distribuita (DM)
• Ciascun “nodo” ha una sua interfaccia di rete (NI) – Tutte le comunicazioni/sincronizzazioni passano attraverso questa NI
• Macchine a memoria distribuita – IBM SP, Cluster di Workstations
54 CALCOLO ALTE PRESTAZIONI- S. Orlando
Calcolare S = X(1) + X(2) su ciascun processore
• Prima soluzione per realizzare S = X(1)+X(2) (con possibili problemi.. deadlock)
• Seconda soluzione
55 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modello di programmazione 3 (DP)
• Data Parallel (DP) – Un unico thread di controllo che consiste di
• operazioni parallele applicate a tutti i (o un ben definito sottoinsieme dei) dati elementari che costituiscono una struttura dati
– La comunicazione è implicita negli operatori paralleli e nelle operazioni di “shift” delle strutture dati (array)
– Elegante e facile da capire – Non tutte le parallelizzazioni possono essere espresse naturalmente
con questo modello (solo data paralellism)
• Vector Computing – Una istruzione eseguita su tutti i dati di una struttura dati in modo
pipeline – Sfrutta ancora il data parallelism
56 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modello architetturale 3 (DP)
• Macchina SIMD (Single Instruction Multiple Data) • Un gran numero di processori piccoli ed elementari • Un singolo “controllo” invia le istruzioni per tutti i processori
– Ciascun processore esegue la stessa istruzione – Alcuni processori possono essere “spenti” sull’esecuzione di
specifiche istruzioni
• Le macchine SIMD a larghissima scala non sono più molto popolari (es. Connection Machne), ma lo è il modello di programmazione – Implementato allocando il parallelismo originale ad n-vie (a grana
finissima) su un numero ridotto p di processori – Supportato da compilatori (e.s., HPF = High Performance Fortran), che
producono codice SPMD (vedi prossima slide)
57 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modelli di programmazione (SPMD)
• SPMD - Single Program Multiple Data - è un paradigma software (tipicamente di tipo MP) usato su computer DM-MIMD per implementare il data parallelism
• Il modello di calcolatore SIMD permette di implementare il parallelismo di tipo data parallel in modo sincrono: ogni processore opera in lockstep
• Il modello SPMD è la versione software e asincrona del modello SIMD? – medesimo programma eseguito da ciascun processore di una
macchina MIMD: ma ogni processore ha un proprio controllo e un proprio clock
• Poiché i programmi sono eseguiti su dati separati, è possibile che i flussi di controllo, a causa dei salti condizionali, siano differenti. – I processori non eseguono le stesse istruzioni in lockstep, ma solo
processi caratterizzati dallo stesso codice – Comportamento del codice differenziato in base al PID del processo – Processi scambiano dati ancora tramite message passing
• Considera il seguente programma: IF X = 0 THEN S1 ELSE S2 – Se X=0 su P1 e X != 0 su P2, P1 esegue S1 mentre P2 esegue S2 – Questo non potrebbe accadere sulla macchina SIMD (MIMD più potente
che SIMD)
58 CALCOLO ALTE PRESTAZIONI- S. Orlando
Modelli di programmazione (sommario)
• Storicamente, tutte le architetture parallele avevano caratteristiche uniche – Ciascuna con il proprio modello di
programmazione e linguaggio associato • Necessario riprogettare il sw parallelo per
ogni macchina …
• Attualmente – Distinguiamo il modello di programmazione dall’architettura sottostante
• Il modello di programmazione visto come una concettualizzazione della macchina parallela che il programmatore usa per le sue applicazioni
– Possiamo scrivere codice corretto e portabile, che esegue su più macchine
• MPI (modello MP) è oggi l’opzione più portabile – Ma cosa possiamo dire per le prestazioni? – Purtroppo scrivere codice portabile ma veloce richiede ancora il tuning
per ogni specifica architettura
• La sfida è rendere semplice questo processo di programmazione parallela portabile ed efficiente – Campo di ricerca per algoritmi, linguaggi e strumenti di compilazione
59 CALCOLO ALTE PRESTAZIONI- S. Orlando
Valutazione delle prestazioni: Speedup
• Speedup su n processori:
• Massimo speedup Sp(n)=n con n processori: speedup lineare • Speedup superlineare se Sp(n) > n
– può essere dovuto all’uso di un algoritmo sequenziale sub-ottimo – può essere dovuto a caratteristiche dell’architettura che favoriscono la
versione parallela. • Una ragione comune dello speedup superlineare è la maggiore quantità di
memoria disponibile sulle architetture parallele, che permette di mantenere in memoria più dati del problema rispetto al caso sequenziale (senza quindi coinvolgere il disco … swapping).
60 CALCOLO ALTE PRESTAZIONI- S. Orlando
Legge di Amdahl
• Massimo speedup ottenibile nel parallelizzare un algoritmo
61 CALCOLO ALTE PRESTAZIONI- S. Orlando
Legge di Amdahl
• Lo Speedup Factor è dato da
• Se la frazione non parallelizzabile del codice sequenziale è f = 1/k, la legge di Amdahl stabilisce che il massimo speedup ottenibile per n → ∞ è:
Sp(n) = 1/f = k
62 CALCOLO ALTE PRESTAZIONI- S. Orlando
Valutazione delle prestazioni: Efficienza
• Efficienza:
• L’efficienza dà una misura della frazione del tempo totale durante il quale i vari processori sono efficacemente usati per effettuare la computazione.
• Un’efficienza uguale a 1 (Sp(n)=n) significa che tutti i processori partecipano in maniera proficua all’esecuzione dell’algoritmo
• Un’efficienza molto minore di 1 testimonia il fatto che – carico sbilanciato – processori idle – lavoro extra nella versione parallela dell’algoritmo – overhead legati alle comunicazioni/sincronizzazioni
63 CALCOLO ALTE PRESTAZIONI- S. Orlando
Valutazione delle prestazioni: Costo
• Il prodotto processor-time o Costo (o Work) di una computazione è definita come
Costo= (no. Totale di processori usati) ⋅ (tempo di esecuzione) • Il Costo di una computazione sequenziale è semplicemente ts
• Il Costo di una computazione parallela è n ⋅ tp • Poiché tp = ts / Sp(n) il Costo può essere formulato come
Costo = n ⋅ tp = n ⋅ ts / Sp(n) = ts / E(n)
• Un algoritmo parallelo è Cost-Optimal se il costo per risolverlo in parallelo è simile al costo per risolverlo in sequenziale – Efficienza ottima = 1
64 CALCOLO ALTE PRESTAZIONI- S. Orlando
Valutazione delle prestazioni: Scalabilità
• Il termine scalabilità si usa per indicare un progetto hardware che può essere espanso (aggiungendo processori, memoria, rete, I/O) per aumentare la banda totale di comunicazione/calcolo: – In questo caso parliamo di scalabilità dell’architettura o dell’hardware – Es.: il bus è una struttura di interconnessione facilmente ed
economicamente espandibile, ma non scalabile
• Esiste anche il concetto di scalabilità algoritmica • Un algoritmo parallelo è scalabile se è possibile
– a causa di un incremento della dimensione dei dati – incrementare il livello di parallelismo (usare più processori)
con un basso o limitato incremento del tempo di esecuzione • Problema
– Come aumenta il lavoro da compiere all’aumentare della dimensione dei dati ?
– Questo aumento è in relazione con la quantità di processori che dobbiamo aggiungere per garantire che i tempi di esecuzione non cambino
65 CALCOLO ALTE PRESTAZIONI- S. Orlando
Dimensione del problema e Scalabilità
• Poniamo – numero di dati da processare = dimensione del problema
• Raddoppiare la dimensione del problema non necessariamente implica il raddoppio del numero di passi computazionali – dipende dal problema – è vero per la somma di 2 matrici bidimensionali di N elementi, e
di lato n (n = N1/2) • N = n2 passi, uguali al numero di elementi di ogni matrice • se raddoppio la dimensione: 2 N = (21/2 n)2 il numero di passi
diventa: (21/2 n)2 = 2 n2 – non è vero per il prodotto di 2 matrici
• N3/2 = n3 passi, dove N = n2 è il numero di elementi di ogni matrice • se raddoppio la dimensione: 2 N = 2 n2 = (21/2 n)2 il numero di passi
diventa: (21/2 n)3 = 23/2 n3 • La definizione di scalabilità algoritmica dipende anche da
– come aumentiamo la dimensione del problema
66 CALCOLO ALTE PRESTAZIONI- S. Orlando
Legge di Gustafson
• Si assume che, all’aumentare del grado di parallelismo – viene incrementato la dimensione del problema – in modo da mantenere costante il lavoro eseguito da ogni processore
in parallelo (tempo Tp costante) • Inoltre, all’aumentare della dimensione del problema la computazione
inerentemente sequenziale si suppone fissa, e prende sempre un tempo Ts – il razionale della legge di Gustafson sta nell’uso attuale delle macchine
MPP, usate per eseguire problemi più grossi rispetto al caso seriale – in questo caso la legge di Amdahl è pessimistica, perché non tiene
conto che, all’aumentare della dimensione del problema, la frazione f del tempo inerentemente seriale solitamente diminuisce
• Lo Scaled Speedup Factor, ovvero lo speedup quando il problema è scalato con il numero di processori, è dato dalla seguente formula, dove
s = Ts/(Ts+Tp), p = Tp/(Ts+Tp), s+p = 1
67 CALCOLO ALTE PRESTAZIONI- S. Orlando
Legge di Gustafson: scaled speedup
• Lo scaled speedup della legge di Gustafson si riferisce a problemi dove, all’aumentare della dimensione, Ts rimane costante
• Se su 20 processori abbiamo una parte seriale del 5% (Ts=0,05 T), allora s = (0,05 T) / (0,05 T + 0,95 T / 20) = 0,51 e p = 1-s = 0,49
• Lo scaled speedup su 20 processori è quindi: – Spscaled(20) = s+np=0.51 + 20 * 0,49 = 10.3
• Lo scaled speedup su 40 processori è invece: – Spscaled(40) = s+np=0.51 + 40 * 0,49 = 20,1
• Se il problema non fosse stato “scalato in dimensioni” su 40 processori, lo speedup sarebbe stato: – Sp(40) = T / (0.05 T + 0.95 T / 40) = 13,6
• Nota che per applicare Gustafson, la dimensione del problema su 40 processori deve essere accresciuta (scalata), ovvero scelta in modo che il tempo totale T’ risulti uguale a T’ = Ts + 40 * Tp = 0,05 T + 40 * 0,95 T / 20 = 0,05 T + 2 * 0,95 T = 1,95 T dove T era il tempo totale del problema (più piccolo) eseguito su 20 processori
68 CALCOLO ALTE PRESTAZIONI- S. Orlando
Scaling del problema e Isoefficienza
• Funzione di isoefficienza (Kumar) – la funzione stabilisce come deve essere aumentata la dimensione del
problema per mantenere costante l’efficienza – la funzione è descritta in termini di
• W: tempo sequenziale rispetto ad un certo size del problema • Tp: tempo in parallelo • p: numero di processori • To(W, p): overhead globale (comms+waiting+replica+sbilanciamento) in
funzione di W e del grado di parallelismo • E: efficienza da mantenere costante
– To(W,p) = p Tp - W – E = S/p = W / (p Tp) = W / (W + To(W,p)) = 1 / ((W + To(W,p)) / W) – Derivando W dall’equazione dell’efficienza, si ottiene la funzione di
isoefficienza, ovvero di quanto deve aumentare W (ovvero il size del problema) all’aumentare di p per mantenere costante E: