Esempi di Applicazioni Parallele e di Metodologie di parallelizzazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Esempi di Applicazioni Parallele e di Metodologie di parallelizzazione"

Transcript

1 Esempi di Applicazioni Parallele e di Metodologie di parallelizzazione Esempi Applicazioni Parallele Applicazioni embarassing parallel Es.. Calcolo del π Metodo di parallelizzazione Task farm statico Applicazioni con computazioni regolari su ciascun elemento del dominio Es., Prodotto di matrici dense Decomposizione geometrica Es., Metodi delle differenze finite per la soluzione di PDE Applicazioni con computazioni non regolari sugli elementi del dominio Es., Fattorizzazione LU (domini densi) Decomposizione a grana fine Es., Simulazione di modelli oceanografici Applicazioni intrinsecamente dinamiche Es. N-queen problem, problemi di ottimizzazione Es. Problemi di dinamica molecolare, N-body Task farm dinamico Riconfigurazione dinamica Michele Colajanni Esempi programmi paralleli 2/51 1

2 Task farm statico: Calcolo del π 4 f(x) = 1+ x 2 4 ð = 1 0 f(x) dx f R (f) = h n n i= 1 f(x ) i Regola del rettangolo 0 0 π = area under f(x) π=area sottesa da f(x) h = 1/n Ampiezza dell intervallo x = h(i 0. 5 ) i Punti intermedi Michele Colajanni Esempi programmi paralleli 3/51 Regola dei rettangoli Michele Colajanni Esempi programmi paralleli 4/51 2

3 Decomposizione per la regola dei rettangoli In verde, i domini assegnati al processo Michele Colajanni Esempi programmi paralleli 5/51 Calcolo del π (versione sequenziale) #include <math< math.h> main() {int n, i; double PI25DT = ; double h, sum,, pi; while (1) {printf( Enter the number of intervals ); scanf( %d, &n ); if (n == 0) break; else { h=1.0/(double) n; sum=0.0; for (i=1; i<=n; i++) { x=h*((double) i-0.5); i } sum=sum+(4.0/(1.0+x*x)); pi=h*sum; printf( pi ( pi is approximately is approximately %.16f, pi); %.16f, pi); } } } Michele Colajanni Esempi programmi paralleli 6/51 3

4 Funzioni MPI utilizzate nel Calcolo π int MPI_Init(int *argc, char**argv) int MPI_Comm_size(MPI_Comm comm, int *size) int MPI_Comm_rank(MPI_Comm comm, int *rank) int MPI_Bcast(void *buf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm) int MPI_Finalize(void) Funzioni di temporizzazione double MPI_Wtime(void) ~ secondi double MPI_Wtick(void) ~ tempo in secondi tra due tick del clock Uso: Una chiamata all inizio della parte computazionale Una chiamata alla fine della parte computazionale Evitare di considerare l INPUT iniziale e l OUTPUT finale per il calcolo dello SPEEDUP Michele Colajanni Esempi programmi paralleli 7/51 Calcolo del π (versione parallela - MPI) #include mpi mpi.h #include <math< math.h> char *argc[]; {int n, myid, numprocs,, i, rc; double PI25DT= ; double mypi,, pi, h, sum,, x, a; Task farm implementato come MPI_Init Init(& (&argc,, &argv& argv); Programma SPMD MPI_Comm Comm_size(MPI_COMM_WORLD, &numprocs& numprocs); MPI_Comm Comm_rank(MPI_COMM_WORLD, &myid& myid); while (1) {if (myid == 0) {printf( Enter the number of intervals: : (0 quits) ) ); scanf( %d, &n); } MPI_Bcast Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); if (n == 0) break; else { h=1.0/(double double) ) n; sum=0.0; for (i=myid myid+1; i<=n; i+=numprocs numprocs) { x=h*((double double) ) i-0.5); i sum+=(0.4/(1.0+x*x)); } mypi=h* =h*sum; MPI_Reduce(&myip myip,, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myip == 0) printf( pi is approximately %.16f, Error is %.16f\n, pi, fabs(pi (pi-pi25dt)); } } MPI_Finalize Finalize(); } Michele Colajanni Esempi programmi paralleli 8/51 4

5 Decomposizione a grana fine: Fattorizzazione LU Versione sequenziale for k=1 to n-1 do for s=k+1 to n do l sk =a sk /a kk /*calcolo dei moltiplicatori*/ for j=k+1 to n do for i=k+1 to n do a ij =a ij -l ik a kj /*Aggiornamento della sotto-matrice Ak */ (k,k) A k 1 problema della parallelizzazione SPMD: Come decomporre la matrice? Michele Colajanni Esempi programmi paralleli 9/51 Decomposizione del dominio (row oriented) A k A k BLOCK MAPPING WRAP MAPPING (CYCLIC) A k REFLECTION MAPPING Michele Colajanni Esempi programmi paralleli 10/51 5

6 Fattorizzazione LU parallela (column oriented) A k WRAP COLUMN MAPPING Algoritmo SPMD (column) for k=1 to n-1 1 do if (k in mycolumns) then for i=k+1 to n do l ik =a ik /a kk broadcast(column column k ) l ik else receive(column column k ) l ik for j=k+1 to n do if (j in mycolumns) then for i=k+1 to n do a ij =a ij -l ik a kj Michele Colajanni Esempi programmi paralleli 11/51 Fattorizzazione LU parallela (row oriented) for k=1 to n-1 do for i=k+1 to n do l ik =a ik /a kk /*calcolo dei moltiplicatori*/ for i=k+1 to n do for j=k+1 to n do a ij =a ij -l ik a kj /*aggiornamento elementi di A*/ (k,k) A k La decomposizione a blocchi di righe ha un problema evidente. Quale? Si sceglie la decomposizione per righe ciclica Algorimo SPMD (row) for k=1 to n-1 1 do if (k in mynode) then broadcast(row row k ) else receive(row row k ) for all (i>k in mynode) ) do i ik =a ik /a kk for all (i>k in mynode) ) do for j=k+i to n do a ij =a ij -l ik a kj Michele Colajanni Esempi programmi paralleli 12/51 6

7 Fattorizzazione con Column Pivoting for k=1 to n-1 1 do /*column partial pivoting*/ if (<I own column k> ) then <search for pivot k in mycolumn k > if (manager= manager=mynode) then <send pivot index> else receive(pivot index) if (k pivot index) then <swap(column k, column pivot )> /*LU Factorization*/ if (<I own row k >) then <send myrow k > else receive(myrow k ) if (<I own column k >) then <compute and send mymultiplyers k > else receive(mymultiplyers k ) for all(<i (<i k+1 in myrow i >) do for all (<j k+1 in mycolumn j >) do a ij =a ij -l ik a kj Michele Colajanni Esempi programmi paralleli 13/51 Decomposizione geometrica Dominio di Ω 2 : griglia N*N punti distribuita su griglia L*L: Ad ogni passo = F Dopo ogni passo scambio di valori delle aree di overlap 2 T calc = N N L ( / L) T comm = / Tcomm / Tcalc L / N Michele Colajanni Esempi programmi paralleli 14/51 7

8 Algoritmo di Jacobi Si consideri un equazione differenziale alle derivate parziali ellittica, per cui si vuole determinare la soluzione allo stato stabile. Una nota tecnica risolutiva (iterativa) è quella che utilizza il Metodo di Jacobi. Dato come dominio una griglia di N*N punti, a ciascun passo iterativo, ogni punto della griglia viene aggiornato con una combinazione lineare dei punti della griglia adiacenti (calcolati al passo precedente): x k + 1 i = 1 ( a a n j i k ij x j b ) i i=1,,n k=0,1, Componente da aggiornare al passo k+1 Componenti aggiornate al passo k con cui si aggiorna l elemento (i,j) Michele Colajanni Esempi programmi paralleli 15/51 Algoritmo JACOBI int i, j; Algoritmo sequenziale double u[n][n], unew[n][n]; for (j=0; j++; j<n) for (i=0; i++; i<n) unew[i][j]=0.25*(u[i [i][j]=0.25*(u[i-1][j])+u[i][j+1]+u[i][j-1]+u[i+1][j]) 1]+u[i+1][j])-h*h*f(i,j) Processo 2 i,j+1 Decomposizione del dominio dei dati: per blocchi di righe i-1,j i,j-1 i+1,j Halo Processo 1 Processo 0 Michele Colajanni Esempi programmi paralleli 16/51 8

