Somma di un array di N numeri in MPI

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Somma di un array di N numeri in MPI"

Transcript

1 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Elaborato di Calcolo Parallelo Somma di un array di N numeri in MPI Anno Accademico 2011/2012 Professoressa Alessandra D Alessio Studenti

2 Definizione del Problema Il punto di partenza del nostro elaborato è il calcolo della somma di N numeri eseguito su di un architettura parallela MIMD multi computer, in particolare ci avvarremo di quella a 64 CPU (16 x Intel Xeon E bit) offerta dall Università degli Studi di Napoli Federico II attraverso l infrastruttura S.Co.P.E.. L obiettivo è la valutazione dell efficienza dell algoritmo da noi implementato, valutazione a cui giungeremo raccogliendo i risultati dei diversi test eseguiti (che si differenziano per il numero di elementi da sommare e/o per il numero di processori coinvolti ) in tre parametri fondamentali: tempo impiegato dall algoritmo parallelo con p processori T(p), speed-up S(p) ed efficienza E(p). 2

3 Descrizione dell algoritmo Nome capitolo Esistono tre differenti algoritmi paralleli per il calcolo della somma di N numeri, tutti applicabili non appena ciascun processore disponga della somma locale di una parte degli elementi totali, somma che sarà di sua esclusiva competenza. L eterogeneità tra i vari approcci si giustifica notando come ciascuno di essi rappresenti una diversa proposta di gestione degli scambi delle somma parziali, locali ad ogni processore. La strategia implementata dal nostro algoritmo è la seconda, anche se potenzialmente potrebbe degenerare nella prima, come sarà chiarito in seguito. Le somme parziali sono calcolate e accumulate nelle memorie dei processori coinvolti secondo la mappa descritta da un albero binario, la cui base avrà un numero di nodi pari al numero di processori (Figura 1). I nodi disposti nei livelli successivi costituiscono, quindi, ancora delle somme parziali ma del cui calcolo si fà carico uno solo dei due processori figli; ovviamente solo dopo aver ricevuto il risultato parziale dall altro. Per applicare questa strategia sarà necessario disporre di un numero di processori pari ad una potenza del 2. A differenza della prima, in cui il carico di lavoro è tutto sbilanciato su un solo processore che somma i risultati parziali ottenuti dalle altre macchine della rete, la seconda strategia prevede un numero di passi dimezzato e la possibilità, ad ogni passo, di lavorare in parallelo per coppie distinte di processori. Tuttavia il carico di gestione risulta parzialmente distribuito perché non tutti i processori proseguono le elaborazioni ad ogni passo temporale; di fatto al termine dell algoritmo esclusivamente il nodo accentratore 3

4 sarà possessore del risultato. Figura 1 Esempio II strategia con 4 processori Passiamo alla descrizione dell algoritmo sviluppato. Dopo aver definito le variabili, inizializziamo l ambiente di esecuzione MPI tramite la funzione di libreria MPI_Init, ad ogni processore assegniamo nella variabile numproc il numero di processori coinvolti sfruttando la funzione di libreria MPI_Comm_size; mentre con la MPI_Comm_rank il processore chiamante potrà memorizzare nella variabile id il proprio identificativo. La variabile in cui andremo a memorizzare la somma totale ( sommatotale ) è stata definita come un unsigned int per evitare la possibilità di determinare un overflow. Seguono dei controlli sugli input per verificare la correttezza del numero e del tipo di input passati. In particolare l esito del controllo sul numero dei processori determina la strategia che sarà utilizzata, in quanto nel caso in cui numproc non fosse una potenza del 2 si ricadrebbe nella I strategia. In seguito sono allocati dinamicamente ed inizializzati solo dal processore 0 i vettori SendCount e Displs, entrambi sono, però, definiti da ciascun processore pena il non funzionamento della MPI_Scatterv utilizzata in seguito. I due vettori considerati 4

5 sono atti a contenere rispettivamente il numero di elementi che ogni singolo processore dovrà sommare localmente nello step immediatamente precedente l applicazione della strategia e l offset che garantirà alla funzione MPI_Scatterv il posizionamento corretto, nel vettore contenente gli elementi da sommare, del punto a partire dal quale inviare gli elementi ad ogni singolo processore. L impiego della funzione calloc per l allocazione garantisce, al contrario della malloc, anche l inizializzazione degli stessi a zero; inoltre l allocazione è dinamica perché i parametri di input del main saranno noti a tempo di esecuzione, passati dal file PBS. Nelle memorie di tutti i processori sarà allocato dinamicamente un altro vettore ( somma ) la cui lunghezza è pari al numero di elementi che ogni processore riceverà in prima battuta. Nel codice successivo facciamo allocare dinamicamente al processore 0 il vettore degli elementi da sommare, in particolare si è scelto di porli tutti pari ad 1 per evitare overflow nel caso della somma di un numero elevato di elementi. Infine sfruttando la funzioni MPI_Scatterv il processore 0 può distribuire a ciascun processore del MPI_COMM_WORLD gli elementi da sommare localmente anche nel caso in cui il numero totale degli stessi non sia un multiplo del numero dei processori (in questo caso la differenza del numero di elementi da sommare per ogni singolo processore può essere al più pari ad 1 ). La funzione MPI_Barrier garantisce che il calcolo dei tempi ( ricavato dal processore 0 come differenza degli intervalli temporali tin e tfin restituiti dalla funzione di libreria MPI_Wtime ) avvenga solo dopo che tutti i processori abbiano ricevuto gli elementi di cui calcolare la somma. La seconda strategia è implementata nel caso in cui il numero di processori sia una potenza del due mediante la funzione MPI_Reduce, eseguita da ciascun processore dopo il calcolo della somma degli elementi ricevuti attraverso la MPI_Scatterv. Prima della MPI_Finalize abbiamo deallocato tutti i puntatori utilizzati con la funzione free. 5

