• Non ci sono risultati.

Valutazione delle prestazioni Valutazione delle prestazioni di programmi paralleli di programmi paralleli

N/A
N/A
Protected

Academic year: 2021

Condividi "Valutazione delle prestazioni Valutazione delle prestazioni di programmi paralleli di programmi paralleli"

Copied!
17
0
0

Testo completo

(1)

Valutazione delle prestazioni Valutazione delle prestazioni

di programmi paralleli di programmi paralleli

Moreno Marzolla

Dip. di Informatica—Scienza e Ingegneria (DISI) Università di Bologna

moreno.marzolla@unibo.it

(2)

Copyright © 2013, 2014, Moreno Marzolla, Università di Bologna, Italy (http://www.moreno.marzolla.name/teaching/AA2014/)

This work is licensed under the Creative Commons Attribution-ShareAlike 3.0 License (CC-BY-SA). To view a copy of this license, visit http://creativecommons.org/licenses/by- sa/3.0/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San

Francisco, California, 94105, USA.

(3)

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

T

parallel

(p) = T

serial

/ p

(4)

Speedup ed Efficienza

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 ?

S ( p)= T

serial

T

parallel

( p)

E ( p)= S ( p)

p = T

serial

p×T

parallel

( p)

Spesso si definisce Tserial = Tparallel(1)

(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

T

parallel

( p)=α T

serial

+ ( 1−α)T

serial

p

(6)

Esempio

Porzione non parallelizzabile

Porzione

parallelizzabile

P = 1 P = 2 P = 4

Tserial Tserial) Tserial

T

parallel

( p)=α T

serial

+ ( 1−α)T

serial

p

Tparallel(2) Tparallel(4)

(7)

Legge di Amdahl

Quale è lo speedup ottenibile?

S ( p) = T

serial

T

parallel

( p) = T

serial

α T

serial

+ ( 1−α)T

serial

p

= 1

α+ 1−α p

Gene Myron Amdahl (1922—)

Legge di Amdahl

(8)

Legge di Amdahl

Da

otteniamo che, per p tendente a +infinito, lo speedup asintotico è 1 / α

S ( p)= 1

α+ ( 1−α) p

Se una frazione α di un programma seriale non è parallelizzabile, allora lo speedup è limitato superiormente da 1/α, indipendentemente dal numero di core a disposizione

(9)

Speedup

Frazione non parallelizzabile

0.1%

1%

10%

20%

Note: scala log-log

(10)

Efficiency

Frazione non parallelizzabile

0.1%

1%

10%

20%

(11)

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.

(12)

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

(13)

Algoritmi Avanzati--modulo 2 16

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,

(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

(15)

Esempio

M. Marzolla, Fast Training of Support Vector Machines on the Cell Processor,

Neurocomputing, Volume 74, Issue 17, October 2011, pp. 3700–3707, ISSN 0925-2312;

disponibile all'indirizzo http://www.moreno.marzolla.name/publications/

(16)

Esempio

RS(n) = TSPE,n / TSPE,1

(17)

Esempio

Riferimenti

Documenti correlati

- esame della documentazione relativa ai dati oggetti di attestazione predisposta dal Responsabile della Trasparenza e dai Responsabili della pubblicazione;..

- esame della documentazione relativa ai dati oggetti di attestazione predisposta dal Responsabile della Trasparenza e dai Responsabili della pubblicazione;..

L’OIV/ o altro organo con funzioni equivalenti (Nucleo di Valutazione delle Prestazioni) ha svolto i propri accertamenti, tenendo anche conto dei risultati e degli elementi

Il Responsabile della Trasparenza ha curato direttamente le avvenute pubblicazioni prendendo direttamente contatto con i singoli titolari della pubblicazione dei dati e verificandone

La capacità ed efficacia del Sistema nell’orientare i comportamenti del vertice politico- amministrativo e della dirigenza dell’azienda nella fase di definizione

Prestazioni da riportare come voce singola su impegnativa AUSL - Mobilizzazione delle articolazioni (20-30 sedute). Prestazioni non in regime di convenzione - Massoterapia

● Ma soprattutto cerchiamo di capire se e quanto e' possibile migliorare l'algoritmo sequenziale (vedi lezione 6) e/o se esistono algoritmi sequenziali

E’ possibile così stabilire il valore del carico alimentato da un convertitore a commutazione di tipo Buck monitorando la sua tensione di uscita, inserendo in modo