Libreria MPI. (Message Passing Interface) Standard Message Passing Interface (MPI)
|
|
- Geraldina Petrucci
- 7 anni fa
- Visualizzazioni
Transcript
1 Libreria MPI (Message Passing Interface) Standard Message Passing Interface (MPI) Il primo standard de jure per i linguaggi paralleli a scambio di messaggi (definisce le specifiche sintattiche e semantiche, e non l implementazione) Messo a punto in una serie di riunioni tenutesi tra novembre 1992 e gennaio ommissione MPI ostituita da membri provenienti da 40 istituti diversi (Univers ità, Istituti di cerca, Industrie, Enti governativi) SOPI - Rendere portabile il software parallelo - Fornire agli sviluppatori di software un unico standard ben definito per lo codifica di software parallelo - Fornire ai costruttori di architetture un unico insieme di prim itive da implementare, possibilmente nel modo più efficiente per ciascuna architettura Michele olajanni Libreria MPI 2/36
2 Standard Message Passing Interface (MPI) Non si è voluto creare un sovra-insieme di tutte le primitive esistenti nei diversi ambienti di programmazione già implementati, anche se Sono stati creati dei comitati per ciascuna categoria di primitive in cui le scelte venivano effettuate a maggioranza lcune peculiarità Possibilità di definire Gruppi di processi Possibilità di effettuare comunicazioni tra Gruppi di processi Possibilità di definire un insieme di contesti per le comunicazioni Elevata flessibilità nella selettività della ricezione di un messaggio Vasto insieme di routine per effettuare comunicazioni ed operazioni globali (scatter, gather, reduce, scan) Supporti per la realizzazione di librerie modulari Michele olajanni Libreria MPI 3/36 La libreria MPI è grande o piccola? MPI è grande funzioni! - E il PL/1 o l da dello scambio di messaggi? No: 1) Il numero elevato di funzioni deriva dalla combinazione di un numero ridotto di concetti ortogonali 2) Molte delle funzionalità possono essere ignorate fino a che non servono esplicitamente Michele olajanni Libreria MPI 4/36
3 La libreria MPI è grande o piccola? MPI è piccola 6 funzioni fondamentali possono essere utilizzate per scrivere molti programmi paralleli: MPI_INT Inizializza l ambiente MPI MPI_OMM_SIZE etermina quanti processi vi sono MPI_OMM_RNK etermina il numero (rank) di processo MPI_SEN Invia un messaggio MPI_REV Ricevi un messaggio MPI_FINLIZE Termina l ambiente MPI MPI è della dimensione che serve Oltre alle 6 funzioni,le altre funzioni possono aggiungere: Flessibilità (tipi di dati) Efficienza (comunicazioni non bloccanti) Modularità (gruppi, comunicatori) onvenienza (operazioni/comunicazioni collettive, topologie virtuali) Michele olajanni Libreria MPI 5/36 Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 6/36
4 Struttura programma MPI #include <mpi.h> main (int argc, char**argv) { MPI_init (&argc, &argv); /* orpo del programma */ MPI_finalize(); exit (0); } Michele olajanni Libreria MPI 7/36 MPI consente il modello SPM ESEMPIO Nodo 0 Nodo 1 Nodo 2 Nodo 3 ( ) Programma SPM.. begin < esegui ( )>; ( ) ( ) ( ) ( ) if (nodo==0) <esegui ( )>; else <esegui ( )>; if (nodo==0) <esegui ( )>; end HOST ( ) I 2 costrutti fondamentali del modello SPM: identificativo del processo costrutto condizionale Michele olajanni Libreria MPI 8/36
5 I costrutti MPI di base per la programmazione ommunicator (OMM) 1. Gruppo di processi che può comunicare 2. I comunicatori non sono partizioni dell insieme dei processi (pertanto un processo può appartenere a più comunicatori) 3. omunicatore predefinito: MPI_OMM_WORL (=tutti i processi) Rank 1. Identificatore numerico (da 0 a N) di un processo all interno di un comunicatore 2. Un processo può avere un diverso rank per ogni comunicatore cui appartiene 3. Uso: MPI_OMM_RNK(comm, &rank) Size 1. Numero di processi all interno di un comunicatore 2. Uso: MPI_OMM_SIZE( comm, &size) Risultati delle rispettive funzioni Michele olajanni Libreria MPI 9/36 Esempio programma MPI di tipo SPM Stampare una volta il numero di processi attivi ed il numero di rank dei processi pari. ltrimenti stampare rank di processi dispari. #include <mpi.h> main (int argc, char **argv) { } int numproc, myid; MPI_init (&argc, &argv) ; MPI_comm_size (MPI_OMM_WORL, &numproc) ; MPI_comm_rank (MPI_OMM_WORL, &myid) ; if (myid == 0) printf ( numero processi = %d \n, numproc); if (( myid%2) == 0 ) printf ( rank processo = %d\n, myid); else printf ( rank processo dispari \n ); MPI_Finalize ( ); exit (0 ); Michele olajanni Libreria MPI 10/36
6 Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 11/36 Informazione del messaggio MESSGGIO = TI TRSMESSI + INFORMZIONI PER L TRSMISSIONE SEN Processo mittente Processi/o destinatari/o Locazione/i di memoria dei dati da trasmettere Tipo di dato da trasmettere Quantità di dati da trasmettere REEIVE Locazione di memoria dei dati da ricevere Quantità di dati che possono essere ricevuti SEN/REEIVE Identificatore (tag) del messaggio Modalità di comunicazione Michele olajanni Libreria MPI 12/36
7 omunicazioni MPI Librerie precedenti SEN (tag, buffer, lenght, dest) Novità MPI uffer del messaggio descritto indipendentemente dalla rappresentazione [Eterogeneità] Superamento del (uffer, lenght) Separazione delle famiglie di messaggi [ontestualizzazione ] superamento del tag semplice Utili per applicazioni tipo: programmi complessi (reali), librerie, ecc. Separazione dei processi [Raggruppamento] Superamento del destsemplice Utili per applicazioni: librerie, topologie virtuali, ecc. Michele olajanni Libreria MPI 13/36 SEN in MPI MPI_Send (buf, count, datatype, dest, tag, comm) uf = buffer (nome della variabile o del vettore) ount = numero elementi di tipo datatype atatype = tipo di dato del linguaggio (,300,MPI_REL) = vettore di 300 numeri reali, [indipendentemente dalla lunghezza o dal formato della rappresentazione floating point] est= numero del processo destinatario, relativo al gruppo/contesto identificato da comm Tag= identificativo del messaggio omm= identifica un gruppo di processi e un contesto di comunicazione (Le nozioni di gruppo e contesto sono combinati in un unico oggetto chiamato OMUNITORE, che risulta essere un argomento della maggior parte di comunicazioni point-to-point e collettive) Michele olajanni Libreria MPI 14/36
8 atatype fondamentali di MPI (linguaggio ) MPI atatype MPI_HR MPI_SHORT MPI_INT MPI_LONG MPI_UNSIGNE_HR MPI_UNSIGNE_SHORT MPI_UNSIGNE MPI_UNSIGNE_LONG MPI_FLOT MPI_ OULE MPI_LONG_OULE MPI_YTE MPI_PKE datatype Signed char Signed short int Signed int Signed long int unsigned char unsigned short int unsigned int unsigned long int Float ouble Long double Necessari per il calcolo parallelo su piattaforme eterogenee Michele olajanni Libreria MPI 15/36 Ottica globale Sincrona (il mittente sa se il messaggio è arrivato o meno, es. fax) sincrona (il mittente non sa se il messaggio è arrivato o meno, es. lettera) Ottica locale (buffer di trasmissione) loccante Restituisce il controllo al processo che ha invocato la primitiva di comunicazione solo quando la primitiva di comunicazione è stata completata (=il buffer di uscita è stato svuotato). TTENZIONE: LONTE SINRON! Non loccante Modalità di comunicazione Restituisce il controllo al processo che ha invocato la primitiva di comunicazione quando la primitiva di comunicazione è stata eseguita (senza controllo sull effettivo completamento, da poter effettuare in seguito). Il processo invocante può nel frattempo passare ad eseguire altre operazioni. In MPI vi sono diverse combinazioni possibili tra SEN/REEIVE sincrone e asincrone, bloccanti e non bloccanti Michele olajanni Libreria MPI 16/36
9 ompletamento delle comunicazioni Una comunicazione è completata localmente su di un processo se il processo ha completato tutta la sua parte di operazioni relative alla comunicazione (fino allo svuotamento del buffer di uscita) al punto di vista dell esecuzione del programma, completare localmente una comunicazione significa che il processo può eseguire l istruzione successiva alla SEN o REEIVE (possibilmente un altra SEN) Una comunicazione è completata globalmente se tutti i processi coinvolti hanno completato tutte le rispettive operazioni relative alla comunicazione Una comunicazione è completata globalmente se e solo se è completata localmente su tutti i processi coinvolti Michele olajanni Libreria MPI 17/36 Tipica esecuzione di una comunicazione Processo SEN F1() Sistema operativo Processo REEIVE F2() Sistema operativo Hardware buffer di uscita buffer di ingresso Hardware Nodo MITTENTE Nodo ESTINTRIO Rete di Interconnessione Michele olajanni Libreria MPI 18/36
10 SEN Non-locking Ritorna immediatamente. Modalità di blocking Il buffer del messaggio non deve essere sovrascrittosubito dopo il ritorno al processo chiamante, ma si deve controllare che la SEN sia completata localmente. SEN locking Ritorna quando la SEN è completata localmente. Il buffer del messaggio può essere sovrascritto subito dopo il ritorno al processo chiamante. REEIVE Non-locking Ritorna immediatamente. Il buffer del messaggio non deve essere lettosubito dopo il ritorno al processo chiamante, ma si deve controllare che la REEIVE sia completata localmente. REEIVE locking Ritorna quando la REEIVE è completata localmente. Il buffer del messaggio può essere letto subito dopo il ritorno. Michele olajanni Libreria MPI 19/36 Modalità di comunicazione punto-punto La modalità di una comunicazione punto-punto specifica quanto un operazione di SEN può iniziare a trasmettere e quando può ritenersi completata. MPI prevede 4 modalità: Modalità SINRON La SEN può iniziare (a trasmettere) anche se la REEIVE corrispondente non è iniziata. Tuttavia, la SEN è completata solo quando si ha garanzia che il processo destinatario ha eseguito e completato la REEIVE. Modalità UFFERE Simile alla modalità sincrona per l inizio della SEN. Tuttavia, il completamento è sempre indipendente dall esecuzione della REEIVE. (Il messaggio può essere bufferizzato per garantire il funzionamento) Modalità STNR La SEN può iniziare (a trasmettere) anche se la REEIVE corrispondente non è iniziata. La semantica del completamento è sincrona o buffered. Modalità REY La SEN può iniziare (a trasmettere) assumendo che la corrispondente REEIVE è iniziata. Tuttavia, il completamento è sempre indipendente dall esecuzione della REEIVE. Michele olajanni Libreria MPI 20/36
11 Operazione di SEN Sintesi dei tipi di comunicazione 4 modalità di comunicazione (sincrona, standard, buffered, ready) 2 modalità di blocking (blocking, non blocking) locking significa che la SEN può ritenersi completata localmente 8 tipi di SEN (=buffer di uscita è libero) mpi_[ -, i ] [ -, r, s, b ] send [ -, i ] = modalità di blocking [ -, r, s, b ] = modalità di comunicazione Operazione di REEIVE 1 modalità di comunicazione 2 modalità di blocking 2 tipi di REEIVE mpi_[ -, i ] recv [ -, i ] = modalità di blocking Una qualsiasi operazione di receive può essere utilizzata per ricevere messaggi da una qualsiasi SEN Michele olajanni Libreria MPI 21/36 Modalità di omunicazione/locking Problema: osa fare quando il processo destinatario non è in grado di ricevere subito il messaggio? Modalità STNR [il messaggio vene copiato in un buffer interno; il processo mittente continua dopo il completamento della copia] MPI_SEN ( ) Modalità UFFERE [il messaggio viene copiato in un buffer esterno ed il processo mittente si blocca finché il buffer non può essere riutilizzato] MPI_SEN ( ) MPI_UFFER_TTH ( ) MPI_UFFER_ETH ( ) Modalità SINRON [il processo mittente si blocca finché il messaggio non è stato ricevuto dal processo destinatario] MPI_SSEN ( ) Modalità REY [si assume che il processo destinatario abbia già eseguito una REEIVE] MPI_RSEN ( ) a usare con attenzione, possibilmente in combinazione con MPI_WIT oppure MPI_TEST Michele olajanni Libreria MPI 22/36
12 Receive locking RE (buffer, lenght, tag) MPI_Recv (buf, count, datatype, source, tag, comm, status) buf= buffer dove inserire il messaggio ricevuto count= numero di elementi del buffer di tipo datatype datatype= tipo di dato del messaggio source= numero del processo mittente, relativo al gruppo/contesto comm (MPI_NY_SOURE ricevi il primo msg in arrivo da source) tag=identificativo del messaggio comm= identifica un gruppo di processi e un contesto di comunicazione (default: MPI_OMM_WORL un contesto costituito da tutti i processi) status= in è una variabile di tipo struct dove: status.mpi_soure contiene il rank del mittente status.mpi_tg contiene il tag del messaggio status.mpi_get_ount contiene il numero di item ricevuti Michele olajanni Libreria MPI 23/36 Sincronizzazione tra processi ue possibilità per la sincronizzazione dei processi: Uso di comunicazioni sincrone (es., MPI_ssend) Uso di primitive esplicite della libreria MPI (es., MPI_barrier) Michele olajanni Libreria MPI 24/36
13 ompletamenti multipli MPI_waitall Si blocca finché tutti i processi in una determinata lista non sono stati completati MPI_waitany Si blocca finché un processo di una determinata lista è stato completato MPI_waitsome Si blocca finché almeno un processo di una determinata lista è s tato completato Michele olajanni Libreria MPI 25/36 Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 26/36
14 Tipi di comunicazione collettive in MPI One-to-Many (multicast) One-to-ll (broadcast) Many(ll)-to-One (gather) Many-to-Many ll-to-ll Michele olajanni Libreria MPI 27/36 omunicazioni ollettive in MPI P0 P1 roadcast P0 P1 P2 P2 P3 P3 P0 P1 Scatter P0 P1 P2 P3 Gather P2 P3 P0 P1 ll gather P0 P1 P2 P2 P3 P3 P0 P ll to ll P0 P P P P P Michele olajanni Libreria MPI 28/36
15 Michele olajanni Libreria MPI 29/36 MPI_REUE RNK G H F E T S Q R P M N O L K J I root MPI_REUE oeoiomoq Michele olajanni Libreria MPI 30/36 MPI_LLREUE G H F E T S Q R P M N O L K J I MPI_LLREUE Nota: non c è ROOT nelle operazioni MPI_LLXXX oeoiomoq RNK
16 Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 31/36 Operazioni collettive arrier (sincronizzazione) ata Movement (comunicazioni collettive) roadcast Scatter Gather ollective omputations» Reduce (computazioni collettive) NOT Minimum, Maximum Sum Logical OR, N, etc. User-defined differenza di altre librerie message-passing, in MPI le comunicazioni collettive non hanno bisogno di esplicitare la receive. Tutti i processi eseguono: MPI_ST (buf, count, datatype, source, comm) Es., MPI_ST (&n, 1, MPI_INT, 0, MPI_OMM_WORL) Michele olajanni Libreria MPI 32/36
17 Topologie Virtuali Possibilità di concettualizzare l organizzazione fisica della rete di interconessione (topology) dei processi secondo un determinato pattern di comunicazione (application topology) iverse topologie possibili: Griglia logica Grafi regolari MPI_RT_RETE( ) Topologie definite dall utente Le topologie virtuali forniscono una metodologia ad alto livello per gestire gruppi di processi senza trattare con essi direttamente. Michele olajanni Libreria MPI 33/36 Topologie Virtuali: Esempio efinire una topologia virtuale mesh bi-dimensionale 4x3. 0 0,0 1 0,1 2 0,2 3 0,3 4 0,1 5 1,1 6 2,1 7 3,1 ndims=2; 8 0,0 dims[1]=4; dims[2]=3; periods[1]=0; /*FLSE=non ciclica*/ periods[2]=0; /*TRUE=ciclica*/ reorder=1; 9 1,0 10 2,0 /*FLSE= dati già distribuiti*/ /*Il process rank non cambia*/ /*TRUE= dati non distribuiti*/ /*MPI può modificare il process rank per /*tener conto della topologia virtuale*/ omunicatore di partenza 11 3,0 Nuovo comunicatore MPI_RT_RETE(MPI_OMM_WORL. ndims, dims, periods, reorder, ommunicator2) Michele olajanni Libreria MPI 34/36
18 lcune home page su MPI: ltre informazioni su MPI ftp://unix.hensa.ac.uk/parallel/standards/mpi MPI Standard ocument: MPI Frequently sked Questions: Implementazione EP di MPI: MPI: The omplete Reference Michele olajanni Libreria MPI 35/36 Oltre MPI-1 Generalizzare la nozione di processo - gestione dell attivazione/disattivazione dinamica di processi - processi lightweight (threads) Generalizzare la nozione di message-passing - remote signal (interrupt -driven receive) - active message (remote memory copying) Parallel I/O - operazioni di I/O asincrone - nuovi datatype - gestire la non uniformità nell accesso a dispositivi esterni MPI-2: Extensions to the Message Passing Interface, July 1997 Michele olajanni Libreria MPI 36/36
Libreria MPI. (Message Passing Interface)
Libreria MPI (Message Passing Interface) Standard Message Passing Interface (MPI) Il primo standard de jure per i linguaggi paralleli a scambio di messaggi (definisce le specifiche sintattiche e semantiche,
DettagliAlcuni 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/
DettagliLaboratorio 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
DettagliAlcuni 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
DettagliNon blocking. Contro. La programmazione di uno scambio messaggi con funzioni di comunicazione non blocking e' (leggermente) piu' complicata
Non blocking Una comunicazione non blocking e' tipicamente costituita da tre fasi successive: L inizio della operazione di send/receive del messaggio Lo svolgimento di un attivita' che non implichi l accesso
DettagliComunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI
Comunicazione La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI Concettualmente la comunicazione point to point e' molto semplice: Un processo invia un
DettagliCalcolo Parallelo con MPI (2 parte)
2 Calcolo Parallelo con MPI (2 parte) Approfondimento sulle comunicazioni point-to-point Pattern di comunicazione point-to-point: sendrecv Synchronous Send Buffered Send La comunicazione non-blocking Laboratorio
DettagliIntroduzione 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)
DettagliMPI è 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
DettagliAlcuni 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
DettagliProgrammazione di base
1 0.1 INTRODUZIONE Al giorno d oggi il calcolo parallelo consiste nell esecuzione contemporanea del codice su più processori al fine di aumentare le prestazioni del sistema. In questo modo si superano
DettagliModelli di programmazione parallela
Modelli di programmazione parallela Oggi sono comunemente utilizzati diversi modelli di programmazione parallela: Shared Memory Multi Thread Message Passing Data Parallel Tali modelli non sono specifici
DettagliCalcolo parallelo con MPI (2ª parte)
Calcolo parallelo con MPI (2ª parte) Approfondimento sulle comunicazioni point-to-point La comunicazione non blocking Laboratorio n 3 MPI virtual topologies Laboratorio n 4 2 Modalità di comunicazione
DettagliA.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
DettagliIl Modello a scambio di messaggi
Il Modello a scambio di messaggi 1 Interazione nel modello a scambio di messaggi Se la macchina concorrente e` organizzata secondo il modello a scambio di messaggi: PROCESSO=PROCESSO PESANTE non vi è memoria
DettagliUniversità di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.
Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A. 2017-18 Pietro Frasca Lezione 9 Giovedì 2-11-2017 Comunicazione con pipe Oltre che con la memoria condivisa
DettagliIl modello a scambio di messaggio
Il modello a scambio di messaggio Ciascun processo evolve in un proprio ambiente che non può essere modificato direttamente da altri processi. Quindi non esiste memoria condivisa e le risorse sono tutte
DettagliModello a scambio di messaggi
Modello a scambio di messaggi Aspetti caratterizzanti il modello Canali di comunicazione Primitive di comunicazione 1 Aspetti caratterizzanti il modello modello architetturale di macchina (virtuale) concorrente
DettagliI.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE. Classe: 5Ci
I.I.S. G.B. PENTASUGLIA MATERA ISTITUTO TECNICO SETTORE TECNOLOGICO LICEO SCIENTIFICO SCIENZE APPLICATE Disciplina: Tecnologie e Progettazione di Sistemi Informatici e di Telecomunicazione Cognome e Nome:
DettagliCalcolo parallelo con MPI (2ª parte)
Calcolo parallelo con MPI (2ª parte) Approfondimento sulle comunicazioni point-to-point La comunicazione non blocking Laboratorio n 3 MPI virtual topologies Laboratorio n 4 2 Modalità di comunicazione
DettagliCalcolo 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,
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 28 giugno 2016 (Traccia A) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine
DettagliPrimi 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
DettagliEsercizi. Filtraggio
Politecnico di Milano Esercizi Preparazione alla prima prova intermedia Filtraggio L utente inserisce un array di numeri reali non negativi (un numero negativo indica la fine della fase di inserimento)
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliAmbienti di Programmazione per il Software di Base
Ambienti di Programmazione per il Software di Base Le Funzioni in C Esercizi sulle Funzioni svolti Esercizi sulle Funzioni da svolgere A.A. 2011/2012 Ambienti di Programmazione per il Software di Base
DettagliElementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I
Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave
DettagliPresentazione del corso
Cosa è il calcolo parallelo Serie di Fibonacci Serie geometrica Presentazione del corso Calcolo parallelo: MPI Introduzione alla comunicazione point-to-point Le sei funzioni di base Laboratorio 1 Introduzione
DettagliMPI. MPI e' il risultato di un notevole sforzo di numerosi individui e gruppi in un periodo di 2 anni, tra il 1992 ed il 1994
MPI e' acronimo di Message Passing Interface Rigorosamente MPI non è una libreria ma uno standard per gli sviluppatori e gli utenti, che dovrebbe essere seguito da una libreria per lo scambio di messaggi
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliUnità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.
Unità Didattica 1 Linguaggio C Fondamenti. Struttura di un programma. 1 La storia del Linguaggio C UNIX (1969) - DEC PDP-7 Assembly Language BCPL - un OS facilmente accessibile che fornisce potenti strumenti
DettagliEsercitazione 3 Programmazione Concorrente nel linguaggio go. 13 Novembre 2017
Esercitazione 3 Programmazione Concorrente nel linguaggio go 13 Novembre 2017 1 Concorrenza in go 2 creazione goroutine Sintassi : Esempio go func IsReady(what string, minutes int64)
DettagliLe Funzioni in C. Fondamenti di Informatica Anno Accademico 2010/2011. Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia
Le Funzioni in C Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2010/2011 docente: prof. Michele Salvemini 1/24 Sommario Le funzioni Il
DettagliVariabili e Funzioni. Informatica 1 / 19
Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:
DettagliIntroduzione alla programmazione. Alice Pavarani
Introduzione alla programmazione Alice Pavarani Il linguaggio C Creato da Dennis Ritchie nel 1972 presso i Bell Laboratories Linguaggio di programmazione procedurale, strutturato Linguaggio ad alto livello
DettagliMPI: MESSAGE PASSING INTERFACE
MPI: MESSAGE PASSING INTERFACE Lorenzo Simionato lorenzo@simionato.org Dicembre 2008 Questo documento vuol essere una brevissima introduzione ad MPI. Per un approfondimento dettagliato, si rimanda invece
DettagliFunzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)
Funzioni Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Strategie di programmazione Riuso di
DettagliStruttura dei programmi e Variabili
Linguaggio C Struttura dei programmi e Variabili 1 La struttura generale dei programmi! Struttura del programma: Direttive Funzioni Dichiarazioni Istruzioni Di assegnamento direttive Di ingresso e uscita
DettagliIntroduzione al Linguaggio C
INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliI Fondamenti del Linguaggio
Linguaggio C I Fondamenti del Linguaggio Linguaggio di Programmazione Linguaggio formale per la descrizione di programmi per calcolatori Sintassi vicina al linguaggio umano Se non ci fossero, bisognerebbe
DettagliFunzioni, Stack e Visibilità delle Variabili in C
Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7
DettagliFunzioni e. Alessandra Giordani Mercoledì 16 maggio 2012
Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni
DettagliIngresso ed Uscita in C. Informatica 1 / 15
Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita
DettagliEsercizi Programmazione I
Esercizi Programmazione I 0 Ottobre 016 Esercizio 1 Funzione valore assoluto Il file.c di questo esercizio deve contenere nell ordine, il prototipo (dichiarazione) di una una funzione abs, che prende in
DettagliIntroduzione al C. Lez. 1 Elementi. Rossano Venturini
Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni
DettagliLezione 6 Introduzione al C++ Mauro Piccolo
Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,
DettagliMessage Passing Interface (MPI) e Parallel Virtual Machine (PVM)
Università degli Studi di Bologna Dipartimento di Elettronica Informatica e Sistemistica Message Passing Interface (MPI) e Parallel Virtual Machine (PVM) Introduzione Message passing: esplicita comunicazione
DettagliIl Modello a scambio di messaggi
Il Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto typedef struct{ origine; destinazione; contenuto;
DettagliProcessi. Franco Maria Nardini
Processi Franco Maria Nardini La funzione main il kernel gestisce l avvio del vostro codice C (attraverso una funzione exec) routine speciale di start-up che prepara l ambiente di esecuzione per il main
DettagliStrategie di programmazione
Funzioni Funzioni in C Il concetto di funzione Parametri formali e attuali Il valore di ritorno Definizione e chiamata di funzioni Passaggio dei parametri Corpo della funzione 2 Funzioni in C Strategie
DettagliProf. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C
Prof. Pagani Corrado INTRODUZIONE AL LINGUAGGIO C IL LINGUAGGIO C Nel 1972 Dennis Ritchie nei Bell Laboratories progettò il linguaggio C Il linguaggio possiede tutti i costrutti di controllo dei linguaggi
DettagliEsercitazioni 13 e 14
Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2001/2002 Sistemi Operativi Corsi A e B Esercitazioni 13 e 14 Comunicazione tra processi (IPC) Meccanismo per la comunicazione
DettagliIntroduzione alla programmazione in linguaggio C
Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 3: Istruzioni ed operatori booleani. Vittorio Scarano Corso di Laurea in Informatica Università di Salerno Soluzioni agli esercizi Istruzioni (statement) semplici e di controllo
DettagliImplementazione di DFA in C
Implementazione di DFA in C Dispensa di Laboratorio di Linguaggi di Programmazione Sommario Corrado Mencar, Pasquale Lops, Stefano Ferilli Questa dispensa fornisce le linee guida per l implementazione,
DettagliStrutture dati e loro organizzazione. Gabriella Trucco
Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi
DettagliModello a scambio di messaggi
Modello a scambio di messaggi PRIMITIVE PER LO SCAMBIO DI MESSAGGI Un messaggio si può considerare costituito da: origine, destinazione e contenuto type messaggio = record origine:. ; destinazione:. ;
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione : Elementi lessicali del C Vittorio Scarano Corso di Laurea in Informatica Elementi lessicali e token Costanti Identificatori Operatori operatori di incremento/decremento
DettagliSistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
DettagliSistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
Dettagli1 PANORAMICA SUL LINGUAGGIO C
1 PANORAMICA SUL LINGUAGGIO C 1.1 Le origini del linguaggio C Il C fu inventato e implementato da Dennis Ritchie negli anni 70 su una macchina che impiegava il sistema operativo Unix. Il C è il risultato
DettagliPrinciples of Concurrent Programming
Principles of Giuseppe Anastasi g.anastasi@iet.unipi.it Pervasive Computing & Networking Lab. () Dept. of Information Engineering, University of Pisa Overview Concetti preliminari Interazione fra processi
DettagliLa Programmazione. Cos è la programmazione? Concetti preliminari
La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione
DettagliBurocrazia: Primi passi con il linguaggio C. Diversi tipi di linguaggio. Un solo linguaggio
Burocrazia: Università degli Studi di Ferrara Laurea triennale in Matematica Corso di Programmazione Primi passi con il linguaggio C Filippo Mantovani 1 Ottobre 009 Per ora nessun cambio di orario e/o
DettagliInformatica (A-K) 12. Linguaggio C -3
Introduzione alle funzioni in C Informatica (A-K) 12. Linguaggio C -3 int main() int i,n, fattoriale=1; printf( Inserire Numero: ); scanf( %d, &n); for (i =2; i
DettagliProgramma 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
DettagliPrimi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione
Primi esempi di programmi Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Il tipo int Un int permette di trattare numeri interi 4 byte (32 bit) con la tecnica del complemento a 2 (ma
DettagliALGORITMI E STRUTTURE DATI
Esercitazioni del corso di: ALGORITMI E STRUTTURE DATI Tutor: Francesca Piersigilli email: francesca.piersigilli@unicam.it Strutture dati elementari Tecniche di organizzazione dei dati: scelta della struttura
DettagliIntroduzione alla Programmazione Concorrente
Introduzione alla Programmazione Concorrente 1 Algoritmo, programma, processo Algoritmo: Procedimento logico che deve essere eseguito per risolvere un determinato problema. Programma: Descrizione di un
Dettagli2 Operatori matematici e costrutto if
Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione delle operazioni tra numeri e del costrutto condizionale if. Si introducono anche le due funzioni
DettagliIntroduzione al Multithreading
Introduzione al Multithreading Claudia Calidonna Istituto di di Cibernetica C.N.R. Argomenti principali Parleremo di : Processi & Threads Operazioni sui threads ed eventuali confronti tra operazioni sui
DettagliGESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI
GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un dispositivo di I/O Gestione e organizzazione dei dischi COMPITI
DettagliFUNZIONI. attribuire un nome ad un insieme di istruzioni parametrizzare l esecuzione del codice
Funzioni FUNZIONI Spesso può essere utile avere la possibilità di costruire nuove istruzioni che risolvono parti specifiche di un problema Una funzione permette di attribuire un nome ad un insieme di istruzioni
DettagliChiamata di procedura remota
Con gli strumenti gia` visti, si puo` realizzare come segue: lato chiamante: send asincrona immediatamente seguita da una receive lato chiamato: una receive seguita, al termine dell azione richiesta, da
DettagliIntroduzione al C. Lez. 1 Elementi
Introduzione al C Lez. 1 Elementi Introduzione al C Strumento che adotteremo in queste esercitazioni per implementare e testare gli algoritmi visti a lezione Configurazione minimale suggerita: Editing
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 19 febbraio 2013 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
Dettagliil tipo di parallelismo dipende dal grado di cooperazione
Thread Settembre 2009 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio d informazione) necessario tra attività svolte in parallelo processo macchina virtuale
DettagliComunicazione tra Processi
Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo
DettagliComunicazione tra Processi
Comunicazione tra Processi Comunicazioni in un Sistema Distribuito Un sistema software distribuito è realizzato tramite un insieme di processi che comunicano, si sincronizzano, cooperano. Il meccanismo
Dettagli14/12/2018 Informatici e di Telecomunicazioni
Informatici e di Telecomunicazioni 14 dicembre 2018 Parte I Classe V A INF ISIS E.Fermi Prof. Federico Santolini 1 (c) Primitive del servizio di trasporto (1/3) Premessa E utile ribadire che il livello
DettagliBoost.MPI Library Algoritmi e Calcolo Parallelo. Daniele Loiacono
Boost.MPI Library Algoritmi e Calcolo Parallelo Riferimenti! Boost homepage http://www.boost.org/! Tutorial on Boost.MPI http://www.boost.org/doc/libs/1_52_0/doc/html/mpi/ tutorial.html! Tutorial on Boost.Serialization
DettagliLaboratorio di programmazione
Laboratorio di programmazione Lezione II Tatiana Zolo zolo@cs.unipr.it 1 IL PROGRAMMA C++ Istruzioni (espressioni terminate da ; ) istruzioni di dichiarazione (es. int x = 0;); istruzioni di assegnamento
DettagliProcessi parte IV. Processi parte IV
Processi parte IV Processi parte IV Grafi di precedenza Sincronizzazione dei processi Unix mediante: fork-join cobegin-coend semafori Grafi di precedenza Un grafo di precedenza è un grafo diretto aciclico
DettagliSistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel
SISTEMI DI INPUT/OUTPUT 10.1 Sistemi I/O Hardware di I/O Interfaccia di I/O per le applicazioni Sottosistema per l I/O del kernel Trasformazione delle richieste di I/O Stream Prestazioni 10.2 I/O Hardware
DettagliC espressioni condizionali
C espressioni condizionali Esiste un particolare operatore, detto operatore condizionale, che rappresenta un istruzione if else. estremamente compattata?: Supponiamo di voler inserire nella variabile intera
DettagliFunzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri
Funzioni (Passaggio dei parametri per riferimento) Passaggio dei parametri Per passaggio dei parametri si intende l associazione fra parametri attuali e parametri formali che avviene al momento della chiamata
DettagliACSO Programmazione di Sistema e Concorrente
ACSO Programmazione di Sistema e Concorrente P2 Modello Thread 2/12/2015 programma e parallelismo il tipo di parallelismo dipende dal grado di cooperazione (scambio di informazione) necessario tra attività
DettagliGESTIONE DELLE PERIFERICHE D INGRESSO/USCITA COMPITI DEL SOTTOSISTEMA DI I/O ARGOMENTI
GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI Compiti del sottosistema di I/O Architettura del sottosistema di I/O Gestore di un di I/O 1. Nascondere al programmatore i dettagli delle interfacce
DettagliIl linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1
Il linguaggio C I linguaggi di programmazione ad alto livello sono linguaggi formali ( sintassi e semantica formalmente definite) però sono compatti e comprensibili. Le tipologie di linguaggi sono: procedurali
Dettagli5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche
Device driver - gestori delle periferiche Struttura interna del sistema operativo Linux Sono moduli software che realizzano l interfacciamento e la gestione dei dispositivi periferici Interagiscono con
DettagliIl linguaggio C Variabili e tipi di dato primitivi
Il linguaggio C Variabili e tipi di dato primitivi main() { /*definizioni variabili: */ char y= a ; /*codice(a)=97*/ int x,x,y; unsigned int Z; float SUM; double r; /* parte istruzioni: */ X=27; Y=4; Z
DettagliVariabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER
Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico
Dettagli