Prodotto Matrice - Vettore in MPI - III Strategia

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Prodotto Matrice - Vettore in MPI - III Strategia"

Transcript

1 Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Esercitazione di Calcolo Parallelo Prodotto Matrice - Vettore in MPI - III Strategia Anno Accademico 2010/2011 Prof.ssa Alessandra D'alessio Candidati Mario Buonomo Lorenzo Carullo Luigi De Simone

2 Indice 1 Descrizione del problema 1 2 Descrizione Algoritmo Descrizione Input, output, errori e subroutine Analisi del software Analisi Tabelle Tempi Speed Up Efficienza Esempi d uso e Codice 13 Bibliografia 23 i

3 Elenco delle figure 2.1 Blocchi della matrice Suddivisione matrice Suddivisione finale della matrice Invio vettore Calcolo Prodotti parziali Situazione d errore Grafico Tempi Grafico Speed Up Grafico Efficienza Esempio d uso ii

4 Elenco delle tabelle 3.1 Tabella Tempi Tabella Speed Up Tabella Efficienza iii

5 Capitolo 1 Descrizione del problema Si vuole effettuare il calcolo del prodotto matrice vettore: Ax=y, A R nxn, x,y R n su un calcolatore MIMD a memoria distribuita con p processori, con A matrice quadrata di ordine n multiplo del numero di processori. 1

6 Capitolo 2 Descrizione Algoritmo 2.1 Descrizione L algoritmo sequenziale prevede, ovviamente, il calcolo del vettore y componente per componente: y i = n j=1 a i,j x j, con i=1,...,n Siccome il calcolo di ciascun prodotto delle righe della matrice A per il vettore x può essere fatto indipendentemente dagli altri prodotti, l algoritmo parallelo prevede di distribuire il calcolo delle componenti y ai processori utilizzati. La matrice A, di dimensione N, può essere distribuita ai processori secondo varie strategie, quella utilizzata in quest algoritmo, definita come la terza, è la distribuzione per blocchi di dimensione (N/sqrt(p), N/sqrt(p)) utilizzando una griglia bidimensionale. La strategia adottata per distribuire la matrice è stata quella di linearizzare la matrice stessa, e successivamente, di inviare quest ultima dal processore di rank 0 della griglia bidimensionale tramite una scatter ai processori che 2

7 Prodotto Matrice Vettore in MPI appartengono alla prima colonna. Ogni processore della prima colonna avrà un blocco della matrice di dimensione (N/sqrt(p), N/sqrt(p)). Sempre il processo di rank 0 della griglia bidimensionale invia tramite scatter il vettore X questa volta però alla prima riga della griglia bidimensionale in questo modo ogni processore della prima riga avrà un blocco di dimensione N/sqrt(p). Ogni processore della prima riga invia il proprio blocco di X in broadcast lungo la sua colonna d appartenza. Adesso ogni processore avrà il suo blocco della matrice originaria e il vettore x e può effettuare il calcolo riga (appartenente al suo blocco di righe locale) per colonna; ogni processore avrà nella sua memoria locale i risultati parziali e questi andranno poi raccolti e concatenati dal processore root della propria riga tramite un operazione di Reduce il quale scriverà il tutto nel vettore risultato. In figura è mostrato un esempio di suddivisione della matrice A in blocchi a 4 processori: Figura 2.1: Blocchi della matrice 3

8 Prodotto Matrice Vettore in MPI Di seguito è riportata la suddivisione della matrice A suddivisa per strisce orizzontali inviata alla prima colonna della griglia: Figura 2.2: Suddivisione matrice Nella seguente figura è mostrato l invio in blocchi delle strisce verticali della matrice originaria contenute nei processori della prima colonna lungo le altre colonne: Figura 2.3: Suddivisione finale della matrice Di seguito riportiamo i passi successivi per l implementazione dell algoritmo quali l invio in blocchi del vettore X e dei calcoli delle somme parziali: 4

9 Prodotto Matrice Vettore in MPI Figura 2.4: Invio vettore Figura 2.5: Calcolo Prodotti parziali 2.2 Input, output, errori e subroutine L input dell algoritmo è una matrice quadrata A di dimensioni NxN, dove N deve essere multiplo del numero di processori utilizzato; la dimensione della matrice è memorizzata in una costante nel programma C. L output generato dall algoritmo è composto dalla matrice A di ingresso (generata in maniera casuale), il vettore x (generato in maniera casuale), il vettore y contenente il prodotto Ax, il vettore contenente il prodotto Ax 5

10 Prodotto Matrice Vettore in MPI calcolato in maniera sequenziale (dal solo processore root) e infine da una stampa con un codice ok che ci da conferma del fatto che il risultato parallelo è corretto (lo si confronta con quello sequenziale). Un possibile errore del programma si verifica quando, la dimensione della matrice in considerazione non è un multiplo del numero di processori su cui facciamo girare il programma oppure quando il numero di processori su cui facciamo girare il programma non è un quadrato perfetto. Proprio per questo abbiamo inserito un controllo apposito nel codice. Un esempio della situazione d errore è la seguente (N della matrice = 16): Figura 2.6: Situazione d errore 6