6 Input, Output e situazioni d errore Descriviamo, ora, il modo di funzionamento dell algoritmo da noi implementato, andando a specificare gli input forniti, gli output ottenuti e le possibili situazioni d errore in cui è possibile incorrere. Parametri di Input I parametri forniti in ingresso al programma da noi sviluppato sono due: - n: lunghezza del vettore che contiene gli elementi di cui effettuare la somma. E un intero positivo. Se omesso è settato al valore di default, n=20. - p: numero di processori a cui sarà sottomessa l esecuzione dell algoritmo. Il sistema su cui andiamo a lavorare è dotato di 64 core, quindi p dovrà essere necessariamente inferiore a tale numero. Si noti che il vettore degli elementi è stato riempito, all interno del codice, da un valore numerico costante (1), in quanto lo scopo principale di questo lavoro è quello di mostrare l efficienza dell algoritmo di somma parallela. Parametri di Output Il programma da noi implementato fornisce come output, mostrati a video al termine 6

7 dell esecuzione, due parametri: - Il tempo impiegato per effettuare i calcoli, in maniera tale da poter fare delle valutazioni riguardanti l efficienza dell algoritmo. - La somma degli n elementi, calcolata in parallelo sul numero di processori indicati in input. I parametri di input vengono forniti al sistema mediante il file somma.pbs e, all interno dello stesso file, viene stabilito che il sistema genererà il file di output somma.out al termine dell esecuzione. Il file stabilisce anche la generazione di un file somma.err che conterrà gli eventuali errori restituiti dal sistema. Il formato PBS (Portable Batch System) permette di comandare l esecuzione di un insieme di jobs su un architettura parallela. Abbiamo scritto il file somma.pbs in maniera tale che esso fornisca in ingresso i parametri, evitando di dover modificare il file somma.c per ogni esecuzione. Riportiamo qui di seguito il contenuto del file somma.pbs : #!/bin/bash ########################## # # # The PBS directives # # # ########################## #PBS -q studenti #PBS -l nodes=2 #PBS -N somma #PBS -o somma.out 7

8 #PBS -e somma.err ########################################## # # # Output some useful job information. # # # ########################################## NCPU=`wc -l < $PBS_NODEFILE` echo echo ' This job is allocated on '${NCPU' cpu(s)' echo 'Job is running on node(s): ' cat $PBS_NODEFILE PBS_O_WORKDIR=$PBS_O_HOME/somma echo echo PBS: qsub is running on $PBS_O_HOST echo PBS: originating queue is $PBS_O_QUEUE echo PBS: executing queue is $PBS_QUEUE echo PBS: working directory is $PBS_O_WORKDIR echo PBS: execution mode is $PBS_ENVIRONMENT echo PBS: job identifier is $PBS_JOBID echo PBS: job name is $PBS_JOBNAME echo PBS: node file is $PBS_NODEFILE echo PBS: current home directory is $PBS_O_HOME echo PBS: PATH = $PBS_O_PATH echo echo "Eseguo: /usr/lib64/openmpi/1.4-gcc/bin/mpicc -o $PBS_O_WORKDIR/somma $PBS_O_WORKDIR/somma.c" 8

9 /usr/lib64/openmpi/1.4-gcc/bin/mpicc -o $PBS_O_WORKDIR/somma $PBS_O_WORKDIR/somma.c echo "Eseguo: /usr/lib64/openmpi/1.4-gcc/bin/mpiexec -machinefile $PBS_NODEFILE -np $NCPU $PBS_O_WORKDIR/somma" /usr/lib64/openmpi/1.4-gcc/bin/mpiexec -machinefile $PBS_NODEFILE -np $NCPU $PBS_O_WORKDIR/somma Il numero di processori viene fornito mediante la direttiva #PBS -l nodes=x, mentre il numero n di elementi del vettore viene sottomesso aggiungendolo in coda alla direttiva di esecuzione mpiexec. Situazioni d errore e avvertenze Elenchiamo qui di seguito le situazioni d errore che vengono restituite dal programma nel caso di un errato utilizzo dello stesso. Elencheremo, inoltre, le avvertenze che saranno mostrate a video nel caso di situazioni particolari; tali avvertenze non comportano una terminazione del programma. Per quanto riguarda le situazioni d errore: 1) Errore dovuto all inserimento di un numero più di un argomento. L unico, eventuale, argomento da fornire in input è n, il numero di elementi dell array di cui effettuare la somma. ERRORE! Sono stati inseriti troppi argomenti! Sintassi corretta: Somma n_processori [dim_array] Il parametro [dim_array] e' opzionale ed e' settato a 20 di default. 9