9 Jacobi: Algoritmo Parallelo MPI-Fortran Get a new communicator for a decomposition of the domain and my position in it call MPI_CART_CREATE(MPI_COMM_WORLD, 1, numprocs,.false.,.true., comm1d, ierr) call MPI_COMM_RANK(cimm1d, myid, ierr) call MPI_CART_SHIFT(comm1d, 0, 1, nbrbottom, nbrtop, ierr) compute the actual decomposition call MPE_DECOMP1D(ny, numprocs, myid, s, e) initialize the right-hand-side (f) and the initial solution guess (a) call ONEDINIT(a, b, f, nx, s, e) actually do the computation. Note the use of a collective operation to check for convergence, and a do-loop to bound the number of iterations. do 10 it=1, maxit get ghost points call EXCHNG1(a, nx, s, e, comm1d, nbrbottom, nbrtop) perform one Jacobi sweep call SWEEP1D(a, f, nx, s, e, b) repeat to get a solution back into array a call EXCHNG1(b, nx, s, e, comm1d, nbrbottom, nbrtop) call SWEEP1D(b, f, nx, s, e, a) check for convergence call MPI_ALLREDUCE(diffw, diffnorm, 1, MPI_DOUBLE_PRECISION, MPI_SUM, comm1d, ierr) if (diffnorm.lt. 1.0e-5) goto 20 if (myid.eq. 0) print *, 2*it, Difference is, duffnorm continue if (myid.eq. 0) print Failed to converge continue if (myid.eq. 0) then print *, Converged after, 2*it, Iterations endif Michele Colajanni Esempi programmi paralleli 17/51 (1) Routine per Scambio Messaggi in Jacobi subroutine exchng1(a, nx,, s, e, comm1d, nbrbottom, nbrtop) include mpif.h integer nx, s, e double precision a(0:nx+1, s-1:e+1) integer comm1d, nbrbottom, nbrtop integer status(mpi_status_size), ierr call MPI_SEND (a(1,e), nx, MPI_DOUBLE_PRECISION, nbr, 0, comm1d, ierr) call MPI_RECV (a(1,s-1), nx, MPI_DOUBLE_PRECISION, nbrbottom, 0, comm1d, status, ierr) call MPI_SEND (a(1,s), nx, MPI_DOUBLE_PRECISION, nbrbottom, 1, comm1d, ierr) call MPI_RECV (a(1,e+1), nx, MPI_DOUBLE_PRECISION, nbrtop, 1, comm1d, status, ierr) return end Michele Colajanni Esempi programmi paralleli 18/51 9

10 (2) Routine per Scambio Messaggi in Jacobi (uso di coppie di SEND/RECEIVE) subroutine exchng1(a, nx,, s, e, comm1d, nbrbottm, nbrtop) include mpif.h integer nx, s, e double precision a(0:nx+1,s-1:e+1) integer comm1d, nbrbottom, nbrtop, rank, coord integer status(mpi_status_size), ierr call MPI_COMM_RANK(comm1d, rank, ierr) call MPI_CART_COORDS(comm1d, rank, 1, coord, ierr) if (mod(coord, 2).eq. 0) then call MPI_SEND(a(1,e), nx, MPI_DOUBLE_PRECISION, nbrtop, 0, comm1d, ierr) call MPI_RECV(a(1,s-1) nx, MPI_DOUBLE_PRECISION, nbrbottom, 0, comm1d, status, ierr) call MPI_SEND(a(1,s), nx, MPI_DOUBLE_PRECISION, nbrbottom, 1, comm1d, ierr) call MPI_RECV(a(1,e+1), nx, MPI_DOUBLE_PRECISION, nbrtop, 1, comm1d, status, ierr) else call MPI_RECV(a(1,s-1) nx, MPI_DOUBLE_PRECISION, nbrbottom, 0, comm1d, status, ierr) call MPI_SEND(a(1,e), nx, MPI_DOUBLE_PRECISION, nbrtop, 0, comm1d, ierr) call MPI_RECV(a(1,e+1), nx, MPI_DOUBLE_PRECISION, nbrtop, 1, comm1d, status, ierr) call MPI_SEND(a(1,s), nx, MPI_DOUBLE_PRECISION, nbrbottom, 1, comm1d, ierr) endif return (3) Routine per Scambio Messaggi in Jacobi (uso di MPI_SENDRECEIVE) Michele Colajanni Esempi programmi paralleli 19/51 (4) Routine per Scambio Messaggi in Jacobi (Comunicazioni Non-Bloccanti) subroutine exchng1(a, nx,, s, e, comm1d, nbrbottom, nbrtop) include mpif.h integer nx, s, e double precision a(0:nx+1,s-1:e+1) integer comm1d, nbrbottom, nbrtop integer status_array(mpi_status_size, 4), ierr, req(4) call MPI_IRECV(a(1,s-1), nx, MPI_DOUBLE_PRECISION, nbrbottom, 0, comm1d, req(1), ierr) call MPI_IRECV(a(1,e+1), nx, MPI_DOUBLE_PRECISION, nbrtop, 1, comm1d, req(2), ierr) call MPI_ISEND(a(1,e), nx, MPI_DOUBLE_PRECISION, nbrtop, 0, comm1d, req(3), ierr) call MPI_ISEND(a(1,e), nx, MPI_DOUBLE_PRECISION, nbrbottom, 1, comm1d, req(4), ierr) call MPI_WAITALL(4, req, status_array, ierr) return end Michele Colajanni Esempi programmi paralleli 20/51 10

11 Motivazione per Comunicazioni Non-Bloccanti boundary halo array boundary halo for(iterations) update all cells; send boundary values to neighborours; receive halo values from neighborours; for(iterations) update boundary cells; processo initiate sending of boundary values to neighborours; initiate receipt of halo velues from neighborours; update non-boundaru cells; wait for completion of sending of boundary values; wait for completion of receipt of halo values; Michele Colajanni Esempi programmi paralleli 21/51 Modalità di Comunicazione Non Bloccanti SEND Il processo mittente esegue la SEND ma non si blocca. Può continuare ad eseguire tutte le operazioni che non alterano il buffer di SEND. Analoghe versioni delle comunicazioni bloccanti 1. MPI_ISEND 2. MPI_ISSEND 3. MPI_IBSEND 4. MPI_IRSEND RECEIVE Il processo destinatario esegue la RECEIVE ma non si blocca. Può continuare ad eseguire tutte le operazioni che non alterano il buffer di RECEIVE. RECEIVE non bloccanti possono anche essere combinate con SEND bloccanti e viceversa. MPI_IRECV Stessi parametri + uno molto importante: request (serve per il testing sull effettiva conclusione della comunicazione) Michele Colajanni Esempi programmi paralleli 22/51 11

