misurare il tempo di esecuzione

24
Misurare il tempo di esecuzione MPI prevede delle primitive che permettono di identificare una parte di codice e misurarne il tempo di esecuzione /* Dichiarazione delle variabili*/ double starttime, endtime; ... starttime = MPI_Wtime(); /* Codice */ endtime = MPI_Wtime(); (endtime – starttime) fornisce il tempo di esecuzione in SECONDI. Se il codice da misurare è in un ciclo si può fare nel modo seguente Double s1, s2, e1, e2, acc = 0 s1 = MPI_Wtime(); For(....) { s2 = MPI_Wtime(); /* Codice1 */ e2 = MPI_Wtime(); acc +=(e2-s2); /* Codice2 */ } e1 = MPI_Wtime(); Tcodice1 è acc, Tcodice2 è e1-s1-acc

Upload: dooley

Post on 25-Feb-2016

29 views

Category:

Documents


1 download

DESCRIPTION

Misurare il tempo di esecuzione. MPI prevede delle primitive che permettono di identificare una parte di codice e misurarne il tempo di esecuzione /* Dichiarazione delle variabili*/ double starttime, endtime; ... starttime = MPI_Wtime(); /* Codice */ endtime = MPI_Wtime(); - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Misurare il tempo di esecuzione

Misurare il tempo di esecuzioneMPI prevede delle primitive che permettono di identificare una parte di codice e misurarne il tempo di esecuzione/* Dichiarazione delle variabili*/double starttime, endtime;...starttime = MPI_Wtime();

/* Codice */endtime = MPI_Wtime();

(endtime – starttime) fornisce il tempo di esecuzione in SECONDI.

Se il codice da misurare è in un ciclo si può fare nel modo seguenteDouble s1, s2, e1, e2, acc = 0s1 = MPI_Wtime();For(....) {

s2 = MPI_Wtime(); /* Codice1 */ e2 = MPI_Wtime();acc +=(e2-s2);/* Codice2 */

} e1 = MPI_Wtime();

Tcodice1 è acc, Tcodice2 è e1-s1-acc

Page 2: Misurare il tempo di esecuzione

Strumenti automatici per l’analisi delle prestazioni e del comportamento di programmi MPI

MPE: MPI Parallel EnvironmentMain components:• A set of routines for creating log files for examination

by graphical visualization tool jumpshot4• A shared display parallel X graphics library• Routines for sequentializing a section of code being

executed in parallel• Debugger setup routinesLog files format: SLOG-2 Scalable Log

Page 3: Misurare il tempo di esecuzione

Profiling Libraries:

1. MPIProfiling interface Accumulation of time spent in MPI routines;

2. Automatic Logging generates file of timestamped states

3. Customized logging

1 + 2 triggered on occurrence of MPI calls;

3 triggered on occurrence of user defined states/events

Page 4: Misurare il tempo di esecuzione

JUMPSHOT-4 viewer of SLOG-2 files• Big log files (Gigabytes);• Support level of details scroll up and down; zooming• High level abstraction preview drawable summarize

real entities;• Timeline canvas

– Timeline vs time coordination system– Each point in the canvas is identified by two numbers: a

timestamp and a timeline ID

Page 5: Misurare il tempo di esecuzione

Two kinds of drawable objects:• Primitive the simplest drawable, the basic elements of SLOG-

2 files• Categorized wrt their topology• “state”, “arrow” and “event” • state and arrow are identified by two points in the timeline

canvas (hence two pairs):• State start timeline ID= final timeline ID• Arrow may have final timeline different from initial• Event identified by only one point• Composite is a collection of primitive or other composite

drawable provides level o detail• Preview drawable provides high level description of what is

going on.

Page 6: Misurare il tempo di esecuzione

Edge detection

Ogni processo è responsabile dell’elaborazione di una porzione dei dati di input:

• Durante la fase di input i dati sono acquisiti in parallelo per blocchi di righe

• Nella fase di computazione processi “vicini” scambiano i bordi dei dati contigui – Tale scambio viene iterato ad ogni passo di un ciclo for presente nel codice

• Durante la fase di output i dati vengono raccolti in parallelo in un unico file

Page 7: Misurare il tempo di esecuzione

Edge detection

Esempio su 4 processi:

f( )

f( )

f( )

Page 8: Misurare il tempo di esecuzione

Jumpshot-4

Page 9: Misurare il tempo di esecuzione

Comunicazioni Preview arrow: rappresenta le comunicazioni

tra due preview state.

Messaggio: indica le informazioni della singola comunicazione

Page 10: Misurare il tempo di esecuzione

Histogram for edge detection

Page 11: Misurare il tempo di esecuzione
Page 12: Misurare il tempo di esecuzione
Page 13: Misurare il tempo di esecuzione
Page 14: Misurare il tempo di esecuzione
Page 15: Misurare il tempo di esecuzione
Page 16: Misurare il tempo di esecuzione
Page 17: Misurare il tempo di esecuzione
Page 18: Misurare il tempo di esecuzione
Page 19: Misurare il tempo di esecuzione
Page 20: Misurare il tempo di esecuzione
Page 21: Misurare il tempo di esecuzione
Page 22: Misurare il tempo di esecuzione
Page 23: Misurare il tempo di esecuzione

Come ottenere questi dati

Prima di tutto bisogna compilare il codice cosìmpicc -c nomefile.cmpicc -o nomefile -mpilog nomefile.o [altri .o] Dopo l'esecuzione troverete un file

nomefile.clog Si lancia il tool jumpshot edge.clog Se viene chiesta la conversione fatela

Page 24: Misurare il tempo di esecuzione