10 2) Errore dovuto all inserimento di un valore negativo come dimensione dell array ERRORE! La dimensione dell'array non può essere negativa! Il programma terminerà. 3) Errore dovuto all inserimento di un valore non intero come dimensione dell array ERRORE! La dimensione dell'array deve essere un intero! Il programma terminerà. 4) Errore dovuto alla richiesta di esecuzione su un numero di core superiore a 64, ovvero il numero di core di cui dispone il sistema su cui il programma è stato testato. ERRORE! Il sistema dispone di 64 core. Non è possibile richiederne un numero superiore. Il programma terminerà. Per quanto riguarda le avvertenze: - La funzione scelta per la soluzione del problema della somma parallela è la funzione MPI_Reduce(). Tale funzione, a seconda del numero di processori sulla quale è richiamata, andrà ad implementare una strategia piuttosto che un altra. In particolare, se il numero di processori è una potenza del due, la funzione svolgerà al suo interno i passi necessari alla realizzazione della II strategia. Se invece il numero di processori non rispetta questa condizione, essa implementerà la I strategia. Essendo il programma nato per il testing del funzionamento della II strategia, abbiamo ritenuto opportuno segnalare all utente tale situazione. Ad ogni modo, dato che il programma funziona ugualmente e restituisce un risultato corretto, non abbiamo ritenuto necessaria la terminazione dello stesso. Per questo motivo abbiamo deciso di ricorrere alla stampa a video del seguente messaggio: 10

11 WARNING! Il numero di processori non e' una potenza del due! Verrà utilizzata la strategia I! 11

12 Analisi del software Adesso concentreremo l attenzione sulle tabelle e i grafici relativi al calcolo del tempo di esecuzione T(p), dello speed-up S(p) e dell efficienza E(p). Tempo di esecuzione T(p) Nella tabella che segue sono riportati i valori del tempo di esecuzione registrato al variare del numero di processori P e del numero di elementi da sommare N. Quindi muovendoci lungo la colonna possiamo capire se c è un vantaggio o meno legato all aumento del numero di processori coinvolti. Tutti i valori del T(p) sono espressi in microsecondi, mentre ciascuno dei valori in tabella è stato ottenuto eseguendo la media sui campioni ottenuti eseguendo una decina di prove; un analogo discorso si estende anche ai valori posizionati nelle tabella del S(p) e dell E(p). N p 1 9, , , , , , , , , , , , , , , , , , , , , , , , ,41579 Tabella 1 Tempo di esecuzione T(p) 12

13 Figura 2 T(p) al variare del numero di processori e del numero di elementi da sommare Guardando la Figura 2 e la Tabella 1 possiamo notare che per N fissato non è sempre conveniente l utilizzo di un architettura parallela. In particolare per N=1.000 i tempi di esecuzione quasi raddoppiano passando da un incremento all altro del numero di processori, il caso più drastico, ma ciò accomuna tutti gli N è quello di p=16. Per quanto concerne N=10000 è quasi indifferente l impiego di più processori, mentre iniziamo a scoprirne i vantaggi a partire da N= e ad avere dei tempi particolarmente soddisfacenti per N= Negli ultimi tre casi citati minori tempi si registrano con p=8. Invertendo il punto di vista e quindi ponendoci con la prospettiva del N variabile con p fissato, i tempi, com è ragionevole che sia, aumentano ma nel caso p=16 si attestano su valori insolitamente vicini considerate le differenze tra gli ordini di grandezza degli N considerati. 13

14 Speed-up S(p) Nella tabella che segue sono riportati i valori dello speed-up, ricordiamo che esso misura la riduzione del tempo di esecuzione rispetto all algoritmo su 1 processore. Il valore è stato ottenuto a partire dal T(p) medio calcolato a partire da una decina di campioni. N p 2 0,4794 1,2625 1,892 1,7215 1, ,3297 1,1526 3,2407 3,3914 3, ,2038 0,8385 4,0776 6,3765 6, , , ,0087 0,0921 0,7369 Tabella 2 Valori dello Speed-up S(p) al variare di N e di P Figura 3 Speed up S(p) al variare di N e di p 14

15 Il punto di riferimento per giudicare lo speed-up delle nostre esecuzioni è la linea tratteggiata, che rappresenta il valore ideale. Per N=1.000 e N= siamo ancora lontani dall approssimarci al miglior caso possibile, come accade invece per gli altri tre valori della N. Anche con questo grafico abbiamo la conferma che p=16 non porti nessun miglioramento, mentre valori nei dintorni di quelli ideali sono stati registrati per p=2 con N= e N= , per p=4 con N= ; con p=8 a partire da N= traiamo dei benefici dall impiego dell architettura parallela, ma non al punto da essere ottimi come nei due casi su menzionati. Efficienza E(p) Nella tabella che segue sono riportati i valori dell efficienza, indicativa di quanto l algoritmo sfrutti il parallelismo del calcolatore. N p 2 0,2397 0, ,946 0, , , , , , , , , ,5097 0, , ,18E-05 5,74E-05 0, , , Tabella 3 Valori dell Efficienza E(p) al variare di N e p Il valore di riferimento di E(p) è rappresentato nella Figura 4, in rapporto allo stesso scopriamo che i nostri test forniscono un risultato interessante per N= e N= con p=2 e con p=4, mentre sugli stessi processori per N= si ottengono valori quasi ideali. In tutti gli altri casi all aumentare di p l efficienza degrada, raggiungendo il suo minimo nel caso p=16; ciò in piena aderenza con le osservazioni suggeriteci dai grafici di T(p) ed S(p). 15