12 Routine di testing per Comunicazioni Non Bloccanti Test singoli 1. MPI_TEST 2. MPI_WAIT Test multipli 1. MPI_TESTALL 2. MPI_WAITALL 3. MPI_TESTSOME 4. MPI_WAITSOME Michele Colajanni Esempi programmi paralleli 23/51 Parallelizzazioni più complesse: Algoritmo Gauss-Seidel L algoritmo di Jacobi è una tecnica iterativa che converge piuttosto lentamente; pertanto su elaboratori sequenziali si preferiscono utilizzare altri algoritmi quali il metodo di Gauss- Seidel ed il Successive OverRelaxation method (SOR), che convergono con una rapidità di circa due volte maggiore [Hagel 81]. Il metodo di Jacobi aggiorna il vettore i iterazione utilizzando solo i valori ottenuti al passo iterativo precedente. Il metodo SOR e di Gauss-Seidel accelerano il tasso di convergenza utilizzando, nella valutazione di x k+1, non solo x k, ma alcune delle componenti appena calcolate dello stesso x k+1. Componente da aggiornare al passo k+1 Componenti aggiornate al passo k Componenti aggiornate al passo k+1 Michele Colajanni Esempi programmi paralleli 24/51 12

13 Parallelizzazione Algoritmo di Gauss-Seidel PARALLELIZZAZIONE: Modello Data-Parallel =====> Si decompone il dominio in strisce assegnando i punti di ciascuna striscia ad un diverso processore =====> Si decompongano ulteriormente i punti di discretizzazione in due sottoinsiemi disposti come in una scacchiera: black/white (o red/black). =====> Per ciascun passo iterativo si individuano due sotto-livelli di iterazione: 1) nel primo si aggiornano i punti dell insieme black, utilizzando i valori dell insieme white; 2) nel secondo, analogamente, i punti white sono aggiunti utilizzando gli elementi black al passo precedente. Michele Colajanni Esempi programmi paralleli 25/51 Simulazione di Modelli Oceanografici Approccio di parallelizzazione: Decomposizione a grana fine del dominio (+ riconfigurazione dinamica) Decomposizione del Dominio Michele Colajanni Esempi programmi paralleli 26/51 13

14 Task farm dinamico: Problema delle N Regine Problema: Trovare tutte le soluzioni per posizionare N Regine su di una scacchiera NxN tale che nessuna Regina sia in grado di attaccarne un altra. Una soluzione Michele Colajanni Esempi programmi paralleli 27/51 Problema delle N Regine (esempio N=4) Q = Posizione della Regina (Queen) Ramo senza soluzioni Ramo senza soluzioni 2 soluzioni Michele Colajanni Esempi programmi paralleli 28/51 14

15 Algoritmo risolutivo: ricerca esaustiva Si ha uno spazio di ricerca irregolare, con un dominio non definibile a priori Non è possibile effettuare una decomposizione del dominio Necessità di bilanciamento dinamico Michele Colajanni Esempi programmi paralleli 29/51 Soluzione parallela al problema delle N Regine Approccio di parallelizzazione: Task farm dinamico Manager - Costruisce e mantiene il livello superiore dell albero di ricerca (posizione iniziale della Regina) - Usa i worker per costruire l albero e risolve ogni foglia dell albero - Tiene traccia del numero totale di soluzioni trovate Worker - Esegue due task principali 1. Suddivide il problema in sottoproblemi 2. Risolve i sottoproblemi Michele Colajanni Esempi programmi paralleli 30/51 15

16 Pattern di Comunicazione (prevalente) tra processi paralleli Un richiamo al problema dell Embedding visto in precedenza Master/slave Task farm statico (es., Integrazione per π) Task farm dinamico (es., Problema delle N regine) Near-neighbor (es., Jacobi, metodi alle differenze finite per la soluzione di PDE) Multicast (es., Fattorizzazione LU, Moltiplicazione di matrici) Irregolare (es., Problemi di dinamica molecolare, fluidodinamica) Michele Colajanni Esempi programmi paralleli 31/51 Metriche di Valutazione delle Prestazioni nel Calcolo Parallelo (cenni) 16

17 Speedup Definizione 1 (Speedup Ideale) Rapporto tra il tempo di esecuzione del migliore algoritmo sequenziale T* ed il tempo di esecuzione del corrispondente algoritmo parallelo ottenuto utilizzando p processori: * * T S p = Definizione 2 (Speedup Algoritmico) Rapporto tra il tempo di esecuzione dell algoritmo su di un unico processore (T 1 ) ed il tempo di esecuzione dello stesso su p processori (T p ) T p Tipico andamento dello speedup Speedup Numero processori Michele Colajanni Esempi programmi paralleli 33/51 Efficienza Misura del grado di inutilizzo dell elaboratore parallelo E p = S p p Per definizione, 0 <= E p <= 1 Buona misura per la presentazione di più risultati in quanto, rispetto allo speedup (espresso in funzione di p), normalizza i tempi di esecuzione efficienza 1 Dati Michele Colajanni Esempi programmi paralleli 34/51 17

18 Legge di Amdhal (1967) Si assuma che in un determinato problema possa essere distinto in due parti: una inerentemente sequenziale (sia f la percentuale di tale sezione sul calcolo complessivo) ed una completamente parallelizzabile: Tempo di esecuzione: T p 1 f = ( f + ) T1 p N f Allora lo speedup è limitato da: Conseguenza S p f p f per p S p 1 / f Una piccola frazione di operazioni sequenziali può limitare fortemente lo speedup ottenibile da un computer parallelo Esempio Se f=0.1 Sp 10, indipendentemente da quanti processori si hanno Michele Colajanni Esempi programmi paralleli 35/51 Motivazioni Diversi studi sperimentali condotti presso il Sandia National Laboratory hanno dimostrato che per molti problemi era possibile ottenere speedup quasi lineari (circa 1000 con 1024 processori) Ciò ha condotto ad una rivisitazione della legge di Amdhal: Il difetto della legge di Amdhal è quello di considerare f e p scorrelati, cioè dipendenti dalle proprietà statiche dell algoritmo senza tener conto della dimensione dello spazio computazionale Scalando la dimensione del problema con il numero di processori usati, si ha invece che: Legge di Barsis-Gustafson T 1 non è più indipendente dal numero di processi utilizzati T p risulta indipendente dal numero di processori Ribaltamento del paradigma di Amdhal: Amdhal: quanto sarà Tp dato T1 Barsis: quanto sarà T1 dato Tp Michele Colajanni Esempi programmi paralleli 36/51 18

19 Legge di Barsis-Gustafson (cont.) Esecuzione parallela = Ts + Tw s w s pw Esecuzione sequenziale = Ts + p Tw Sia s la frazione di tempo che una macchina parallela spenderebbe nella parte seriale del programma e w la frazione che la stessa macchina parallela spenderebbe nelle parti parallelizzabili del programma medesimo. Ts + pt w Ts Tw S p ( scalato ) = + = + p = s + pw T + T T + T T + T s w s w s w Normalizzando anche in questo caso, cioè supponendo w+s=1, si ha: = s + p (1 - s) = s + p ps = p + ( 1 p ) s Michele Colajanni Esempi programmi paralleli 37/51 E possibile avere speedup superlineare (?) Confronto disonesto (es.: Algoritmo sequenziale non buono) Caratteristiche HARDWARE (Soprattutto dovuto a gerarchie di memoria: cache/disco) Anomalie ALGORITMICHE (es.: algoritmi di ricerca) T 1 =11 (tempo sequenziale con tradizionale algoritmo di ricerca) Soluzione T 2 =4 (tempo parallelo con 2 processori) Speedup = 11/4 = 2.75!! Max Speedup (lineare) = 2 Spazio di ricerca Assegnato al Processore 1 Spazio di ricerca Assegnato al Processore 2 Michele Colajanni Esempi programmi paralleli 38/51 19

20 Cause di inefficienza delle Applicazioni parallele (e possibili rimedi) Processo implementativo di un programma SPMD Programma Sequenziale Decomposizione del Dominio dei Dati (Schema di memorizzazione) 1 2 Primitive di Comunicazione Programma parallelo (versione 1) Strategia di tuning Programma parallelo (versione 2) Michele Colajanni Esempi programmi paralleli 40/51 20

