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 Algoritmi Avanzati--modulo 2
Copyright © 2013, 2014, Moreno Marzolla, Università di Bologna, Italy ( This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License (CC-BY-SA). 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. Algoritmi Avanzati--modulo 2

3 Algoritmi Avanzati--modulo 2
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 Nel caso ideale, il programma parallelo impiega 1/p del tempo del programma sequenziale Tparallel (p) = Tserial / p Algoritmi Avanzati--modulo 2

4 Speedup ed Efficienza Speedup S(p) Efficienza E(p)
Spesso si definisce Tserial = Tparallel(1) Speedup S(p) Efficienza E(p) Solitamente S(p) ≤ p S(p) = p è il caso ottimo di speedup lineare Quando può verificarsi S(p) > p ? 𝑆 𝑝 = 𝑇 serial 𝑇 parallel 𝑝 𝐸 𝑝 = 𝑆 𝑝 𝑝 = 𝑇 serial 𝑝× 𝑇 parallel 𝑝 Algoritmi Avanzati--modulo 2

5 Porzioni non parallelizzabili
Supponiamo che una frazione α del tempo di esecuzione sia dovuto ad una componente intrinsecamente seriale del programma Supponiamo che la rimanente frazione (1 - α) del tempo di esecuzione sia relativo ad una componente che puo' essere parallelizzata perfettamente Quindi avremo 𝑇 parallel 𝑝 =α 𝑇 serial + 1−α 𝑇 serial 𝑝 Algoritmi Avanzati--modulo 2

6 Algoritmi Avanzati--modulo 2
Esempio P = 1 P = 2 P = 4 Porzione non parallelizzabile  Tserial Tparallel(4) Tparallel(2) Tserial Porzione parallelizzabile 𝑇 parallel 𝑝 =α 𝑇 serial + 1−α 𝑇 serial 𝑝 (1 - ) Tserial Algoritmi Avanzati--modulo 2

7 Algoritmi Avanzati--modulo 2
Legge di Amdahl Quale è lo speedup ottenibile? 𝑆 𝑝 = 𝑇 serial 𝑇 parallel 𝑝 = 𝑇 serial α 𝑇 serial + 1−α 𝑇 serial 𝑝 = 1 α+ 1−α 𝑝 Legge di Amdahl Gene Myron Amdahl (1922—) Algoritmi Avanzati--modulo 2

8 Algoritmi Avanzati--modulo 2
Legge di Amdahl 𝑆 𝑝 = 1 α+ 1−α 𝑝 Da otteniamo che, per p tendente a +infinito, lo speedup asintotico è 1 / α Se una frazione α di un programma seriale non è parallelizzabile, allora lo speedup è limitato superiormente da 1/α, indipendentemente dal numero di core a disposizione Algoritmi Avanzati--modulo 2

9 Algoritmi Avanzati--modulo 2
Speedup Note: scala log-log Frazione non parallelizzabile 0.1% 1% 10% 20% Algoritmi Avanzati--modulo 2

10 Algoritmi Avanzati--modulo 2
Efficiency 0.1% 1% 10% 20% Frazione non parallelizzabile Algoritmi Avanzati--modulo 2

11 Algoritmi Avanzati--modulo 2
Scalabilità Un algoritmo è scalable se riesce a gestire problemi di dimensioni crescenti Se riusciamo a incrementare il numero di processiori mantenendo l'efficienza e la dimensione del problema costanti, l'algoritmo è strongly scalable. Se riusciamo a mantenere l'efficienza costante incrementando contemporaneamente la dimensione del problema e il numero di core, l'algoritmo è weakly scalable. Algoritmi Avanzati--modulo 2

12 Algoritmi Avanzati--modulo 2
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. theoretical function omp_get_wtime MPI_Wtime Algoritmi Avanzati--modulo 2

13 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. double start, finish; /* lettura dei dati di input da file; questo NON va considerato */ start = Get_current_time(); /* omp_get_wtime() oppure MPI_Wtime() */ /* parte di codice di cui vogliamo misurare il wall clock time */ finish = Get_current_time(); printf(“The elapsed time = %e seconds\n”, finish – start); /* scrittura dell'output; questo NON va considerato */ Questa è la parte in cui sono svolte le computazioni, Algoritmi Avanzati--modulo 2

14 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. Algoritmi Avanzati--modulo 2

15 Algoritmi Avanzati--modulo 2
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 Algoritmi Avanzati--modulo 2

16 Algoritmi Avanzati--modulo 2
Esempio RS(n) = TSPE,n / TSPE,1 Algoritmi Avanzati--modulo 2

17 Algoritmi Avanzati--modulo 2
Esempio Algoritmi Avanzati--modulo 2


Scaricare ppt "Valutazione delle prestazioni di programmi paralleli"

Presentazioni simili


Annunci Google