16 Figura 4 Efficienza E(p) al variare di N e di p 16

17 Esempi d uso e codice In questo capitolo verranno illustrati degli esempi d uso dell algoritmo. Mostreremo in che modo verrà richiamato il programma e come esso verrà mostrato a video. Inoltre, mostreremo qui il codice del programma da noi sviluppato, il quale sarà correlato da una documentazione interna che ne spiegherà il funzionamento. Esempi d uso Mostriamo un esempio del risultato che si ottiene a video andando a eseguire il programma fornendo come input un numero di elementi n= 20 e richiedendo che l algoritmo venga eseguito su p=4 processori. Come illustrato nel capitolo dedicato a Input, Output e Situazioni d Errore, tali input saranno forniti al sistema mediante il file somma.pbs. 17

18 Figura 5 Esempio esecuzione con N=20 Si nota che vengono mostrate a video le informazioni sugli input forniti, n e p, il tempo totale impiegato per il calcolo della somma e, infine, il risultato dell elaborazione. Il risultato visibile, somma=20, è corretto in quanto è stato scelto di riempire il vettore con una costante unitaria; tale scelta è stata operata in quanto il nostro obiettivo era quello di ottenere informazioni significative riguardo i tempi di esecuzione, essendo già stata provata la correttezza dell algoritmo sviluppato. Codice del programma Riportiamo qui di seguito il codice da noi scritto per la realizzazione di questo programma. Abbiamo utilizzato il linguaggio di programmazione C. Il codice è stato corredato di una documentazione interna che spiega le varie istruzioni utilizzate. 18

19 /*Algoritmo per il calcolo della somma di n numeri. Autori: Giuffrida Serena M63/239 Lampognana Francesca M63/144 Mele Gianluca M63/145 */ #include <stdio.h> #include <mpi.h> #include "malloc.h" #define ROOT 0 int main(int argc, char **argv) { /***Definizione delle variabili***/ int id, numproc; int dim,dimarray=20; // questo è il valore di default del numero di elementi da sommare unsigned int sommatotale; // unsigned in quanto la somma è un valore positivo in quanto sommiamo tra di loro valori positivi; così facendo sarà possibile sommare un numero maggiore di elementi prima di andare in overflow unsigned int temp=0; int i; double tin,tfin,tempotot; float warning; int* SendCount=0; // Tali puntatori vengono utilizzati ed allocate solo dal int* Displs=0; // processore 0 ma devono essere visti da tutti per le varie int* Vettore=0; // funzioni offerte da MPI /****Inizializzazione***/ MPI_Init(&argc, &argv); /***Numero processori***/ MPI_Comm_size(MPI_COMM_WORLD, &numproc); /***Individuazione ranks***/ MPI_Comm_rank(MPI_COMM_WORLD, &id); // Controlli sugli input if(argc==2) //nel caso in cui sia stato specificato nel file pbs il numero di elementi da sommare dimarray=atoi(argv[1]); else if(argc>2){ //controllo su eventuale inserimento di un numero eccessivo di argomenti if(!id){ printf("errore! Sono stati inseriti troppi argomenti!\n"); printf("\nsintassi corretta:\n"); printf("somma n_processori [dim_array]\n\n"); printf("il parametro [dim_array] e' opzionale ed e' settato a 20 di default.\n"); MPI_Finalize(); return -1; 19

20 //Avvertenza riguardante il numero di processori warning=log(numproc)/log(2); //se il numero di processi specificati non è una potenza del 2 sarà calcolata warning=warning-(int)warning; //la somma con la prima strategia if(warning!=0) if(!id) printf("warning! Il numero di processori non e' una potenza del due!\nverra' utilizzata la strategia I!\n"); //Controllo sull'eventuale inserimento di una dimensione negativa dell'array if(dimarray<0){ if(!id){ printf("errore! La dimensione dell'array non può essere negativa!\n"); printf("il programma terminerà.\n"); MPI_Finalize(); return -1; //Controllo sull'eventuale richiesta di esecuzione su un numero eccessivo di processori if(numproc>64){ if(!id){ printf("errore! Il sistema dispone di 64 core. Non è possibile richiederne un numero superiore.\n"); printf("il programma terminerà.\n"); MPI_Finalize(); return -1; //Controllo su inserimento di una dimensione dell'array non intera if((dimarray-(int)dimarray)!=0){ if(!id){ printf("errore! La dimensione dell'array deve essere un intero!\n"); printf("il programma terminerà.\n"); MPI_Finalize(); return -1; //Fine controlli sugli input if(!id){ //Istanzio dinamicamente i vettori necessari alla ScatterV SendCount=(int*)calloc(numproc,sizeof(int)); Displs=(int*)calloc(numproc,sizeof(int)); //Il processore 0 inizializza il vettore SendCount for(i=0;i<numproc;i++) SendCount[i]=(int)(dimarray/numproc); if(dimarray%numproc>0) //nel caso in cui il numero di elementi da sommare non è multiplo for(i=0;i<dimarray%numproc;i++) //o sottomultiplo del numero di processori SendCount[i]=SendCount[i]+1; //Il processore 0 inizializza il vettore Displs Displs[0]=0; for(i=1;i<numproc;i++) Displs[i]=Displs[i-1]+SendCount[i-1]; dim=(int)(dimarray/numproc); if(id<(dimarray%numproc)) //nel caso in cui il numero di elementi da sommare non è dim=dim+1; //multiplo o sottomultiplo del numero di processori 20

