La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Valutazione delle prestazioni di programmi paralleli

Presentazioni simili


Presentazione sul tema: "Valutazione delle prestazioni di programmi paralleli"— Transcript della presentazione:

1 Valutazione delle prestazioni di programmi paralleli
Moreno Marzolla Dip. di Informatica—Scienza e Ingegneria (DISI) Università di Bologna

2 Valutazione delle prestazioni
Copyright © 2013, 2014, 2017 Moreno Marzolla, Università di Bologna, Italy ( This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License (CC-BY-SA 4.0). To view a copy of this license, visit or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA. Valutazione delle prestazioni

3 Valutazione delle prestazioni
Credits prof. David Padua ml Valutazione delle prestazioni

4 Valutazione delle prestazioni
How fast can we run? 12 tasks, each one requiring 1s Total serial time: 12s 1 2 3 4 5 6 7 8 9 10 11 12 time Valutazione delle prestazioni Slide credit: Daivd Padua

5 Valutazione delle prestazioni
How fast can we run? What if we have 3 processors and all tasks are independent? Execution time becomes 4s 1 2 3 4 5 6 7 8 9 10 11 12 1 2 3 4 P1 5 6 7 8 P2 9 10 11 12 P3 time Valutazione delle prestazioni Slide credit: Daivd Padua

6 Valutazione delle prestazioni
How fast can we run? What if the processors can not execute the tasks with the same speed? Load imbalance (ending part of P2 and P3) 1 2 3 4 P1 5 6 7 8 P2 9 10 11 12 P3 time Valutazione delle prestazioni Slide credit: Daivd Padua

7 Valutazione delle prestazioni
How fast can we run? What if tasks are dependent? Execution time grows from 4s to 6s 1 2 3 4 Dependency graph with highlighted critical path 5 6 7 8 9 10 11 12 1 2 3 4 P1 5 6 7 8 P2 9 10 11 12 P3 time Valutazione delle prestazioni Slide credit: Daivd Padua

8 Valutazione delle prestazioni
Scalability How much faster can a given problem be solved with p workers instead of one? How much more work can be done with p workers instead of one? What impact for the communication requirements of the parallel application have on performance? What fraction of the resources is actually used productively for solving the problem? Valutazione delle prestazioni Slide credit: Daivd Padua

9 Valutazione delle prestazioni
Speedup Definiamo p = Numero di processori / core Tserial = Tempo di esecuzione del programma sequenziale Tparallel (p) = Tempo di esecuzione del programma parallelo su p processori / core Valutazione delle prestazioni

10 Speedup Di solito si definisce Tserial = Tparallel(1) Speedup S(p) Nel caso ideale, il programma parallelo impiega 1/p del tempo del programma sequenziale Solitamente S(p) ≤ p S(p) = p è il caso ottimo di speedup lineare Quando può verificarsi S(p) > p ? 𝑆 𝑝 = 𝑇 serial 𝑇 parallel 𝑝 S(p) > p nel caso di 1) multicore eterogenei (e.g., processore Cell), oppure 2) effetti dovuti alle cache: aumentando p la dimensione dei sottoproblemi diminuisce, e potrebbe essere che si sfruttano meglio le cache di primo livello dei core Valutazione delle prestazioni

11 Porzioni non parallelizzabili
Supponiamo che una frazione α del tempo di esecuzione sia dovuto ad una componente intrinsecamente seriale del programma Limitazioni algoritmiche (dipendenze tra codice) Colli di bottiglia (risorse condivise) Startup overhead Comunicazione Supponiamo che la rimanente frazione (1 - α) sia perfettamente parallelizzabile Avremo 𝑇 parallel 𝑝 = α 𝑇 serial + 1−α 𝑇 serial 𝑝 𝑇 parallel 𝑝 = α 𝑇 serial + 1−α 𝑇 serial 𝑝 𝑇 parallel 𝑝 = α 𝑇 serial + 1−α 𝑇 serial 𝑝 Valutazione delle prestazioni

12 Valutazione delle prestazioni
Esempio p = 1 p = 2 p = 4 Porzione non parallelizzabile  Tserial Tparallel(4) Tparallel(2) Tserial Porzione parallelizzabile 𝑇 parallel 𝑝 =α 𝑇 serial + 1−α 𝑇 serial 𝑝 (1 - ) Tserial Valutazione delle prestazioni