11 Capitolo 3 Analisi del software 3.1 Analisi Osserviamo ora il nostro algoritmo analizzando in dettaglio alcune caratteristiche atte a valutare le prestazioni di un software parallelo. Esse consentiranno all utente di capire in quale situazione è più opportuno utilizzare l algoritmo e quando invece il suo utilizzo non reca alcun palese vantaggio. Tali caratteristiche sono: Tempo di esecuzione utilizzando un numero p>1 di processori. Generalmente indicheremo tale parametro con il simbolo T(p) ; Speed up riduzione del tempo di esecuzione rispetto all utilizzo di un solo processore, utilizzando invece p processori. In simboli, avremo S(p) = T(1) / T(p). Il valore dello speed up ideale dovrebbe essere pari al numero p dei processori, perciò l algoritmo parallelo risulta migliore quanto più S(p) è prossimo a p. 7

12 Prodotto Matrice Vettore in MPI Efficienza, Calcolare solo lo speed-up spesso non basta per effettuare una valutazione corretta, poiché occorre rapportare lo speed-up al numero di processori, e questo può essere effettuato valutando l efficienza. Siano dunque p il numero di processori ed S(p) lo speed - up ad esso relativi. Si definisce efficienza il parametro E(p) = S(p) / p, essa fornisce un indicazione di quanto sia stato usato il parallelismo nel calcolatore. Idealmente, dovremmo avere che E(p) = 1 e quindi l algoritmo parallelo risulta migliore quanto più E(p) è vicina ad 1. 8

13 Prodotto Matrice Vettore in MPI 3.2 Tabelle Le tabelle che seguono mostrano i dati raccolti analizzando ciascuna delle caratteristiche sopraelencate. I tempi sono stati raccolti presso su un cluster di nodi di calcolo presso il Data Center SCoPE. La prima riga di ogni tabella contiene il valore dei dati forniti in input, mentre la prima colonna elenca il numero di processori impiegati nella computazione. Accanto a ciascuna tabella viene mostrato il relativo grafico (ottenuti attraverso il software Gnuplot [1986])che evidenzia l andamento dei valori esaminati Tempi Tabella dei tempi (in microsecondi) N = 144 N = 1440 N = Tabella 3.1: Tabella Tempi 9

14 Prodotto Matrice Vettore in MPI Grafico Figura 3.1: Grafico Tempi Come si può vedere dal grafico, per una dimensione della matrice piccola, il tempo d esecuzione con 1, 4, 9 e 16 cpu è pressocchè costante. Quando invece aumentiamo ancora la dimensione della matrice, nel passaggio da 1 a 2 processori c è un notevole miglioramento del tempo d esecuzione, mentre aumentando ancora il numero di processori il tempo di esecuzione aumenta notevolmente rispetto a quello iniziale. 10

15 Prodotto Matrice Vettore in MPI Speed Up Tabella Speed-Up N = 144 N = 1440 N = Tabella 3.2: Tabella Speed Up Grafico Figura 3.2: Grafico Speed Up 11

16 Somma N numeri in MPI Efficienza Tabella Efficienza N = 144 N = 1440 N = Tabella 3.3: Tabella Efficienza Grafico Figura 3.3: Grafico Efficienza 12

17 Capitolo 4 Esempi d uso e Codice Per compilare il codice, aperta una shell linux digitiamo: mpicc eser13.c e nella directory di lavoro comparirà un nuovo file, quello d esecuzione. Eseguendolo con: mpiexec -n 4 a.out avremo l output a video: Figura 4.1: Esempio d uso 13

18 Somma N numeri in MPI Murli: ed ecco il codice in C, implementando l algoritmo presente nel testo di / ========================================================== ================== Name : esercitazione 13 di calcolo parallelo Author : Mario Buonomo Lorenzo Carullo Luigi De Simone Version : Copyright : Your copyright notice Description : Prodotto Matrice vettore I I I strategia ========================================================== ================== / #include <s t d i o. h> #include <s t d l i b. h> #include <math. h> #include <time. h> #include "mpi. h" / A(n, n) matrice da distribuire p numero di processori e quadrato perfetto di q ( righe o colonne della grigla ) che indica la dimensione della g r i g l i a elementi per blocco n/sqrt (p) / #define N 16 //deve essere un multiplo del numero di processori #define dim 2 // g r i g l i a 2D #define MASTER 0 // CPU MASTER int main ( int argc, char argv [ ] ) { int col, row, r e o r d e r, i, j, ndim [ 2 ], p e r i o d [ 2 ], b e l o n g s [ 2 ], rows [ 2 ], c o o r d i n a t e [ 2 ], coo_row [ 2 ] ; 14