21 Parametri che Influenzano le Prestazioni Bilanciamento del Carico Rapporto Comunicazioni/Computazioni Colli di Bottiglia (sequenzializzazioni, sincronizazioni) Tuning dei Programmi Michele Colajanni Esempi programmi paralleli 41/51 Programmare i multicomputers Le macchine MIMD a memoria distribuita (muticomputers) raggiungono buone prestazioni (speedup) soltanto se sono programmate in maniera opportuna. Sono molto più difficili da programmare rispetto alle SIMD o alle MIMD a memoria condivisa. In particolare, esiste una granularità ottima dei processi (dati) per ciascun tipo di problema che deve essere risolto su di un particolare mulicomputer. Nel caso in cui l insieme di processi abbia una granularità maggiore o minore di quella ottima, in generale lo speedup non sarà né lineare né proporzionale al numero di processi presenti. Michele Colajanni Esempi programmi paralleli 42/51 21

22 Bilanciamento del Carico Obiettivo: Assegnare a tutti i processori un analogo WORKLOAD ===> Livelli di utilizzazione simili significano prestazioni più elevate POSSIBILI TECNICHE DI MIGLIORAMENTO Diminuire la granularità Ridistribuzione dinamica di strutture dati o di task Ridistribuzione di strutture dati statiche Aumentare il livello di multiprogrammazione (per ciascun nodo) Michele Colajanni Esempi programmi paralleli 43/51 Bilanciamento Dinamico (a Posteriori) dei Processi Ottenuto mediante MIGRAZIONE DEI PROCESSI (o STRUTTURE DATI) Vi sono tre metodi per controllare e gestire l operazione (centralizzata) della migrazione: Iniziativa del Destinatario I processori con piccolo workload richiedono più processi (Adatto nel caso di sistemi molto carichi) Iniziativa del Mittente I processori con eccessivo workload richiedono di poter cedere alcuni processi ad altri processori (Adatto nel caso di sistemi poco carichi) Metodo Ibrido (adattativo) Si passa dal primo al secondo metodo a seconda del livello di carico del sistema. Michele Colajanni Esempi programmi paralleli 44/51 22

23 Pro e Contro del Bilanciamento Dinamico + Si ottiene, tipicamente, un utilizzo maggiore dei processori ± Bisogna evitare la cosiddetta migrazione circolare, utilizzando algoritmi opportuni e valori soglia - Vi sono elevati costi aggiuntivi sia nel determinare il workload dei processori che il workload totale - L operazione di migrazione di un processo è costosa e dovrebbe essere effettuata solo per i processi con lunghi tempi di esecuzione (informazione che spesso non è possibile determinare a priori) - In genere, tutti i metodi di bilanciamento dinamico intervengono troppo tardi (quando le prestazioni del sistema sono già degradate). Il bilanciamento forward-looking è possibile solo conoscendo i tempi di run dei singoli processi. - Nei sistemi eccessivamente carichi, tutti i metodi di bilanciamento dinamico non hanno punti di riferimento. Per di più, i costi introdotti dalla gestione del bilanciamento tendono a far peggiorare ulteriormente le prestazioni del sistema. Michele Colajanni Esempi programmi paralleli 45/51 Bottleneck di Sequenzializzazione Obiettivo: Evitare che tutti i processi si mettano in attesa di un singolo processore. ===>Ogni sequenzializzazione forzata del codice influenza in modo considerevole le prestazioni. Bottleneck del processore Bottleneck del codice Es., Fattorizzazione LU (decomposizione per colonne) POSSIBILE TECNICHE DI MIGLIORAMENTO Modificare o migliorare l algoritmo in modo da sovrapporre il codice sequenziale con altre computazioni Distribuire i workload di processori sovraccarichi (bottleneck) tra più processori Michele Colajanni Esempi programmi paralleli 46/51 23

24 Bottleneck di Sincronizzazione Obiettivo: Limitare i punti in cui tutti i processori debbano sincronizzarsi. ===> L ultimo processo ad arrivare al punto di sincronizzazione determina il tempo di esecuzione globale. LU factorization (no send-ahead) POSSIBILI TECNICHE DI MIGLIORAMENTO Inviare i valori necessari alle computazioni di altri processori non appena sono disponibili (send-ahead) Modificare o riorganizzare l algoritmo in modo da eliminare i punti di sincronizzazione dove non strettamente necessari Michele Colajanni Esempi programmi paralleli 47/51 Rapporto Comunicazioni/Computazioni Obiettivo: Minimizzare il rapporto tempo di comunicazione tempo di computazioni di un programma. ===> Rapporti COMUNICAZIONI/COMPUTAZIONI più bassi implicano prestazioni più elevate POSSIBILI TECNICHE DI MIGLIORAMENTO Aumentare la granularità Ristrutturare il programma in modo da avere meno messaggi, ciascuno di dimensione maggiore Ristrutturare le comunicazioni in modo da combinare messaggi logicamente multipli in messaggi singoli Michele Colajanni Esempi programmi paralleli 48/51 24

25 Tuning dei Programmi (Ambito: Data Parallelism con Allocazione Statica) OBIETTIVO 1: MIGLIORARE IL BILANCIAMENTO DEL CARICO Esempio (Fattorizzazione LU) Passare da una decomposizione geometrica ad una decomposizione ciclica del dominio dei dati Michele Colajanni Esempi programmi paralleli 49/51 Tuning dei Programmi (Ambito: Data Parallelism con allocazione statica) OBIETTIVO2: ELIMINARE LE SINCRONIZZAZIONI NON NECESSARIE Esempio (Fattorizzazione LU) (1) Algortimo naive (decomposizione per righe) for k=1 to n-1 do if (k in mynode) then broadcast(a k* ) else receive(a k* ) for all (i>k in mynode) do l ik =a ik /a kk for j=k+1 to n do a ij =a ij -l ik a kj (2) Algoritmo 1-send-ahead (decomposizione per righe) if (1 in mynode) then broadcast(a i* ) for k=1 to n-1 do if not(k in mynode) then receive(a k* ) for all (i>k in mynode) do l ik =a ik /a kk for j=k+1 to n do {a ij =a ij -l ik a kj if ((i=k+1) (i n)) then broadcast(a i* ) } Michele Colajanni Esempi programmi paralleli 50/51 25

26 Tuning dei Programmi (Ambito: Data Parallelism con Allocazione Dinamica) Sebbene lo schema task-farm dinamico possa miglioriare considerevolmente il Bilanciamento del Carico, è possibile effettuare ulteriori miglioramenti agendo sulla granularità dei compiti e dell allocazione dei processi. Esempio (N Regine) Determina il numero migliore (del punto di vista del bilanciamento) per ciò che concerne i sottoproblemi da creare [Numero di sottoproblemi e numero di messaggi sono inversamente proporzionali] ---> si tende a migliorare il bilanciamento del carico e il rapporto comunic./comput. Invia due sottoproblemi per ciascuna comunicazione Manager-Worker [In tal modo si consente al Worker di sovrapporre una computazione per ogni richiesta pendente al Manager] ---> si riduce il bottleneck di sequenzializzazione e si migliora il rapporto comunicazione/computazione Se il manager risulta essere poco carico, sfrutta il multitasking: aggiungi un processo Worker anche sul processore che esegue il processo Manager Se il Manager risulta essere troppo carico, suddividi il lavoro del Manager tra più processori Michele Colajanni Esempi programmi paralleli 51/51 26

Metriche e Strumenti. di Valutazione delle Prestazioni. nel Calcolo Parallelo. (cenni) Speedup