21 //Istanzio il vettore in cui l'id-esimo processore riceve i numeri che andrà a sommare int* somma=(int*)calloc(dim,sizeof(int)); //Il processore ROOT inizializza i valori del Vettore if(!id){ printf("numero di processori: %d.\n",numproc); printf("dimensione array: %d.\n",dimarray); //Istanzio il vettore che contiene gli elementi da sommare Vettore=(int*)calloc(dimarray,sizeof(int)); for(i=0;i<dimarray;i++) Vettore[i]=1; //Il vettore sarà riempito da una costante unitaria //CALCOLO SU PIU PROCESSORI //Mediante la funzione ScatterV, ad ogni processore vengono distribuiti gli elementi da sommare //Avendo usato tale funzione, il numero di elementi può variare da processore a processore MPI_Scatterv(Vettore,SendCount,Displs,MPI_INT,somma,dim,MPI_INT,ROOT,MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); //aspettiamo che tutti abbiano ricevuto gli elementi da sommare //Inizio valutazione dei tempi if(!id) tin=mpi_wtime(); //restituisce in tin il tempo a partire dall'istante immediantemente precedente //l'inizio del calcolo della somma //Ogni processore effettua il calcolo for(i=0;i<dim;i++) temp=temp+somma[i]; //La funzione Reduce effettua la riunione dei risultati calcolati da ogni processore, calcolando la somma totale. //Per farlo utilizzerà la strategia I o la II a seconda di quanti siano i processori richiesti. //Il risultato complessivo verrà passato al processore ROOT nella variabile sommatotale MPI_Reduce(&temp,&sommatotale,1,MPI_INT,MPI_SUM,ROOT,MPI_COMM_WORLD); MPI_Barrier(MPI_COMM_WORLD); //attendiamo che tutti i processori abbiano inviato le somme parziali if(!id){ tfin=mpi_wtime(); //restituisce in tfin il tempo a partire dall'istante immediantemente successivo // alla fine del calcolo della somma tempotot=1.e6*(tfin-tin); //il tempo impiegato viene calcolato come differenza di intervalli printf("tempo totale impiegato: %f.\n",tempotot); printf("algoritmo PARALLELO\n"); printf("somma su %d processori: %d.\n",numproc,sommatotale); //Deallocazione delle variabili dinamiche istanziate all'interno del programma. free(vettore); free(somma); free(sendcount); free(displs); MPI_Finalize(); return 0; 21

Prodotto Matrice - Vettore in OpenMP

Prodotto Matrice - Vettore in OpenMP Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Elaborato di Calcolo Parallelo Prodotto Matrice - Vettore in OpenMP Anno Accademico 2011/2012 Professoressa Alessandra D Alessio Studenti

Dettagli

Si digita login e password e si clicca su accedi. Si apre la finestra di collegamento:

Si digita login e password e si clicca su accedi. Si apre la finestra di collegamento: Corso di Laurea Specialistica Ingegneria Informatica Laboratorio di Calcolo Parallelo Prof. Alessandra d Alessio GUIDA AL LABORATORIO DI CALCOLO PARALLELO Il progetto SCoPE (www.scope.unina.it) ha messo

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

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

Prodotto Matrice - Vettore in MPI II Strategia

Prodotto Matrice - Vettore in MPI II Strategia Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Esercitazione di Calcolo Parallelo Prodotto Matrice - Vettore in MPI II Strategia Anno Accademico 2010/2011 Prof.ssa Alessandra D'alessio

Dettagli

UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II

UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II PROGETTO DI CALCOLO PARALLELO SOMMA DEGLI ELEMENTI DI UN VETTORE STUDENTE Gabriele Piantadosi (885/000282) 1. OBIETTIVI E AMBIENTE DI CALCOLO Si vuole distribuire

Dettagli

puntatori Lab. Calc. AA 2007/08 1

puntatori Lab. Calc. AA 2007/08 1 puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene

Dettagli

ENEA GRID. Corso di introduzione all'uso ed all'amministrazione. Autore: Alessandro Secco alessandro.secco@nice-italy.com

ENEA GRID. Corso di introduzione all'uso ed all'amministrazione. Autore: Alessandro Secco alessandro.secco@nice-italy.com ENEA GRID Corso di introduzione all'uso ed all'amministrazione Autore: Alessandro Secco alessandro.secco@nice-italy.com 1 Lezione 4 Riepilogo lezione 3 LSF: Job environment LSF: Lancio di un job multi-caso

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

ENEA GRID. CRESCO: Corso di introduzione. Autore: Alessandro Secco alessandro.secco@nice-italy.com

ENEA GRID. CRESCO: Corso di introduzione. Autore: Alessandro Secco alessandro.secco@nice-italy.com ENEA GRID CRESCO: Corso di introduzione Autore: Alessandro Secco alessandro.secco@nice-italy.com 1 Lezione 1 Introduzione Architettura Connessione Lancio di job Riferimenti 2 Introduzione 3 Introduzione

Dettagli

La gestione della memoria