19 Somma N numeri in MPI double t0, t1, te, t _ f i n ; int menum, nproc, menum2d, merow, k, p, q, a, b ; MPI_Comm comm2d, commcol, commrow; MPI_Init(& argc, &argv ) ; MPI_Comm_rank(MPI_COMM_WORLD, &menum) ; MPI_Comm_size(MPI_COMM_WORLD, &nproc ) ; / Controllo dimensione array / i f (N % nproc!= 0) { f p r i n t f ( s t d e r r, "\nquitting. Size of Matrix must be multiple of Number of Process \n" ) ; MPI_Abort(MPI_COMM_WORLD, 0) ; // i n i z i a l i z z o alcune v a r i a b i l i p = nproc ; row = s q r t ( ( double ) p ) ; / Controllo quadrato perfetto / i f ( ( int ) (pow ( ( double ) ( row ), 2 ) )!= p ) { f p r i n t f ( s t d e r r, "\nquitting. Number of process Must Be a perfect square \n" ) ; MPI_Abort(MPI_COMM_WORLD, 0) ; c o l = row ; //parametri della g r i g l i a bidimensionale ndim [ 0 ] = row ; ndim [ 1 ] = c o l ; p e r i o d [ 0 ] = p e r i o d [ 1 ] = 0 ; r e o r d e r = 0 ; a = N / s q r t ( ( double ) p ) ; b = s q r t ( ( double ) p ) ; 15

20 Somma N numeri in MPI int temp11 = ( int ) malloc ( s i z e o f ( int ) N) ; int temp22 = ( int ) malloc ( s i z e o f ( int ) a ) ; int b l o c c o = ( int ) malloc ( s i z e o f ( int ) a a ) ; int A_ricc = ( int ) malloc ( s i z e o f ( int ) N a ) ; int x_ric = ( int ) malloc ( s i z e o f ( int ) a ) ; int somma_parz = ( int ) malloc ( s i z e o f ( int ) a ) ; int somma_tot = ( int ) malloc ( s i z e o f ( int ) a ) ; int x = ( int ) malloc ( s i z e o f ( int ) N) ; int A_lin = ( int ) malloc ( s i z e o f ( int ) N N) ; int somma_par = ( int ) malloc ( s i z e o f ( int ) N) ; //Alloco variabile per risultato sequenziale int r e s u l t _ s e q = ( int ) malloc ( s i z e o f ( int ) N) ; // costruisco la matrice da inviare a blocchi i f (menum == MASTER) { / Alloco matrice da inviare e vettore in cui linearizzo la matrice / int A = ( int ) malloc ( s i z e o f ( int ) N) ; for ( k = 0 ; k < N; k++) { A[ k ] = ( int ) malloc ( s i z e o f ( int ) N) ; // printf ("\ nmatrice da inviare a blocchi \n") ; / Riempio la matrice con numeri casuali da zero a trenta / srand ( time (NULL) ) ; for ( i = 0 ; i < N; i ++) { for ( j = 0 ; j < N; j++) { A[ i ] [ j ] = ( int ) ( rand ( ) % 30) ; // printf("%d ", A[ i ] [ j ] ) ; //genero vettore x random x [ i ] = ( int ) ( rand ( ) %30) ; 16

21 Somma N numeri in MPI // printf ("\n") ; // printf ("\nvettore x : ") ; //for ( i = 0; i < N; i++) { // printf("%d ", x [ i ] ) ; // // printf ("\n") ; for ( i = 0 ; i < N; i ++){ r e s u l t _ s e q [ i ]=0; // i n i z i a l i z z o ogni elemento del vettore for ( j = 0 ; j < N; j++) r e s u l t _ s e q [ i ]= r e s u l t _ s e q [ i ]+A[ i ] [ j ] x [ j ] ; p r i n t f ( "\n\nrisultato FINALE sequenziale\n" ) ; for ( i =0; i <N; i ++) p r i n t f ( "%d ", r e s u l t _ s e q [ i ] ) ; p r i n t f ( "\n" ) ; // linearizzo la matrice i =0; for ( k = 0 ; k < N; k++) { for ( j = 0 ; j < N; j++) { A_lin [ i ] = A[ k ] [ j ] ; i ++; / Dealloco la matrice i n i z i a l e / for ( i =0; i <N; i ++) f r e e (A[ i ] ) ; f r e e (A) ; // free ( result_seq ) ; // fine MASTER 17

22 Somma N numeri in MPI MPI_Barrier (MPI_COMM_WORLD) ; / I n i z i a l i z z a z i o n e Tempi / t0 = MPI_Wtime ( ) ; //creo una g r i g l i a 2D MPI_Cart_create (MPI_COMM_WORLD, dim, ndim, period, r e o r d e r, &comm2d) ; //prendo i l rank del processo in esecuzione MPI_Comm_rank(comm2D, &menum2d) ; //prendo le coordinate del processo in esecuzione MPI_Cart_coords (comm2d, menum2d, dim, c o o r d i n a t e ) ; // s o t t o g r i g l i a di colonne b e l o n g s [ 0 ] = 1 ; b e l o n g s [ 1 ] = 0 ; MPI_Cart_sub (comm2d, belongs, &commcol) ; // s o t t o g r i g l i a di righe rows [ 0 ] = 0 ; rows [ 1 ] = 1 ; MPI_Cart_sub (comm2d, rows, &commrow) ; //prendo i l rank del processo in esecuzione MPI_Comm_rank(commRow, &merow) ; //prendo le coordinate del processo in esecuzione MPI_Cart_coords (commrow, merow, dim, coo_row ) ; // invio la matrice linearizzata per blocchi di righe a l l a prima colonna della g r i g l i a MPI_Scatter ( A_lin, N a, MPI_INT, A_ricc, N a, MPI_INT, 0, commcol) ; // invio i l vettore x in blocchi a l l a prima riga MPI_Scatter ( x, a, MPI_INT, x_ric, a, MPI_INT, 0, commrow) ; // invio in broadcast lungo le colonne i l blocco x presente nella prima riga MPI_Bcast ( x_ric, a, MPI_INT, 0, commcol) ; MPI_Barrier (MPI_COMM_WORLD) ; 18

23 Somma N numeri in MPI k = 0 ; //una scatter per riga ricevuta dai processori della prima colonna for ( i = 0 ; i < a ; i ++) { //solo g l i P0 della prima colonna della g r i g l i a crea i l vettore per la scatter i f (merow == 0) { // costruisco i l vettore temporaneo da inviare for ( q = N i ; q < N ( i + 1) ; q++) { temp11 [ q N i ] = ( int ) A_ricc [ q ] ; MPI_Scatter ( temp11, a, MPI_INT, temp22, a, MPI_INT, 0, commrow) ; for ( j = k ; j < k+a ; j++) b l o c c o [ j ] = temp22 [ j k ] ; k = k + a ; MPI_Barrier (MPI_COMM_WORLD) ; // i n i z i a l i z z o somma_parz for ( i = 0 ; i < a ; i ++) { somma_parz [ i ] = 0 ; //ogni cpu deve eseguire la propria somma parziale k=0; for ( i = 0 ; i < a ; i ++) { p = 0 ; for ( j = k ; p < a ; j++) { somma_parz [ i ] = somma_parz [ i ] + b l o c c o [ j ] x_ric [ j k ] ; p++; 19

24 Somma N numeri in MPI k = k + a ; MPI_Barrier (MPI_COMM_WORLD) ; MPI_Reduce( somma_parz, somma_tot, a, MPI_INT, MPI_SUM, MASTER, commrow) ; / Fine Tempi / t1 = MPI_Wtime ( ) ; MPI_Gather ( somma_tot, a, MPI_INT, somma_par, a, MPI_INT, MASTER, commcol) ; / i f (merow == 0) { //stampo i valori ricevuti printf ("Sono %d con coordinate (%d, %d) ho la parte di y:\n", menum2d, coordinate [ 0 ], coordinate [ 1 ] ) ; for ( i = 0; i < a ; i++) { printf("%d ", somma_tot[ i ] ) ; printf ("\n") ; / t e = 1. e6 ( t1 t0 ) ; MPI_Reduce(& te,& t_ fin, 1,MPI_DOUBLE,MPI_MAX, 0,MPI_COMM_WORLD) ; i f (menum == MASTER) { p r i n t f ( "\n\nrisultato FINALE parallelo \n" ) ; for ( i =0; i <N; i ++) p r i n t f ( "%d ", somma_par [ i ] ) ; 20

25 Somma N numeri in MPI p r i n t f ( "\n" ) ; / Check di controllo per la prodotto / int f l a g = 0 ; for ( i =0; i <N; i ++){ i f ( r e s u l t _ s e q [ i ]!= somma_par [ i ] ) { p r i n t f ( "\nerrore nel prodotto parallelo " ) ; f l a g =1; i=n; i f ( f l a g == 0) p r i n t f ( "\nverifica OK" ) ; p r i n t f ( "\n\ntempo d esecuzione : %f usecondi\n\n", t _ f i n ) ; //Dealloco f r e e ( x_ric ) ; f r e e ( somma_parz ) ; f r e e ( somma_tot ) ; f r e e ( temp11 ) ; f r e e ( temp22 ) ; f r e e ( b l o c c o ) ; f r e e ( A_ricc ) ; f r e e ( x ) ; f r e e ( A_lin ) ; f r e e ( r e s u l t _ s e q ) ; MPI_Finalize ( ) ; return 0 ; implementazione dell algoritmo in C 21

26 Bibliografia Gnuplot. Gnuplot. URL: Almerico Murli. Lezioni di Calcolo Parallelo. Liguori Editore. 22

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

Somma di un array di N numeri in MPI

Somma di un array di N numeri in MPI Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Esercitazione di Calcolo Parallelo Somma di un array di N numeri in MPI Anno Accademico 2010/2011 Prof.ssa Alessandra D'alessio Candidati

Dettagli

A.d'Alessio. Calcolo Parallelo. Esempi di topologie

A.d'Alessio. Calcolo Parallelo. Esempi di topologie Message Passing Interface MPI Le topologie 1 Esempi di topologie Anello Griglia Toro L utilizzo di una topologia per la progettazione di un algoritmo in ambiente MIMD è spesso legata alla geometria intrinseca

Dettagli

Università degli Studi di Napoli Parthenope. Corso di Calcolo Parallelo e Distribuito. Virginia Bellino Matr. 108/1570

Università degli Studi di Napoli Parthenope. Corso di Calcolo Parallelo e Distribuito. Virginia Bellino Matr. 108/1570 Università degli Studi di Napoli Parthenope Corso di Calcolo Parallelo e Distribuito Virginia Bellino Matr. 108/1570 Virginia Bellino Progetto 1 Corso di Calcolo Parallelo e Distribuito 2 Indice Individuazione

Dettagli

Le topologie. Message Passing Interface MPI Parte 2. Topologie MPI. Esempi di topologie. Definizione: topologia. Laura Antonelli

Le topologie. Message Passing Interface MPI Parte 2. Topologie MPI. Esempi di topologie. Definizione: topologia. Laura Antonelli Topologie MPI Message Passing Interface MPI Parte 2 Le topologie. Laura Antonelli 1 2 Esempi di topologie Definizione: topologia Una topologia è la geometria virtuale in cui si immaginano disposti i processi

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 PRODOTTO MATRICE VETTORE STUDENTE Gabriele Piantadosi (885/000282) 1. OBIETTIVI E AMBIENTE DI CALCOLO Si vuole distribuire un

Dettagli

Calcolo Parallelo. Domanda. In particolare. Qual è l algoritmo parallelo. PROBLEMA: Prodotto Matrice-Vettore

Calcolo Parallelo. Domanda. In particolare. Qual è l algoritmo parallelo. PROBLEMA: Prodotto Matrice-Vettore Calcolo Parallelo Algoritmi Paralleli per il prodotto Matrice-Vettore Laura Antonelli PROBLEMA: Prodotto Matrice-Vettore Progettazione di un algoritmo parallelo per architettura MIMD a memoria distribuita

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

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

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

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

Programma della 1 sessione di laboratorio

Programma della 1 sessione di laboratorio Programma della 1 sessione di laboratorio Familiarizzare con l ambiente MPI Hello World in MPI (Esercizio 1) Esercizi da svolgere Send/Receive di un intero e di un array di float (Esercizio 2) Calcolo

Dettagli

Modello di sviluppo della popolazione: Matrice di Leslie

Modello di sviluppo della popolazione: Matrice di Leslie Modello di sviluppo della popolazione: Matrice di Leslie April 24, 2007 1 Scopo del progetto Lo scopo è quello di creare un programma parallelo in grado di fare una stima di quale sarà la popolazione in

Dettagli

Laboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A

Laboratorio di Algoritmi e Strutture Dati Ingegneria e Scienze Informatiche - Cesena A.A Ingegneria e Scienze Informatiche - Cesena A.A. 2014-2015 pietro.dilena@unibo.it MergeSort MergeSort MergeSort: esempio MergeSort: pseudocodice Algoritmo di ordinamento ricorsivo basato sulla tecnica Divide

Dettagli

Sistemi Operativi (M. Cesati)

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

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

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

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

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

Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito. gestire gli accessi alle risorse. gestire l eterogeneita

Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito. gestire gli accessi alle risorse. gestire l eterogeneita Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito gestire gli accessi alle risorse gestire l eterogeneita gestire la dinamicita http://icl.cs.utk.edu/netsolve A. Murli

Dettagli

Programmazione I - Laboratorio

Programmazione I - Laboratorio Programmazione I - Laboratorio Esercitazione 3 - Array Gianluca Mezzetti 1 Paolo Milazzo 2 1. Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ mezzetti mezzetti di.unipi.it 2. Dipartimento

Dettagli

Primi Programmi con MPI 1

Primi Programmi con MPI 1 Il cluster che usiamo: spaci Esercitazione: Primi Programmi con MPI http://www.na.icar.cnr.it/grid/#spacina Spacina è un cluster HP XC 6000 / Linux a 64 nodi biprocessore. La configurazione hardware dei

Dettagli

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Corso di Informatica A.A

Corso di Informatica A.A Corso di Informatica A.A. 2009-2010 Lezione 12 Corso di Informatica 2009-2010 Lezione 12 1 Allocazione dinamica della memoria La funzione calloc() La funzione calloc() alloca memoria dinamicamente. Numero

Dettagli

definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 puntatori)!

definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 puntatori)! " Non ci sono vincoli sul tipo degli elementi di un vettore " Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere (allocata

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome

Dettagli

Somma di un array di N numeri in MPI

Somma di un array di N numeri in MPI 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

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

Sistemi Operativi (M. Cesati)

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

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

1 (12) 2 (6) 3 (4) 4 (4) 5 (6)

1 (12) 2 (6) 3 (4) 4 (4) 5 (6) CORSO DI LAUREA IN INGEGNERIA ELETTRICA, CHIMICA e MATERIALI Informatica B, C Anno Accademico 2013-2014 Proff. Danilo ARDAGNA, Antonio MIELE Primo appello 14.7.2014 Cognome Nome Matricola Firma Durata:

Dettagli

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici

Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici Laboratorio di Calcolo Numerico Laboratorio 8: Vettori e Matrici Claudia Zoccarato E-mail: claudia.zoccarato@unipd.it Dispense: Moodle Dipartimento ICEA 03 Maggio 2017 Richiami In MATLAB, ogni variabile

Dettagli

Introduzione al C Lez. 4

Introduzione al C Lez. 4 Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso

Dettagli

Linguaggio C: Array Valeria Cardellini

Linguaggio C: Array Valeria Cardellini Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione

Dettagli

Gli array. slides credit M. Poneti

Gli array. slides credit M. Poneti Gli array slides credit M. Poneti Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome e lo

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

MPI: comunicazioni collettive

MPI: comunicazioni collettive - g.marras@cineca.it Gruppo Supercalcolo - Dipartimento Sistemi e Tecnologie 29 settembre 5 ottobre 2008 Collective Communications -Communications involving a group of process -Called by all processes

Dettagli

IL PRIMO PROGRAMMA IN C

IL PRIMO PROGRAMMA IN C IL PRIMO PROGRAMMA IN C LO SCOPO Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video SOLUZIONE

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I Novembre 06 Esercizio Valutazione espressioni con puntatori Valutare e definire il tipo delle seguenti espressioni. Inserire le parentesi per sotolineare l ordine della valutazione

Dettagli

Problema. Vettori e matrici. Vettori. Vettori

Problema. Vettori e matrici. Vettori. Vettori e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le

Dettagli

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22

Lezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22 Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)

Dettagli

Corso di High Performance Computing

Corso di High Performance Computing Ultimo aggiornamento: 2018-11-20 Corso di High Performance Computing Esercitazione MPI del 20/11/2018 Moreno Marzolla Per svolgere l'esercitazione è possibile collegarsi al server isi-raptor03csruniboit

Dettagli

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2007/2008

Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2007/2008 Laboratorio di Calcolatori 1 Corso di Laurea in Fisica A.A. 2007/2008 Dott.Davide Di Ruscio Dipartimento di Informatica Università degli Studi di L Aquila Lezione del 24/04/08 Nota Questi lucidi sono tratti

Dettagli

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili

Lo scopo. Il primo esperimento. Soluzione informale. Le variabili Lo scopo 2 Il primo esperimento Si vuole scrivere un programma in linguaggio C che chieda all utente di introdurre da tastiera due numeri interi e visualizzi il valore della loro somma sul video Ver. 2.4

Dettagli

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione

Principali strumenti per lo sviluppo di algoritmi in pascal-like. concetti universali presenti in tutti i linguaggi di programmazione LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 12 LA COMPLESSITA COMPUTAZIONALE Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Capitolo 10 - Strutture

Capitolo 10 - Strutture 1 Capitolo 10 - Strutture Strutture In molte situazioni, una variabile non è sufficiente per descrivere un oggetto. Ad esempio, una posizione sul piano cartesiano è identificata da due coordinate, e la

Dettagli

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A

Esercizi di MatLab. Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, A.A Esercizi di MatLab Sommario Esercizi di introduzione a MatLab per il corso di Calcolo Numerico e Laboratorio, AA 2017 2018 Gli esercizi sono divisi in due gruppi: fondamentali ed avanzati I primi sono

Dettagli

Programmazione I (Classe 1)

Programmazione I (Classe 1) Programmazione I (Classe 1) Primo appello (prima prova) 27 Giugno 2016 Docenti: De Prisco - Deufemia - Zizza Cognome: Nome: Matricola: Ritirato 1 Esercizi (leggere attentamente il testo prima di scrivere

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

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

Dettagli

Esercitazione 6. Array

Esercitazione 6. Array Esercitazione 6 Array Arrays Array (o tabella o vettore): è una variabile strutturata in cui è possibile memorizzare un numero fissato di valori tutti dello stesso tipo. Esempio int a[6]; /* dichiarazione

Dettagli

Programmazione C: Esercizi su vettori e funzioni. Titolo presentazione. sottotitolo. Milano, XX mese 20XX

Programmazione C: Esercizi su vettori e funzioni. Titolo presentazione. sottotitolo. Milano, XX mese 20XX Titolo presentazione Programmazione C: sottotitolo Esercizi su vettori e funzioni Milano, XX mese 20XX Informatica ed Elementi di Informatica Medica Agenda Richiami su vettori e funzioni Esercizi su vettori

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli

Esercizi sulla rappresentazione compatta di matrici sparse

Esercizi sulla rappresentazione compatta di matrici sparse Esercizi sulla rappresentazione compatta di matrici sparse Esercizio 1 Generare due matrici sparse A e B, di dimensione nxn, a banda, simmetrica sullo skyline ma non sui valori, con banda compresa tra

Dettagli

Progetti su più File Array e Funzioni

Progetti su più File Array e Funzioni - DEIS - Facoltà di Ingegneria - Università di Bologna Elementi di informatica LA Corso di laurea in Ingegneria Elettrica - Anno Accademico 2007-2008 Progetti su più File Array e Funzioni ESERCIZIO 1 Scrivere

Dettagli

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

Introduzione al C Lez. 4. Allocazione Dinamica della memoria Introduzione al C Lez. 4 Allocazione Dinamica della memoria Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso l allocazione esplicita di blocchi di memoria

Dettagli

Concetti chiave. Gli Array o Vettori. Array Elementi dell array Indici e lunghezza dell array Inizializzazione di vettori Array multidimensionali

Concetti chiave. Gli Array o Vettori. Array Elementi dell array Indici e lunghezza dell array Inizializzazione di vettori Array multidimensionali Concetti chiave Gli Array o Vettori Array Elementi dell array Indici e lunghezza dell array Inizializzazione di vettori Array multidimensionali Fino ad ora abbiamo utilizzato variabili scalari, ossia riferite

Dettagli

IEIM Esercitazione X Ripasso: array, puntatori, ricorsione. Alessandro A. Nacci -

IEIM Esercitazione X Ripasso: array, puntatori, ricorsione. Alessandro A. Nacci - IEIM 2015-2016 Esercitazione X Ripasso: array, puntatori, ricorsione Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Ripasso su array e puntatori 1 Ripasso su array e puntatori

Dettagli

PRIMA ESPERIENZA SIMULAZIONE DEL MOTO PARABOLICO DI UN PROIETTILE, PALLONE, (APPROSSIMATO COME PUNTO MATERIALE) SOGGETTO ALLA SOLA FORZA DI GRAVITA

PRIMA ESPERIENZA SIMULAZIONE DEL MOTO PARABOLICO DI UN PROIETTILE, PALLONE, (APPROSSIMATO COME PUNTO MATERIALE) SOGGETTO ALLA SOLA FORZA DI GRAVITA PRIMA ESPERIENZA SIMULAZIONE DEL MOTO PARABOLICO DI UN PROIETTILE, PALLONE, (APPROSSIMATO COME PUNTO MATERIALE) SOGGETTO ALLA SOLA FORZA DI GRAVITA Elementi di Informatica e Programmazione Università di

Dettagli

3. Matrici e algebra lineare in MATLAB

3. Matrici e algebra lineare in MATLAB 3. Matrici e algebra lineare in MATLAB Riferimenti bibliografici Getting Started with MATLAB, Version 7, The MathWorks, www.mathworks.com (Capitolo 2) Mathematics, Version 7, The MathWorks, www.mathworks.com

Dettagli

1. Calcolo dell indice di condizionamento di una matrice

1. Calcolo dell indice di condizionamento di una matrice 1 Esercizi sul condizionamento con matlab laboratorio di Calcolo Scientifico per Geofisici Prof. A. Murli a.a. 2006/07 1. Calcolo dell indice di condizionamento di una matrice Determinare una function

Dettagli

NB: sono richieste almeno 4 risposte esatte per la correzione delle domande aperte

NB: sono richieste almeno 4 risposte esatte per la correzione delle domande aperte 7 Lug 17 MATRICOLA COGNOME NOME PUNTEGGI PER LE VARIE DOMANDE: Domande aperte: A: 6, B: 9, C: 9 Scelta multipla: 1.5 punti per ogni risposta esatta DURANTE IL COMPITO E AMMESSO SOLO L USO DI STRUMENTI

Dettagli

Fondamenti di Informatica Ing. Biomedica

Fondamenti di Informatica Ing. Biomedica Fondamenti di Informatica Ing. Biomedica Esercitazione n.8 Matrici Antonio Arena antonio.arena@ing.unipi.it Fondamenti di Informatica - Esercitazione n.8 2 Matrici In C++ viene trattata come array multi-dimesionale.

Dettagli

MOLTIPLICAZIONE TRA MATRICI

MOLTIPLICAZIONE TRA MATRICI MOLTIPLICAZIONE TRA MATRICI Riccardo Fontanini Consegna Implementare un programma C che sfrutti la GPU per eseguire una moltiplicazione tra due matrici utilizzando la shared memory. Inoltre adattare il

Dettagli

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007

Esempi di programmi. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa E01. A. Miola Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa E01 Esempi di programmi A. Miola Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Esempi di programmi - 1 1 Contenuti

Dettagli

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.

Le strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura

Dettagli

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;

int main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0; Problema: CALCOLARE LA SOMMA DEI FATTORIALI DEI PRIMI 100 NUMERI NATURALI 0!+1!+2! + 99! #include int fattoriale(int); Calcolo fattoriale int main(){ int numero; /* numero di cui voglio calcolare

Dettagli

Esercizi C su array e matrici

Esercizi C su array e matrici Politecnico di Milano Esercizi C su array e matrici Massimo, media e varianza,, ordinamento, ricerca e merge, matrice simmetrica, puntatori Array Array o vettore Composto da una serie di celle int vett[4]

Dettagli

Laboratorio di Matematica e Informatica 1

Laboratorio di Matematica e Informatica 1 Laboratorio di Matematica e Informatica 1 Matteo Mondini Antonio E. Porreca matteo.mondini@gmail.com porreca@disco.unimib.it Dipartimento di Informatica, Sistemistica e Comunicazione Università degli Studi

Dettagli

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli

Informatica B. Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti. Prof. Marco Masseroli Facoltà di Ingegneria Industriale Laurea in Ingegneria Energetica, Meccanica e dei Trasporti Dipartimento di Elettronica e Informazione Informatica B Prof. Marco Masseroli Indice Laboratorio 4: Linguaggio

Dettagli

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata

Puntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

I tipi strutturati e i record in C++

I tipi strutturati e i record in C++ I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi

Dettagli

Cicli annidati ed Array multidimensionali

Cicli annidati ed Array multidimensionali Linguaggio C Cicli annidati ed Array multidimensionali Cicli Annidati In C abbiamo 3 tipi di cicli: while(exp) { do { while(exp); for(exp;exp;exp3) { Cicli annidati: un ciclo all interno del corpo di un

Dettagli

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C Es typedef ; typedef char stringa[10]; dichiara che il tipo stringa è un array

Dettagli

Informatica (A-K) 5. Algoritmi e pseudocodifica

Informatica (A-K) 5. Algoritmi e pseudocodifica Vettori e matrici #1 Informatica (A-K) 5. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile & Ambientale A.A. 2011-2012 2 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 della prova scritta del 14 Febbraio 2006 Esercizio 1 (4 punti) Formulare la seguente istruzione del linguaggio C utilizzando il costrutto while: for(i=0,j=n-1; i

Dettagli

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII

LABORATORIO DI INFORMATICA ESERCITAZIONE VIII LABORATORIO DI INFORMATICA ESERCITAZIONE VIII Cercate di eseguire gli esercizi da soli. Se non ci riuscite, cercate di capire i messaggi di errore. Se non ci riuscite, provateci di nuovo. Poi chiamate

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione A.A. 08/09 Fondamenti di Programmazione (canale E-O) Docente: Prof.ssa Tiziana Calamoneri calamo@di.uniroma1.it Esercitatore: Dott. Roberto Petroccia petroccia@di.uniroma1.it Pagina del corso: http://twiki.di.uniroma1.it/twiki/view/programmazione1/eo/webhome

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Multidimensionali. Array Multidimensionali. Tipi di array. Matrice: array bidimensionale. Array multidimensionale. Dichiarazione di una matrice

Multidimensionali. Array Multidimensionali. Tipi di array. Matrice: array bidimensionale. Array multidimensionale. Dichiarazione di una matrice Tipi di array Array Multidimensionali Antonella Santone Monodimensionali (vettore) Multidimensionali Array multidimensionale Un array multidimensionale è un array, i cui elementi sono a loro volta degli

Dettagli

Prodotto Matrice - Vettore in MPI

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

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

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904]

Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale. Informatica B [079904] Politecnico di Milano Facoltà di Ingegneria Civile, Ambientale e Territoriale Informatica B [079904] Prof. P. Plebani Allievi Ingegneria Civile e Ambientale II prova in itinere (04 Febbraio 2009) Cognome

Dettagli

Esercizio 1 (15 punti)

Esercizio 1 (15 punti) Esercizio 1 (15 punti) Corsi di laurea in Ingegnera Elettronica e Ingegneria Gestionale Fondamenti di Programmazione / Fondamenti di Informatica I Prova scritta del 30 giugno 2017 In un lontano paese da

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

Esempi di programmazione in C

Esempi di programmazione in C Esempi di programmazione in C Problemi elementari..................................... 363 Somma tra due numeri positivi......................... 363 Moltiplicazione di due numeri positivi attraverso la

Dettagli

Calcolo parallelo. Una sola CPU (o un solo core), per quanto potenti, non sono sufficienti o richiederebbero tempi lunghissimi.

Calcolo parallelo. Una sola CPU (o un solo core), per quanto potenti, non sono sufficienti o richiederebbero tempi lunghissimi. Calcolo parallelo Ci sono problemi di fisica, come le previsioni meteorologiche o alcune applicazioni grafiche, che richiedono un enorme potenza di calcolo. Una sola CPU (o un solo core), per quanto potenti,

Dettagli

Introduzione a MPI Algoritmi e Calcolo Parallelo. Daniele Loiacono

Introduzione a MPI Algoritmi e Calcolo Parallelo. Daniele Loiacono Introduzione a MPI Algoritmi e Calcolo Parallelo Riferimenti! Tutorial on MPI Lawrence Livermore National Laboratory https://computing.llnl.gov/tutorials/mpi/ Cos è MPI? q MPI (Message Passing Interface)

Dettagli

Introduzione a MATLAB

Introduzione a MATLAB Università degli Studi di Napoli Federico II CdL Ing. Elettrica Corso di Laboratorio di Circuiti Elettrici Introduzione a MATLAB Lezione n. Dr. Carlo Petrarca Dipartimento di Ingegneria Elettrica e Tecnologie

Dettagli

Fondamenti di Informatica 2

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

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Vettori e matrici #1 Le variabili definite come coppie sono dette variabili scalari Fondamenti di Informatica 5. Algoritmi e pseudocodifica Una coppia è una variabile

Dettagli

Lab 2 Info B. Diego Carrera Ing. Gian Enrico Conti 7 Novembre 2016

Lab 2 Info B. Diego Carrera Ing. Gian Enrico Conti 7 Novembre 2016 Lab 2 Info B Diego Carrera diego.carrera@polimi.it Ing. Gian Enrico Conti gianenrico.conti@mail.polimi.it 7 Novembre 2016 Per macchine PoliMI https://virtualdesktop.polimi.it 2 Richiami: Stringhe Le stringhe

Dettagli

Esame di Informatica Generale 9 CFU 19 Aprile 2011 Professori: Carulli, Fiorino, Mazzei

Esame di Informatica Generale 9 CFU 19 Aprile 2011 Professori: Carulli, Fiorino, Mazzei 9cfu 19 aprile Soluzioni.doc 1/14 22/04/2011 17.39.25 Esame di Informatica Generale 9 CFU 19 Aprile 2011 Professori: Carulli, Fiorino, Mazzei Docente Risultati Scritto Orali Carulli Me 27/04/11 ore 15:00

Dettagli

Costruiamo un'immagine o qualcosa di simile.

Costruiamo un'immagine o qualcosa di simile. Costruiamo un'immagine...... o qualcosa di simile. Se consideriamo la C che si trova in fondo a destra, ci accorgiamo che un'immagine non è altro che una tabella di valori. Nel caso in cui si consideri

Dettagli