13 Valutazione delle prestazioni
Esempio Un programma ha Tserial = 20s Il 90% del tempo di esecuzione è speso in una parte che può essere perfettamente parallelizzata Quindi il tempo di esecuzione della versione parallela con p processori si può esprimere come 𝑇 parallel 𝑝 = 0.1 𝑇 serial 𝑇 serial 𝑝 = 𝑝 Valutazione delle prestazioni

14 Valutazione delle prestazioni
Esempio (cont.) Lo speedup è Quale è lo speedup massimo ottenibile quando p → +∞ ? 𝑆 𝑝 = 𝑇 serial 0.1× 𝑇 serial + 0.9× 𝑇 serial 𝑝 = 𝑝 Valutazione delle prestazioni

15 Valutazione delle prestazioni
Legge di Amdahl Quale è lo speedup massimo ottenibile? 𝑆 𝑝 = 𝑇 serial 𝑇 parallel 𝑝 = 𝑇 serial α 𝑇 serial + 1−α 𝑇 serial 𝑝 = 1 α+ 1−α 𝑝 Legge di Amdahl Gene Myron Amdahl (1922—) Valutazione delle prestazioni

16 Valutazione delle prestazioni
Legge di Amdahl 𝑆 𝑝 = 1 α+ 1−α 𝑝 Da otteniamo che, per p tendente a +∞, lo speedup asintotico è 1 / α Se una frazione α di un programma seriale non è parallelizzabile, allora lo speedup è limitato superiormente da 1/α, indipendentemente dal numero di processori disposizione Valutazione delle prestazioni

17 Valutazione delle prestazioni
Speedup Note: scala log-log Frazione non parallelizzabile 0.1% 1% 10% 20% Valutazione delle prestazioni

18 Valutazione delle prestazioni
Esempio M. Marzolla, Fast Training of Support Vector Machines on the Cell Processor, Neurocomputing, Volume 74, Issue 17, October 2011, pp. 3700–3707, ISSN ; disponibile all'indirizzo Valutazione delle prestazioni

19 Valutazione delle prestazioni
Esempio RS(n) = TSPE,n / TSPE,1 Valutazione delle prestazioni

20 Valutazione delle prestazioni
Esempio Valutazione delle prestazioni

21 Valutazione delle prestazioni
Scaling Efficiency Strong Scaling: Fissata la dimensione del problema, si incrementa il numero di processori p La quantità complessiva di lavoro svolto da tutti processori rimane costante La quantità di lavoro svolto da ciascun processore diminuisce all'aumentare di p L'obbiettivo è ridurre il tempo di esecuzione Weak Scaling: Fissata la quantità di lavoro svolto da ciascun processore, si aumenta il numero p di processori Quindi aumenta la quantità totale di lavoro svolto complessivamente dai p processori L'obbiettivo è di risolvere problemi “più grandi” Valutazione delle prestazioni

22 Strong Scaling Efficiency
E(p) = Strong Scaling Efficiency dove Tserial = Tempo di esecuzione del programma sequenziale Tparallel (p) = Tempo di esecuzione del programma parallelo su p processori / core 𝐸 𝑝 = 𝑆 𝑝 𝑝 = 𝑇 serial 𝑝× 𝑇 parallel 𝑝 Valutazione delle prestazioni

23 Strong scaling efficiency e legge di Amdahl
0.1% 1% 10% 20% Frazione non parallelizzabile Valutazione delle prestazioni Nota: scala x logaritmica

24 Weak Scaling Efficiency
W(p) = Weak Scaling Efficiency dove T1 = tempo necessario a completare 1 “unità di lavoro” con 1 processore Tp = tempo necessario a completare p “unità di lavoro” con p processori 𝑊 𝑝 = 𝑇 1 𝑇 𝑝 Valutazione delle prestazioni

25 Valutazione delle prestazioni
Esempio Vedi omp-matmul.c demo-strong-scaling.sh calcola i tempi da usare per strong scaling (demo-strong-scaling.ods) demo-weak-scaling.sh calcola i tempi da usare per weak scaling (demo-weak-scaling.ods) Osservazione importante: Fissato n, la quantità di "lavoro" necessario per calcolare il prodotto tra due matrici n ´ n è Θ(n3) Per raddoppiare il lavoro, non dobbiamo raddoppiare n! La quantità di lavoro necessario per calcolare il prodotto di due matrici (2n ´ 2n) è Θ(8n3), cioè otto volte il caso n ´ n Per raddoppiare il lavoro, occorre usare una matrice di dimensione 3 2 𝑛 × 3 2 𝑛 Valutazione delle prestazioni