La gestione della memoria La gestione della memoria DOTT. ING. LEONARDO RIGUTINI DIPARTIMENTO INGEGNERIA DELL INFORMAZIONE UNIVERSITÀ DI SIENA VIA ROMA 56 53100 SIENA UFF. 0577234850-7102 RIGUTINI@DII.UNISI.IT HTTP://WWW.DII.UNISI.IT/~RIGUTINI/

Dettagli

Breve riepilogo della puntata precedente:

Breve riepilogo della puntata precedente: Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta

Dettagli

Allocazione dinamica della memoria - riepilogo

Allocazione dinamica della memoria - riepilogo Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della

Dettagli

Altri metodi di indicizzazione

Altri metodi di indicizzazione Organizzazione a indici su più livelli Altri metodi di indicizzazione Al crescere della dimensione del file l organizzazione sequenziale a indice diventa inefficiente: in lettura a causa del crescere del

Dettagli

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa

Ricerche, ordinamenti e fusioni. 5.1 Introduzione. 5.2 Ricerca completa Ricerche, ordinamenti e fusioni 5.1 Introduzione Questo capitolo ci permette di fare pratica di programmazione utilizzando gli strumenti del linguaggio introdotti finora. A una prima lettura possono essere

Dettagli

ELETTRONICA Tema di Sistemi elettronici automatici Soluzione

ELETTRONICA Tema di Sistemi elettronici automatici Soluzione ELETTRONICA Tema di Sistemi elettronici automatici Soluzione La traccia presenta lo sviluppo di un progetto relativo al monitoraggio della temperatura durante un processo di produzione tipico nelle applicazione

Dettagli

Funzioni in C. Violetta Lonati

Funzioni in C. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni

Dettagli

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine

Dettagli

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) 12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,

Dettagli

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Università di Roma Tre Facoltà di Scienze M.F.N. Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Introduzione a GCC: GNU Compiler Collection

Introduzione a GCC: GNU Compiler Collection Introduzione a GCC: GNU Compiler Collection Caratteristiche di GCC Compilatore multipiattaforma modulare Disponibile per tutti i principali sistemi operativi Può produrre programmi per la maggior parte

Dettagli

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi

Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009. Prof. Raffaele Nicolussi Fondamenti di Informatica Ingegneria Clinica Lezione 19/11/2009 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via B. Castiglione 59-00142 Roma Docente Raffaele Nicolussi rnicolussi@fub.it Lezioni

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

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2014-15 Pietro Frasca Lezione 5 Martedì 21-10-2014 Thread Come abbiamo detto, un processo è composto

Dettagli

Funzioni. Il modello console. Interfaccia in modalità console

Funzioni. Il modello console. Interfaccia in modalità console Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi

Dettagli

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Introduzione. Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache... Appunti di Calcolatori Elettronici Concetti generali sulla memoria cache Introduzione... 1 Il principio di localizzazione... 2 Organizzazioni delle memorie cache... 4 Gestione delle scritture in una cache...

Dettagli

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job.

Gestione dei processi. Marco Cesati. Schema della lezione. Blocco di controllo 2. Sezioni e segmenti. Gestione dei processi. Job. Di cosa parliamo in questa lezione? Lezione 4 Cosa è un processo e come viene gestito dal SO 1 e job 2 Il blocco di controllo Sistemi operativi 3 Struttura di un file eseguibile 4 La schedulazione dei

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

I puntatori e l allocazione dinamica di memoria

I puntatori e l allocazione dinamica di memoria I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in

Dettagli

Tipi di Dato Ricorsivi

Tipi di Dato Ricorsivi Tipi di Dato Ricorsivi Luca Abeni September 2, 2015 1 Tipi di Dato Vari linguaggi di programmazione permettono all utente di definire nuovi tipi di dato definendo per ogni nuovo tipo l insieme dei suoi

Dettagli

LabVIEW offre un ambiente di programmazione grafica

LabVIEW offre un ambiente di programmazione grafica 03 COME OTTIMIZZARE IN LABVIEW APPLICAZIONI DI TEST AUTOMATIZZATI PER PROCESSORI MULTICORE David Hall Vediamo come delle applicazioni scritte in LabVIEW possono essere ottimizzate sfruttando tecniche di

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

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C Università degli Studi di Cagliari Corso di Laurea in Ingegneria Biomedica (Industriale), Chimica, Elettrica, e Meccanica FONDAMENTI DI INFORMATICA 1 http://www.diee.unica.it/~marcialis/fi1 A.A. 2010/2011

Dettagli

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile

Informatica Medica C++ Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa. Sviluppo di un applicazione eseguibile Corso di Laurea in Ingegneria Biomedica Informatica Medica I semestre Docenti: Fabio Solari e Manuela Chessa Prof. Fabio Solari: fabio.solari@unige.it (010-3532059) Prof. Manuela Chessa: manuela.chessa@unige.it

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 28 Febbraio 2006 Esercizio 1 (4 punti) Date le seguenti variabili int A[] = 2,3,7,-2,5,8,-4; int N = 7; int min = 3; int i; Scrivere la porzione di codice

Dettagli

Sistemi Operativi (modulo di Informatica II) I processi

Sistemi Operativi (modulo di Informatica II) I processi Sistemi Operativi (modulo di Informatica II) I processi Patrizia Scandurra Università degli Studi di Bergamo a.a. 2009-10 Sommario Il concetto di processo Schedulazione dei processi e cambio di contesto

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati schifano@fe.infn.it Laurea di Informatica - Università di Ferrara 2011-2012 [1] Strutture dati Dinamiche: Le liste Una lista è una sequenza di elementi di un certo tipo in cui è possibile aggiungere e/o