Metriche e Strumenti. di Valutazione delle Prestazioni. nel Calcolo Parallelo. (cenni) Speedup Metriche e Strumenti di Valutazione delle Prestazioni nel Calcolo Parallelo (cenni) Definizione 1 (Speedup Ideale) Speedup Rapporto tra il tempo di esecuzione del migliore algoritmo sequenziale T* ed il

Dettagli

Sommario. Analysis & design delle applicazioni parallele. Misura delle prestazioni parallele. Tecniche di partizionamento.

Sommario. Analysis & design delle applicazioni parallele. Misura delle prestazioni parallele. Tecniche di partizionamento. Sommario Analysis & design delle applicazioni parallele Misura delle prestazioni parallele Tecniche di partizionamento Comunicazioni Load balancing 2 Primi passi: analizzare il problema Prima di iniziare

Dettagli

MPI è una libreria che comprende:

MPI è una libreria che comprende: 1 Le funzioni di MPI MPI è una libreria che comprende: Funzioni per definire l ambiente Funzioni per comunicazioni uno a uno Funzioni percomunicazioni collettive Funzioni peroperazioni collettive 2 1 3

Dettagli

Comunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI

Comunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Comunicazione La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Concettualmente la comunicazione point to point e' molto semplice: Un processo invia un

Dettagli

Alcuni strumenti per lo sviluppo di software su architetture MIMD

Alcuni strumenti per lo sviluppo di software su architetture MIMD Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 MPI : Message Passing Interface MPI

Dettagli

Operazioni di Comunicazione di base. Cap.4

Operazioni di Comunicazione di base. Cap.4 Operazioni di Comunicazione di base Cap.4 1 Introduzione: operazioni di comunicazioni collettive Gli scambi collettivi coinvolgono diversi processori Sono usati massicciamente negli algoritmi paralleli

Dettagli

CALCOLO PARALLELO SUPERARE I LIMITI DI CALCOLO. A cura di Tania Caprini

CALCOLO PARALLELO SUPERARE I LIMITI DI CALCOLO. A cura di Tania Caprini CALCOLO PARALLELO SUPERARE I LIMITI DI CALCOLO A cura di Tania Caprini 1 CALCOLO SERIALE: esecuzione di istruzioni in sequenza CALCOLO PARALLELO: EVOLUZIONE DEL CALCOLO SERIALE elaborazione di un istruzione

Dettagli

Speedup. Si definisce anche lo Speedup relativo in cui, invece di usare T 1 si usa T p (1).

Speedup. Si definisce anche lo Speedup relativo in cui, invece di usare T 1 si usa T p (1). Speedup Vediamo come e' possibile caratterizzare e studiare le performance di un algoritmo parallelo: S n = T 1 T p n Dove T 1 e' il tempo impegato dal miglior algoritmo seriale conosciuto, mentre T p

Dettagli

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput

Valutazione delle Prestazioni. Valutazione delle Prestazioni. Architetture dei Calcolatori (Lettere. Tempo di risposta e throughput Valutazione delle Prestazioni Architetture dei Calcolatori (Lettere A-I) Valutazione delle Prestazioni Prof. Francesco Lo Presti Misura/valutazione di un insieme di parametri quantitativi per caratterizzare

Dettagli

PARTE II PROGRAMMAZIONE PARALLELA

PARTE II PROGRAMMAZIONE PARALLELA PARTE II PROGRAMMAZIONE PARALLELA Metodologie di Esplicitazione del Metodologie di Esplicitazione del Implicito Funzionale (Control Parallelism ) Basato sui dati (Data Parallelism ) Ogni metodologia di

Dettagli

Più processori uguale più velocità?

Più processori uguale più velocità? Più processori uguale più velocità? e un processore impiega per eseguire un programma un tempo T, un sistema formato da P processori dello stesso tipo esegue lo stesso programma in un tempo TP T / P? In

Dettagli

9 Metodi diretti per la risoluzione di sistemi lineari: fattorizzazione P A = LU

9 Metodi diretti per la risoluzione di sistemi lineari: fattorizzazione P A = LU 9 Metodi diretti per la risoluzione di sistemi lineari: fattorizzazione P A LU 9.1 Il metodo di Gauss Come si è visto nella sezione 3.3, per la risoluzione di un sistema lineare si può considerare al posto

Dettagli

Università degli Studi di Salerno

Università degli Studi di Salerno Università degli Studi di Salerno Facoltà di Scienze Matematiche Fisiche e Naturali Corso di Laurea in Informatica Tesi di Laurea Algoritmi basati su formule di quadratura interpolatorie per GPU ABSTRACT

Dettagli

Comunicazione tra Processi

Comunicazione tra Processi Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo

Dettagli

Comunicazione tra Processi

Comunicazione tra Processi Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo

Dettagli

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2

Computazione multi-processo. Condivisione, Comunicazione e Sincronizzazione dei Processi. Segnali. Processi e Threads Pt. 2 Computazione multi-processo Avere più processi allo stesso momento implica/richiede Processi e Threads Pt. 2 Concorrenza ed efficienza Indipendenza e protezione dei dati ma deve prevedere/permettere anche:

Dettagli

e-dva - eni-depth Velocity Analysis

e-dva - eni-depth Velocity Analysis Lo scopo dell Analisi di Velocità di Migrazione (MVA) è quello di ottenere un modello della velocità nel sottosuolo che abbia dei tempi di riflessione compatibili con quelli osservati nei dati. Ciò significa

Dettagli

Rendering air show e verifica della sincronizzazione

Rendering air show e verifica della sincronizzazione Capitolo 5 Rendering air show e verifica della sincronizzazione 5.1 Introduzione Il Rendering 3D dell evoluzioni acrobatiche costituisce uno degli aspetti cruciali dell applicazione realizzata. L ambiente

Dettagli

Introduzione ai tipi di dato astratti: applicazione alle liste

Introduzione ai tipi di dato astratti: applicazione alle liste Universitàdegli Studi di L Aquila Facoltàdi Scienze M.F.N. Corso di Laurea in Informatica Corso di Laboratorio di Algoritmi e Strutture Dati A.A. 2005/2006 Introduzione ai tipi di dato astratti: applicazione

Dettagli

La struttura dati ad albero binario

La struttura dati ad albero binario La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,

Dettagli

Programmazione dinamica

Programmazione dinamica Capitolo 6 Programmazione dinamica 6.4 Il problema della distanza di edit tra due stringhe x e y chiede di calcolare il minimo numero di operazioni su singoli caratteri (inserimento, cancellazione e sostituzione)

Dettagli

Coordinazione Distribuita

Coordinazione Distribuita Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza 21.1 Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati

Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad

Dettagli

Gestione della memoria centrale

Gestione della memoria centrale Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti

Dettagli

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME)

Introduzione. Coordinazione Distribuita. Ordinamento degli eventi. Realizzazione di. Mutua Esclusione Distribuita (DME) Coordinazione Distribuita Ordinamento degli eventi Mutua esclusione Atomicità Controllo della Concorrenza Introduzione Tutte le questioni relative alla concorrenza che si incontrano in sistemi centralizzati,

Dettagli

Come ragiona il computer. Problemi e algoritmi

Come ragiona il computer. Problemi e algoritmi Come ragiona il computer Problemi e algoritmi Il problema Abbiamo un problema quando ci poniamo un obiettivo da raggiungere e per raggiungerlo dobbiamo mettere a punto una strategia Problema Strategia

Dettagli

Controlli Automatici T. Trasformata di Laplace e Funzione di trasferimento. Parte 3 Aggiornamento: Settembre 2010. Prof. L.

Controlli Automatici T. Trasformata di Laplace e Funzione di trasferimento. Parte 3 Aggiornamento: Settembre 2010. Prof. L. Parte 3 Aggiornamento: Settembre 2010 Parte 3, 1 Trasformata di Laplace e Funzione di trasferimento Prof. Lorenzo Marconi DEIS-Università di Bologna Tel. 051 2093788 Email: lmarconi@deis.unibo.it URL:

Dettagli

La Gestione delle risorse Renato Agati

La Gestione delle risorse Renato Agati Renato Agati delle risorse La Gestione Schedulazione dei processi Gestione delle periferiche File system Schedulazione dei processi Mono programmazione Multi programmazione Gestione delle periferiche File

Dettagli

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione.

Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Con il termine Sistema operativo si fa riferimento all insieme dei moduli software di un sistema di elaborazione dati dedicati alla sua gestione. Compito fondamentale di un S.O. è infatti la gestione dell

Dettagli

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini. Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio

Dettagli

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.

Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella. Prestazioni CPU Corso di Calcolatori Elettronici A 2007/2008 Sito Web:http://prometeo.ing.unibs.it/quarella Prof. G. Quarella prof@quarella.net Prestazioni Si valutano in maniera diversa a seconda dell

Dettagli

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi Sistemi Operativi Lez. 13: primitive per la concorrenza monitor e messaggi Osservazioni I semafori sono strumenti particolarmente potenti poiché consentono di risolvere ogni problema di sincronizzazione

Dettagli

Calcolatori Elettronici A a.a. 2008/2009

Calcolatori Elettronici A a.a. 2008/2009 Calcolatori Elettronici A a.a. 2008/2009 PRESTAZIONI DEL CALCOLATORE Massimiliano Giacomin Due dimensioni Tempo di risposta (o tempo di esecuzione): il tempo totale impiegato per eseguire un task (include

Dettagli

Alcuni strumenti per lo sviluppo di software su architetture MIMD

Alcuni strumenti per lo sviluppo di software su architetture MIMD Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 1 Message Passing Interface MPI www.mcs.anl.gov./research/projects/mpi/

Dettagli

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione

Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione Sequenziamento a minimo costo di commutazione in macchine o celle con costo lineare e posizione home (In generale il metodo di ottimizzazione presentato in questo file trova la seq. a costo minimo per

Dettagli

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori.

DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come. Scopo principale dell informatica è risolvere problemi con i calcolatori. DAL PROBLEMA ALL'ALGORITMO AL PROGRAMMA SCRITTO IN Come Scopo principale dell informatica è risolvere problemi con i calcolatori. Non tutti i problemi sono risolvibili con i calcolatori. Si può dimostrato

Dettagli

Tecniche di Simulazione: Introduzione. N. Del Buono:

Tecniche di Simulazione: Introduzione. N. Del Buono: Tecniche di Simulazione: Introduzione N. Del Buono: 2 Che cosa è la simulazione La SIMULAZIONE dovrebbe essere considerata una forma di COGNIZIONE (COGNIZIONE qualunque azione o processo per acquisire

Dettagli

MPI Quick Refresh. Super Computing Applications and Innovation Department. Courses Edition 2017

MPI Quick Refresh. Super Computing Applications and Innovation Department. Courses Edition 2017 MPI Quick Refresh Super Computing Applications and Innovation Department Courses Edition 2017 1 Cos è MPI MPI acronimo di Message Passing Interface http://www.mpi-forum.org MPI è una specifica, non un

Dettagli

Non blocking. Contro. La programmazione di uno scambio messaggi con funzioni di comunicazione non blocking e' (leggermente) piu' complicata

Non blocking. Contro. La programmazione di uno scambio messaggi con funzioni di comunicazione non blocking e' (leggermente) piu' complicata Non blocking Una comunicazione non blocking e' tipicamente costituita da tre fasi successive: L inizio della operazione di send/receive del messaggio Lo svolgimento di un attivita' che non implichi l accesso

Dettagli

Alcuni strumenti per lo sviluppo di software su architetture MIMD

Alcuni strumenti per lo sviluppo di software su architetture MIMD Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 MPI : Message Passing Interface MPI

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Ottimizzazione Multi Obiettivo

Ottimizzazione Multi Obiettivo Ottimizzazione Multi Obiettivo 1 Ottimizzazione Multi Obiettivo I problemi affrontati fino ad ora erano caratterizzati da una unica (e ben definita) funzione obiettivo. I problemi di ottimizzazione reali

Dettagli

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer.

Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. I Sistemi Operativi Il Software di Base Il software di base comprende l insieme dei programmi predisposti per un uso efficace ed efficiente del computer. Il sistema operativo è il gestore di tutte le risorse

Dettagli

Elementi Finiti: stime d errore e adattività della griglia

Elementi Finiti: stime d errore e adattività della griglia Elementi Finiti: stime d errore e adattività della griglia Elena Gaburro Università degli studi di Verona Master s Degree in Mathematics and Applications 05 giugno 2013 Elena Gaburro (Università di Verona)

Dettagli

Esercizi Capitolo 6 - Alberi binari di ricerca

Esercizi Capitolo 6 - Alberi binari di ricerca Esercizi Capitolo 6 - Alberi binari di ricerca Alberto Montresor 23 settembre 200 Alcuni degli esercizi che seguono sono associati alle rispettive soluzioni. Se il vostro lettore PDF lo consente, è possibile

Dettagli

Sistema operativo: Gestione dei processi

Sistema operativo: Gestione dei processi Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica - ICA Prof. Pierluigi Plebani A.A. 2011/2012 Sistema operativo: Gestione dei processi La presente dispensa e da utilizzarsi

Dettagli

La selezione binaria

La selezione binaria Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Introduzione L esecuzione di tutte le istruzioni in sequenza può non è sufficiente per

Dettagli

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing

Informatica 3. LEZIONE 21: Ricerca su liste e tecniche di hashing. Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 LEZIONE 21: Ricerca su liste e tecniche di hashing Modulo 1: Algoritmi sequenziali e basati su liste Modulo 2: Hashing Informatica 3 Lezione 21 - Modulo 1 Algoritmi sequenziali e basati su

Dettagli

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

Parallelizzazione Laplace 2D: MPI e MPI+OMP. - Cineca - SuperComputing Applications and Innovation Department

Parallelizzazione Laplace 2D: MPI e MPI+OMP. - Cineca - SuperComputing Applications and Innovation Department Parallelizzazione Laplace 2D: MPI e MPI+OMP - Cineca - SuperComputing Applications and Innovation Department Outline Parallelizzazione Laplace 2D Parallelizzazione Laplace 2D - MPI bloccante Parallelizzazione

Dettagli

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Sommario Introduzione Definizione di WCET Importanza del WCET Panoramica dei classici metodi per calcolare il WCET [1] Utilizzo di

Dettagli

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling

Sistemi Operativi. Scheduling della CPU SCHEDULING DELLA CPU. Concetti di Base Criteri di Scheduling Algoritmi di Scheduling SCHEDULING DELLA CPU 5.1 Scheduling della CPU Concetti di Base Criteri di Scheduling Algoritmi di Scheduling FCFS, SJF, Round-Robin, A code multiple Scheduling in Multi-Processori Scheduling Real-Time

Dettagli

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1

Sistemi Operativi SCHEDULING DELLA CPU. Sistemi Operativi. D. Talia - UNICAL 5.1 SCHEDULING DELLA CPU 5.1 Scheduling della CPU Concetti di Base Criteri di Scheduling Algoritmi di Scheduling FCFS, SJF, Round-Robin, A code multiple Scheduling in Multi-Processori Scheduling Real-Time

Dettagli

Condizionamento del problema

Condizionamento del problema Condizionamento del problema x 1 + 2x 2 = 3.499x 1 + 1.001x 2 = 1.5 La soluzione esatta è x = (1, 1) T. Perturbando la matrice dei coefficienti o il termine noto: x 1 + 2x 2 = 3.5x 1 + 1.002x 2 = 1.5 x

Dettagli

Complessità Computazionale

Complessità Computazionale Complessità Computazionale Analisi Algoritmi e pseudocodice Cosa significa analizzare un algoritmo Modello di calcolo Analisi del caso peggiore e del caso medio Esempio di algoritmo in pseudocodice INSERTION

Dettagli

Bontà dei dati in ingresso

Bontà dei dati in ingresso COMPLESSITÀ COMPUTAZIONALE DEGLI ALGORITMI Fondamenti di Informatica a.a.2006/07 Prof. V.L. Plantamura Dott.ssa A. Angelini Il costo puo' dipendere dal valore dei dati in ingresso Un tipico esempio è dato

Dettagli

GESTIONE INFORMATICA DEI DATI AZIENDALI

GESTIONE INFORMATICA DEI DATI AZIENDALI GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy zanoni@volterra.uniroma2.it Rudimenti di programmazione Programming

Dettagli

Corso di Analisi Numerica - AN1. Parte 2: metodi diretti per sistemi lineari. Roberto Ferretti

Corso di Analisi Numerica - AN1. Parte 2: metodi diretti per sistemi lineari. Roberto Ferretti Corso di Analisi Numerica - AN1 Parte 2: metodi diretti per sistemi lineari Roberto Ferretti Richiami sulle norme e sui sistemi lineari Il Metodo di Eliminazione di Gauss Il Metodo di Eliminazione con

Dettagli

Corso di Tecniche di Programmazione

Corso di Tecniche di Programmazione Corso di Tecniche di Programmazione Corsi di Laurea in Ingegneria Informatica ed Automatica Anno Accedemico 003/004 Proff. Giuseppe De Giacomo, Luca Iocchi, Domenico Lembo Dispensa : Algoritmi di Ordinamento

Dettagli

Verifica parte IIA. Test (o analisi dinamica) Mancanza di continuità. Esempio

Verifica parte IIA. Test (o analisi dinamica) Mancanza di continuità. Esempio Test (o analisi dinamica) Verifica parte IIA Rif. Ghezzi et al. 6.3-6.3.3 Consiste nell osservare il comportamento del sistema in un certo numero di condizioni significative Non può (in generale) essere

Dettagli

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi?

1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi? 1. Che cos è la multiprogrammazione? Si può realizzare su un sistema monoprocessore? 2. Quali sono i servizi offerti dai sistemi operativi? 1. La nozione di multiprogrammazione prevede la possibilità di

Dettagli

Laboratorio di Calcolo Parallelo

Laboratorio di Calcolo Parallelo Laboratorio di Calcolo Parallelo Lezione : Aspetti avanzati ed esempi in MPI Francesco Versaci & Alberto Bertoldo Università di Padova 6 maggio 009 Francesco Versaci (Università di Padova) Laboratorio

Dettagli

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, >

Sistemi Operativi mod. B. Sistemi Operativi mod. B A B C A B C P 1 2 0 0 P 1 1 2 2 3 3 2 P 2 3 0 2 P 2 6 0 0 P 3 2 1 1 P 3 0 1 1 < P 1, > Algoritmo del banchiere Permette di gestire istanze multiple di una risorsa (a differenza dell algoritmo con grafo di allocazione risorse). Ciascun processo deve dichiarare a priori il massimo impiego

Dettagli

Gestione del processore e dei processi

Gestione del processore e dei processi Il processore è la componente più importante di un sistema di elaborazione e pertanto la sua corretta ed efficiente gestione è uno dei compiti principali di un sistema operativo Il ruolo del processore

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Soluzione esercizi di approfondimento Stefano Leucci stefano.leucci@univaq.it Una terza variante dell IS InsertionSort3 (A) 1. for k=1 to n-1 do 2. x = A[k+1] 3. j = ricerca_binaria(a[1,k],x)

Dettagli

Mai fidarsi. int main() { int a,i=2; a = 1*abs(i 1); printf ( "%d\n", a); } $ gcc W Wall o first main.c $./first 1

Mai fidarsi. int main() { int a,i=2; a = 1*abs(i 1); printf ( %d\n, a); } $ gcc W Wall o first main.c $./first 1 Mai fidarsi int main() { int a,i=2; a = 1*abs(i 1); printf ( "%d\n", a); } $ gcc W Wall o first main.c $./first 1 $ gcc fno builtin o second main.c $./second 1 compilatore dipendente Bcast Vediamo la soluzione

Dettagli

Pronto Esecuzione Attesa Terminazione

Pronto Esecuzione Attesa Terminazione Definizione Con il termine processo si indica una sequenza di azioni che il processore esegue Il programma invece, è una sequenza di azioni che il processore dovrà eseguire Il processo è quindi un programma

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1

Sistemi Operativi GESTIONE DELLA MEMORIA CENTRALE. D. Talia - UNICAL. Sistemi Operativi 6.1 GESTIONE DELLA MEMORIA CENTRALE 6.1 Gestione della Memoria Background Spazio di indirizzi Swapping Allocazione Contigua Paginazione 6.2 Background Per essere eseguito un programma deve trovarsi (almeno

Dettagli

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1

Sistemi Operativi GESTIONE DELLA MEMORIA SECONDARIA. D. Talia - UNICAL. Sistemi Operativi 11.1 GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria

Dettagli

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco

Sistemi Operativi. Memoria Secondaria GESTIONE DELLA MEMORIA SECONDARIA. Struttura del disco. Scheduling del disco. Gestione del disco GESTIONE DELLA MEMORIA SECONDARIA 11.1 Memoria Secondaria Struttura del disco Scheduling del disco Gestione del disco Gestione dello spazio di swap Struttura RAID Affidabilità Implementazione della memoria

Dettagli

Documentazione esterna al software matematico sviluppato con MatLab

Documentazione esterna al software matematico sviluppato con MatLab Documentazione esterna al software matematico sviluppato con MatLab Algoritmi Metodo di Gauss-Seidel con sovrarilassamento Metodo delle Secanti Metodo di Newton Studente Amelio Francesco 556/00699 Anno

Dettagli

Gestione della Memoria

Gestione della Memoria Gestione della Memoria Idealmente la memoria dovrebbe essere grande veloce non volatile Gerarchia di memorie Disco: capiente, lento, non volatile ed economico Memoria principale: volatile, mediamente grande,

Dettagli

Introduzione al MATLAB c Parte 2

Introduzione al MATLAB c Parte 2 Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione

Dettagli

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09 SISTEMI OPERATIVI Prof. Enrico Terrone A. S: 2008/09 Che cos è il sistema operativo Il sistema operativo (SO) è il software che gestisce e rende accessibili (sia ai programmatori e ai programmi, sia agli

Dettagli

CAPITOLO 7 - SCAMBIO DI MESSAGGI

CAPITOLO 7 - SCAMBIO DI MESSAGGI CAPITOLO 7 - SCAMBIO DI MESSAGGI Lo scambio di messaggi è una forma di comunicazione nel quale un processo richiede al sistema operativo di mandare dei dati direttamente ad un altro processo. In alcuni

Dettagli

Capitolo 4: Ottimizzazione non lineare non vincolata parte II. E. Amaldi DEIB, Politecnico di Milano

Capitolo 4: Ottimizzazione non lineare non vincolata parte II. E. Amaldi DEIB, Politecnico di Milano Capitolo 4: Ottimizzazione non lineare non vincolata parte II E. Amaldi DEIB, Politecnico di Milano 4.3 Algoritmi iterativi e convergenza Programma non lineare (PNL): min f(x) s.v. g i (x) 0 1 i m x S

Dettagli

AA 2006-07 LA RICORSIONE

AA 2006-07 LA RICORSIONE PROGRAMMAZIONE AA 2006-07 LA RICORSIONE AA 2006-07 Prof.ssa A. Lanza - DIB 1/18 LA RICORSIONE Il concetto di ricorsione nasce dalla matematica Una funzione matematica è definita ricorsivamente quando nella

Dettagli

Corso di Matematica per la Chimica

Corso di Matematica per la Chimica Dott.ssa Maria Carmela De Bonis a.a. 203-4 I sistemi lineari Generalità sui sistemi lineari Molti problemi dell ingegneria, della fisica, della chimica, dell informatica e dell economia, si modellizzano

Dettagli

Metodi Computazionali

Metodi Computazionali Metodi Computazionali Elisabetta Fersini fersini@disco.unimib.it A.A. 2009/2010 Catene di Markov Applicazioni: Fisica dinamica dei sistemi Web simulazione del comportamento utente Biologia evoluzione delle

Dettagli

STRUTTURE DEI SISTEMI DI CALCOLO

STRUTTURE DEI SISTEMI DI CALCOLO STRUTTURE DEI SISTEMI DI CALCOLO 2.1 Strutture dei sistemi di calcolo Funzionamento Struttura dell I/O Struttura della memoria Gerarchia delle memorie Protezione Hardware Architettura di un generico sistema

Dettagli

Tipi classici di memoria. Obiettivo. Principi di localita. Gerarchia di memoria. Fornire illimitata memoria veloce. Static RAM. Problemi: Dynamic RAM

Tipi classici di memoria. Obiettivo. Principi di localita. Gerarchia di memoria. Fornire illimitata memoria veloce. Static RAM. Problemi: Dynamic RAM Obiettivo Tipi classici di memoria Fornire illimitata memoria veloce Problemi: costo tecnologia Soluzioni: utilizzare diversi tipi di memoria... Static RAM access times are 2-25ns at cost of $100 to $250

Dettagli

Distributed P2P Data Mining. Autore: Elia Gaglio (matricola n 809477) Corso di Sistemi Distribuiti Prof.ssa Simonetta Balsamo

Distributed P2P Data Mining. Autore: Elia Gaglio (matricola n 809477) Corso di Sistemi Distribuiti Prof.ssa Simonetta Balsamo Distributed P2P Data Mining Autore: (matricola n 809477) Corso di Sistemi Distribuiti Prof.ssa Simonetta Balsamo A.A. 2005/2006 Il settore del Data Mining Distribuito (DDM): Data Mining: cuore del processo

Dettagli

DMA Accesso Diretto alla Memoria

DMA Accesso Diretto alla Memoria Testo di rif.to: [Congiu] - 8.1-8.3 (pg. 241 250) 08.a DMA Accesso Diretto alla Memoria Motivazioni Organizzazione dei trasferimenti DMA Arbitraggio del bus di memoria Trasferimento di un blocco di dati

Dettagli

Approssimazione polinomiale di funzioni e dati

Approssimazione polinomiale di funzioni e dati Approssimazione polinomiale di funzioni e dati Approssimare una funzione f significa trovare una funzione f di forma più semplice che possa essere usata al posto di f. Questa strategia è utilizzata nell

Dettagli

Metodi Numerici per Equazioni Ellittiche

Metodi Numerici per Equazioni Ellittiche Metodi Numerici per Equazioni Ellittiche Vediamo ora di descrivere una tecnica per la risoluzione numerica della più semplice equazione ellittica lineare, l Equazione di Laplace: u xx + u yy = 0, (x, y)

Dettagli

Algoritmi di scheduling - Parte 2

Algoritmi di scheduling - Parte 2 Algoritmi di scheduling - Parte 2 Automazione I 12/11/2013 Vincenzo Suraci STRUTTURA DEL NUCLEO TEMATICO ALGORITMO DEADLINE MONOTONIC PRIORITY ORDERING (DMPO) ALGORITMO TIMELINE SCHEDULING (TS) SCHEDULING

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

ISTITUTO TECNICO ECONOMICO MOSSOTTI

ISTITUTO TECNICO ECONOMICO MOSSOTTI CLASSE III INDIRIZZO S.I.A. UdA n. 1 Titolo: conoscenze di base Conoscenza delle caratteristiche dell informatica e degli strumenti utilizzati Informatica e sistemi di elaborazione Conoscenza delle caratteristiche

Dettagli

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6

Introduzione. Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD... 6 Appunti di Calcolatori Elettronici Esecuzione di istruzioni in parallelo Introduzione... 1 Classificazione di Flynn... 2 Macchine a pipeline... 3 Macchine vettoriali e Array Processor... 4 Macchine MIMD...

Dettagli

Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME

Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME Politecnico di Milano Facoltà di Ingegneria dell Informazione AGENTI AUTONOMI E SISTEMI MULTIAGENTE Appello COGNOME E NOME 5 luglio 2006 RIGA COLONNA MATRICOLA Il presente plico pinzato, composto di quattro

Dettagli

Algoritmi e strutture dati. Codici di Huffman

Algoritmi e strutture dati. Codici di Huffman Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per

Dettagli

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU

CALCOLATORI ELETTRONICI A cura di Luca Orrù. Lezione n.7. Il moltiplicatore binario e il ciclo di base di una CPU Lezione n.7 Il moltiplicatore binario e il ciclo di base di una CPU 1 SOMMARIO Architettura del moltiplicatore Architettura di base di una CPU Ciclo principale di base di una CPU Riprendiamo l analisi

Dettagli

Dimensione di uno Spazio vettoriale

Dimensione di uno Spazio vettoriale Capitolo 4 Dimensione di uno Spazio vettoriale 4.1 Introduzione Dedichiamo questo capitolo ad un concetto fondamentale in algebra lineare: la dimensione di uno spazio vettoriale. Daremo una definizione

Dettagli

Sistema operativo: Gestione della memoria

Sistema operativo: Gestione della memoria Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e

Dettagli

Algoritmi paralleli per la moltiplicazione di matrici

Algoritmi paralleli per la moltiplicazione di matrici UNIVERSITA CA FOSCARI VENEZIA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Progetto di Calcolo Parallelo Prof. S. Orlando Algoritmi paralleli per la moltiplicazione

Dettagli

Intelligenza Artificiale. Metodi di ricerca

Intelligenza Artificiale. Metodi di ricerca Intelligenza Artificiale Metodi di ricerca Marco Piastra Metodi di ricerca - 1 Ricerca nello spazio degli stati (disegno di J.C. Latombe) I nodi rappresentano uno stato Gli archi (orientati) una transizione

Dettagli

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf

Il linguaggio SQL: trigger. Versione elettronica: 04.7.SQL.trigger.pdf Il linguaggio SQL: trigger Sistemi Informativi T Versione elettronica: 04.7.SQL.trigger.pdf DBMS attivi Un DBMS si dice attivoquando dispone di un sottosistema integrato per definire e gestire regole I

Dettagli

Interpolazione ed approssimazione di funzioni

Interpolazione ed approssimazione di funzioni Interpolazione ed approssimazione di funzioni Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 9 novembre 2007 Outline 1 Polinomi Valutazione di un polinomio Algoritmo di Horner

Dettagli

INTRODUZIONE A EXCEL ESERCITAZIONE I

INTRODUZIONE A EXCEL ESERCITAZIONE I 1 INTRODUZIONE A EXCEL ESERCITAZIONE I Corso di Idrologia e Infrastrutture Idrauliche Prof. Roberto Guercio Cos è Excel 2 Foglio di calcolo o foglio elettronico è formato da: righe e colonne visualizzate

Dettagli

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1)

La gestione di un calcolatore. Sistemi Operativi primo modulo Introduzione. Sistema operativo (2) Sistema operativo (1) La gestione di un calcolatore Sistemi Operativi primo modulo Introduzione Augusto Celentano Università Ca Foscari Venezia Corso di Laurea in Informatica Un calcolatore (sistema di elaborazione) è un sistema

Dettagli