26 Misurazione dei tempi Per valutare sperimentalmente speedup ed efficienza, il tempo di esecuzione che viene misurato è il wall clock time del programma, ESCLUDENDO il tempo necessario a leggere l'input e a scrivere l'output. Parte in cui sono svolte le computazioni #include "hpc.h" ... double start, finish; /* eventuale lettura input da file; questo NON va considerato */ start = hpc_gettime(); /* parte di codice di cui vogliamo misurare il wall clock time */ finish = hpc_gettime(); printf(“The elapsed time = %e seconds\n”, finish – start); /* eventuale scrittura output su file; questo NON va considerato */ Valutazione delle prestazioni

27 Misurazione del wall-clock time
Per i programmi OpenMP: omp_get_wtime() Per i programmi MPI: MPI_Wtime() Soluzione “generica”: clock_gettime() Soluzione SBAGLIATA: clock() NAME clock - Determine processor time SYNOPSIS #include <time.h> clock_t clock(void); DESCRIPTION The clock() function returns an approximation of processor time used by the program. Il problema del “processor time” è che viene sommato per tutti i core: questo significa ad esempio che un programma che impiega meta' del tempo se eseguito su due core ritornerà lo stesso processor time! Valutazione delle prestazioni

28 Postilla: Come presentare i risultati
Valutazione delle prestazioni

29 Valutazione delle prestazioni
Regole di base Presentare i risultati in modo da richiedere il minor sforzo possibile da parte del lettore Usare nomi piuttosto che simboli nella legenda Fornire abbastanza informazione da rendere il grafico autocontenuto, limitando i rimandi al testo Utilizzare pratiche comunemente accettate Mostrare ciò che la gente si aspetta: ci si aspetta che l'origine dei grafici sia (0,0); che la causa sia mostrata sull'asse x e l'effetto sull'asse y; ecc... Valutazione delle prestazioni

30 Utilizzare le scale degli assi in maniera adeguata
Giocando con la scala dei grafici, è possibile enfatizzare oppure minimizzare le differenze Valutazione delle prestazioni

31 Valutazione delle prestazioni
Mostrare tutti i dati Valutazione delle prestazioni

32 Attenzione a combinare i grafici
Per rendere più “drammatico” l'effetto, si tende spesso a presentare due misure correlate tra loro sullo stesso grafico Speedup Wall clock time Num. of processors Valutazione delle prestazioni

33 Usare nomi piuttosto che simboli
1 job/sec m=2 2 job/sec m=3 3 job/sec Valutazione delle prestazioni

34 Non collegare punti se i valori intermedi non esistono
MIPS 68000 68010 68020 68030 CPU Type Valutazione delle prestazioni

35 Valutazione delle prestazioni
Grafico inutile 123.54 Valutazione delle prestazioni

36 Valutazione delle prestazioni
Consigli vari Tutte le immagini (inclusi i grafici) devono includere una didascalia con la numerazione e la descrizione Idealmente la descrizione dovrebbe essere sufficientemente completa da consentire al lettore di interpretare il grafico anche senza leggere la spiegazione presente nel testo Tutte le immagini devono essere richiamate e descritte nel corpo del documento Valutazione delle prestazioni

37 Valutazione delle prestazioni
Esempio Valutazione delle prestazioni

38 Example of very good graphic
Modern redrawing of Charles Minard's map of Napoleon's disastrous Russian campaign of The graphic is notable for its representation in two dimensions of six types of data: the number of Napoleon's troops; distance; temperature; the latitude and longitude; direction of travel; and location relative to specific dates (Image and description from Wikipedia) Valutazione delle prestazioni

39 Valutazione delle prestazioni
Per approfondire Edward R. Tufte, The Visual Display of Quantitative Information, 2nd ed., Graphics Press, 2011, ISBN Valutazione delle prestazioni


Scaricare ppt "Valutazione delle prestazioni di programmi paralleli"

Presentazioni simili


Annunci Google