Dettagli

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti 13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/

Dettagli

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Dall Algoritmo al Programma Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni IL PROGRAMMA Gli algoritmi sono modelli di descrizione astratti e per controllarne il funzionamento devono essere

Dettagli

Linguaggio C - Funzioni

Linguaggio C - Funzioni Linguaggio C - Funzioni Funzioni: Il linguaggio C è di tipo procedurale; ogni programma viene suddiviso in sottoprogrammi, ognuno dei quali svolge un determinato compito. I sottoprogrammi si usano anche

Dettagli

INTERAZIONE CON L UTENTEL

INTERAZIONE CON L UTENTEL IL SISTEMA OPERATIVO Insieme di programmi che opera al di sopra della macchina fisica, mascherandone le caratteristiche e fornendo agli utenti funzionalità di alto livello. PROGRAMMI UTENTE INTERPRETE

Dettagli

Aritmetica dei Calcolatori 2

Aritmetica dei Calcolatori 2 Laboratorio di Architettura 13 aprile 2012 1 Operazioni bit a bit 2 Rappresentazione binaria con segno 3 Esercitazione Operazioni logiche bit a bit AND OR XOR NOT IN OUT A B A AND B 0 0 0 0 1 0 1 0 0 1

Dettagli

int f(char *s, short n, float x) {... } /* definizione di f */ int f(char *, short, float); /* prototipo di f */

int f(char *s, short n, float x) {... } /* definizione di f */ int f(char *, short, float); /* prototipo di f */ Prototipi di funzione Il prototipo di una funzione costituisce una dichiarazione della funzione, e come tale fornisce al compilatore le informazioni necessarie a gestire la funzione stessa. Nella definizione

Dettagli

2. I THREAD. 2.1 Introduzione

2. I THREAD. 2.1 Introduzione 2. I THREAD 2.1 Introduzione Il tipo di parallelismo che è opportuno avere a disposizione nelle applicazioni varia in base al grado di cooperazione necessaria tra le diverse attività svolte in parallelo:

Dettagli

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio

Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto

Dettagli

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti

Corso di Sicurezza Informatica. Sicurezza del software. Ing. Gianluca Caminiti Corso di Sicurezza Informatica Sicurezza del software Ing. Gianluca Caminiti Software Sicuro Privo di errori (logici) che comportino un comportamento inatteso. Tali bug possono minare la sicurezza dell

Dettagli

L ambiente di simulazione SPIM

L ambiente di simulazione SPIM Architettura degli Elaboratori e delle Reti Lezione 14 L ambiente di simulazione SPIM Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 14 1/28

Dettagli

Struttura logica di un programma

Struttura logica di un programma Struttura logica di un programma Tutti i programmi per computer prevedono tre operazioni principali: l input di dati (cioè l inserimento delle informazioni da elaborare) il calcolo dei risultati cercati

Dettagli

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI mumolo@units.it

Chiamate di sistema per la Gestione dei processi in POSIX. E.Mumolo, DEEI mumolo@units.it Chiamate di sistema per la Gestione dei processi in POSIX E.Mumolo, DEEI mumolo@units.it Process id ed altri identificatori pid_t getpid(); // Process id del processo chiamante pid_t getppid(); // Process

Dettagli

Architettura degli elaboratori Seconda esercitazione di laboratorio. Dr. Francesco Giacomini e Dr. Matteo Manzali Università degli Studi di Ferrara

Architettura degli elaboratori Seconda esercitazione di laboratorio. Dr. Francesco Giacomini e Dr. Matteo Manzali Università degli Studi di Ferrara Architettura degli elaboratori Seconda esercitazione di laboratorio Dr. Francesco Giacomini e Dr. Matteo Manzali Università degli Studi di Ferrara Linee generali (1) L esercitazione consiste nell implementare

Dettagli

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2015-16 Pietro Frasca Lezione 15 Martedì 24-11-2015 Struttura logica del sottosistema di I/O Processi

Dettagli

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario

Processi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario Processi e thread Dipartimento di Informatica Università di Verona, Italy Sommario Concetto di processo Stati di un processo Operazioni e relazioni tra processi Concetto di thread Gestione dei processi

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

LAVORO ESTIVO DI INFORMATICA CLASSE 2O

LAVORO ESTIVO DI INFORMATICA CLASSE 2O LAVORO ESTIVO DI INFORMATICA CLASSE 2O PER COLORO CHE HANNO AVUTO LA SOSPENSIONE DEL GIUDIZIO, GLI ESERCIZI SVOLTI DEVONO ESSERE CONSEGNATI TASSATIVAMENTE IL GIORNO DELL'ESAME SCRITTO. A CHI È STATO ASSEGNATO

Dettagli

LA RAPPRESENTAZIONE DELLE INFORMAZIONI

LA RAPPRESENTAZIONE DELLE INFORMAZIONI ISTITUTO TECNICO E LICEO SCIENTIFICO TECNOLOGICO ANGIOY LA RAPPRESENTAZIONE DELLE INFORMAZIONI Prof. G. Ciaschetti DATI E INFORMAZIONI Sappiamo che il computer è una macchina stupida, capace di eseguire

Dettagli

Codifica dei numeri negativi

Codifica dei numeri negativi E. Calabrese: Fondamenti di Informatica Rappresentazione numerica-1 Rappresentazione in complemento a 2 Codifica dei numeri negativi Per rappresentare numeri interi negativi si usa la cosiddetta rappresentazione

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C Introduzione al Linguaggio C File I/O Daniele Pighin April 2009 Daniele Pighin Introduzione al Linguaggio C 1/15 Outline File e dati Accesso ai file File I/O Daniele Pighin Introduzione al Linguaggio C

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

Carte Laurea triennale in Comunicazione Digitale Laboratorio di Informatica Generale

Carte Laurea triennale in Comunicazione Digitale Laboratorio di Informatica Generale Appelli di gennaio, febbraio e aprile 2005 Carte Laurea triennale in Comunicazione Digitale Laboratorio di Informatica Generale 1 Descrizione Il progetto consiste nel realizzare un programma per gestire

Dettagli

Verifica e Validazione (V & V) Software e difetti. Processo di V & V. Test

Verifica e Validazione (V & V) Software e difetti. Processo di V & V. Test Software e difetti Il software con difetti è un grande problema I difetti nel software sono comuni Come sappiamo che il software ha qualche difetto? Conosciamo tramite qualcosa, che non è il codice, cosa

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli

Dettagli

16.3.1 Alberi binari di ricerca

16.3.1 Alberi binari di ricerca 442 CAPITOLO 16. STRUTTURE DI DATI DINAMICHE root 7 5 11 2 8 13 10 Figura 16.11 Esempio di albero binario: ogni nodo contiene il dato da immagazzinare e tre puntatori che definiscono le sue relazioni di

Dettagli

Sistemi Operativi (M. Cesati)

Sistemi Operativi (M. Cesati) Sistemi Operativi (M. Cesati) Compito scritto del 16 luglio 2015 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare

Dettagli

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C CORSO DI LABORATORIO DI INFORMATICA CORSO DI LAUREA IN SDM ANNO ACCADEMICO 2011-2012 Docente: R. Sparvoli Esercitazioni: R. Sparvoli, F. Palma OTTAVA ESPERIENZA DI LABORATORIO L elaborazione dei files

Dettagli

Strutture dati in C e loro traduzione in assembler MIPS 1 Direttive assembler per l'allocazione dei dati Prima di iniziare a trattare il problema dell'allocazione delle varie strutture dati, introduciamo

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio di Algoritmi e Strutture Dati Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 18 dicembre 2007 Esercizio 1: rappresentazione di una tabella di occorrenze L obiettivo è quello di rappresentare in modo efficiente

Dettagli

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica

CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica CONTROLLI AUTOMATICI E AZIONAMENTI ELETTRICI Ingegneria Meccatronica CONTROLLI AUTOMATICI e AZIONAMENTI ELETTRICI INTRODUZIONE A MATLAB Ing. Alberto Bellini Tel. 0522 522626 e-mail: alberto.bellini@unimore.it

Dettagli

dall argomento argomento della malloc()

dall argomento argomento della malloc() Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È

Dettagli

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca.

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14. Pietro Frasca. Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2013-14 Pietro Frasca Lezione 3 Martedì 15-10-2013 1 Struttura ed organizzazione software dei sistemi

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015

ESAME SCRITTO DI ELEMENTI DI INFORMATICA E PROGRAMMAZIONE. 27 Gennaio 2015 COGNOME E NOME: MATRICOLA: Civile Ambiente e Territorio Non si possono consultare manuali, appunti e calcolatrici. Esercizio 1: [3 punto] Rappresentare i numeri 36 e 91 (in base 10) in notazione binaria

Dettagli

Realizzazione di un cluster Condor su macchine virtuali

Realizzazione di un cluster Condor su macchine virtuali Realizzazione di un cluster Condor su macchine virtuali Davide Petturiti Sistemi Operativi Avanzati Prof. Osvaldo Gervasi A.A. 2007/2008 Corso di Laurea Specialistica in Informatica Facoltà di Scienze

Dettagli

Le operazioni di allocazione e deallocazione sono a carico del sistema.

Le operazioni di allocazione e deallocazione sono a carico del sistema. Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione

Dettagli

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara

PROGRAMMA SVOLTO DI INFORMATICA ANNO SCOLASTICO 2013/2014. DOCENTE: Villani Chiara LICEO SCIENTIFICO STATALE "FILIPPO LUSSANA" V i a A n g e l o Ma j, 1 2 4 1 2 1 B E R G A M O 035 237502 Fax: 035 236331 Sito e contatti: www.liceolussana.com Codice fiscale: 80026450165 PROGRAMMA SVOLTO

Dettagli

VARIABILI LOCALI E GLOBALI (ESTERNE)

VARIABILI LOCALI E GLOBALI (ESTERNE) VARIABILI LOCALI E GLOBALI (ESTERNE) Le variabili locali sono definite (ed il loro uso dichiarato) nella funzione (o nel blocco) che le usa; nascono quando la funzione entra in esecuzione e muoiono al

Dettagli

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti

Esercitazione Informatica I AA 2012-2013. Nicola Paoletti Esercitazione Informatica I AA 2012-2013 Nicola Paoletti 4 Gigno 2013 2 Conversioni Effettuare le seguenti conversioni, tenendo conto del numero di bit con cui si rappresenta il numero da convertire/convertito.

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag