MPI in dettaglio. Chi ha definito MPI. Salvatore Orlando. CALCOLO PARALLELO - S. Orlando. CALCOLO PARALLELO - S. Orlando
|
|
- Enzo Bosco
- 6 anni fa
- Visualizzazioni
Transcript
1 MPI in dettaglio Salvatore Orlando 1 Chi ha definito MPI 2
2 Il modello Message-Passing Model Ad un processo è tradizionalmente associato con program counter & address space. Processi possono però avere threads multipli (program counters & private stacks) che condividobo un singolo address space Le versioni correnti di MPI supportano la comunicazione tra processi, non tra thread Interprocess communication (message-passing) combina Sincronizzazione Movimento di dati dall address space di un processo (mittente), all address space di un altro processo (destinatario) Process 0 Process 1 Send(data) Receive(data) 3 Operazioni One-Sided di comunicazione MPI-2 permette anche operazioni One-Side tra processi remote memory read & writes Solo un processo deve esplicitamente partecipare. Vantaggio comunicazione e sincronizzazione sono disaccoppiate Process 0 Process 1 Put(data) (memory) (memory) Get(data) 4
3 Un semplice programma MPI #include <mpi.h> #include <stdio.h> int main( int argc, char *argv[] ) { MPI_Init( &argc, &argv ); printf( "Hello, world!\n" ); MPI_Finalize(); return 0; } 5 Compilare un programma MPI Con MPICH possiamo semplicemente compilare programmi in C usando il comando: mpicc È uno script che invoca cc/gcc con i parametri corretti, risolvendo i problemi dovuti INCLUDE (es. mpi.h) LIB (es. mpi.a) Con MPICH è possibile linkare speciali librerie, e instrumentare così il codice per analizzare le prestazioni mpicc o myprog -mpitrace myprog.c 6
4 Eseguire un programma MPI Lo standard MPI-1 non specifica come eseguire un programma MPI In generale, eseguire il programma MPI dipende dalla specifica implementazione della libreria Potrebbe richiedere vari scripts, argomenti, e/o variabili di ambiente Con MPICH si usa mpirun [-np<num>] [-machinefile <nomefile>] <execfile> -np <num> : specifica grado di parallelismo -machinefile <nomefile> : lista di IP address o domain name dei calcolatori del cluster 7 Scoprire a run-time informazioni sull ambiente Ogni processo può avere necessità di chiedere : Quanti processi partecipano in questa computazione? Chi sono io? MPI fornisce funzioni per rispondere a questi quesiti: MPI_Comm_size() restituisce il numero di processi MPI_Comm_rank restituisce il rank, un numero tra 0 e size-1, che identifica il processo chiamante 8
5 Un Hello.c migliore #include <mpi.h> #include <stdio.h> int main( int argc, char *argv[] ) { int rank, size; MPI_Init( &argc, &argv ); MPI_Comm_rank( MPI_COMM_WORLD, &rank ); MPI_Comm_size( MPI_COMM_WORLD, &size ); printf( "I am %d of %d\n", rank, size ); MPI_Finalize(); return 0; } 9 Comunicatori: Gruppi e Contesti I processi MPI possono essere organizzati in gruppi Ogni messaggio è inviato in un gruppo, ma all interno di uno specifico contesto Il msg deve anche essere ricevuto nello stesso contesto Gruppo e Contesto insieme formano Un comunicatore Nota: per lo stesso gruppo potremmo così avere comunicatori diversi Un processo è identificato dal suo rank nel gruppo associato con un comunicatore MPI_COMM_WORLD Comunicatore di default 10
6 MPI Datatypes I dati in un messaggio da inviare/ricevere descritti da una tripla: address, count, datatype Un MPI datatype è definito ricorsivamente come: Predefinito, corrispondente a un datatype di base del linguaggio ospite (es., MPI_INT, MPI_DOUBLE_PRECISION) Un array contiguo di MPI datatypes Un block di datatypes con stride Un struttura arbitraria di datatypes Ad esempio, è possibile costruire datatypes come Un array di coppie (int, float) Una riga di una matrice, memorizzata però per colonne (stride fisso) 11 Perché sono necessari i Datatypes? Un implementazione MPI può così permettere comunicazioni tra processi allocati su macchine eterogenee, i cui datatype elementari hanno diversa rappresentazione in memoria hanno lunghezze differenti Con i datatype si possono specificare layout application-oriented dei dati Questo riduce copie memory-to-memory nell implementazione 12
7 MPI Tags I messaggi sono inviati accompagnati con un tag intero user-defined Questo serve al processo ricevente per identificare il messaggio I messaggi possono essere selezionati dal ricevente specificando il tag I messaggi possono non essere scelti dal ricevente sulla base del tag Specificando MPI_ANY_TAG come tag nella receive. I tag sono considerati come message type in alcuni sistemi messagepassing, ma non in MPI MPI li chiama semplicemente tag per evitare confusione con i datatypes. 13 Tag e Contesti E noto che la separazione dei messaggi da adottare per la comunicazione all interno di specifico contesti può essere realizzata usando i tag, ma Questo richiede che eventuali librerie usate siano a conoscenza dei tag usati dal programma chiamante o da altre librerie In ogni caso, avremmo problemi con i wild card per i tag (ANY_TAG) I contesti in MPI sono differenti dai tag Non sono permessi wild card Sono allocati dinamicamente e univocamente dal sistema quando ad esempio una libraria stabilisce di usare un comunicatore per i suoi scopi Usa MPI_Comm_split per creare nuovi contesti (communicatori) 14
8 Uso dei comunicatori: vantaggi Subroutine Sub1() e Sub2(), corrispondenti a librerie MPI diverse Nota: subroutine chiamate da tutti i processi (codice SPMD) Funzionamento corretto: 15 Uso dei comunicatori: vantaggi Usando lo stesso comunicatore, a causa dell uso di ANY_TAG, il funzionamento potrebbe essere scorretto: 16
9 MPI Basic (Blocking) Send MPI_SEND (start, count, datatype, dest, tag, comm) Comunicazione standard, Asincrona/Buffered/Bloccante Il buffer del messaggio è descritto da start, count, datatype Il processo destinazione è specificato da dest, che è il rank del processo target nel comunicatore specificato da comm. Quando la funzione ritorna, i dati sono già stati consegnati al sistema e il buffer può essere riusato Il messaggio può non essere stato ricevuto dal processo ricevente 17 MPI Basic (Blocking) Receive MPI_RECV(start, count, datatype, source, tag, comm, status) Comunicazione standard, Asincrona/Buffered/Bloccante Attende fino a quando un matching message (rispetto a comm, source e tag) è ricevuto dal sistema, e copiato nel buffer utente (start, count, datatype) source è il rank nel comunicatore specificato da comm, oppure MPI_ANY_SOURCE. tag è il tag atteso e associato al messaggio, oppure MPI_ANY_TAG status è un parametro in output, e conterrà informazioni sulla comunicazione Si possono ricevere meno di count occorrenze di un datatype, ma riceverne di più è un errore 18
10 Status Status è una struttura dati allocata nello user s program, che conterrà informazioni sulla receive appena conclusa: int recvd_tag, recvd_from, recvd_count; MPI_Status status; MPI_Recv(..., MPI_ANY_SOURCE, MPI_ANY_TAG,..., &status ) recvd_tag = status.mpi_tag; recvd_from = status.mpi_source; MPI_Get_count( &status, datatype, &recvd_count ); 19 Calcolo PI greco Equivalentemente possiamo calcolare 1 1 y x ARCTAN(1) = π/4 ARCTAN(0) = 0 x 1 E noto che l area del cerchio è r 2 π, per cui l area del semicerchio con r=1 è: π/4 Curva cerchio (teorema di Pitagora): x 2 + y 2 = 1 y = (1-x 2 ) L area del semicerchio corrisponde al calcolo del 1seguente integrale: X Possiamo calcolarlo numericamente. Maggiore è il numero di intervalli in cui suddividiamo [0..1], maggiore è la precisione del calcolo dell integrale 20
11 Esempio: PI greco in C (1) #include <mpi.h> #include <math.h> int main(int argc, char *argv[]) { int done = 0, n, myid, numprocs, i, rc; double PI25DT = ; double mypi, pi, h, sum, x, a; MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&myid); if (myid == 0) { printf("enter the number of intervals: (0 quits) "); scanf("%d",&n); } MPI_Bcast(&n, 1, MPI_INT, 0, MPI_COMM_WORLD); 21 Esempio: PI greco in C (2) } if (n!= 0) { h = 1.0 / (double) n; sum = 0.0; for (i = myid + 1; i <= n; i += numprocs) { x = h * ((double) i - 0.5); sum += 4.0 / (1.0 + x*x); } mypi = h * sum; MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); if (myid == 0) printf("pi is approximately %.16f, Error is %.16f\n", pi, fabs(pi - PI25DT)); } MPI_Finalize(); return 0; 22
12 Codici unsafe e deadlock Anche usando primitive asincrone (bufferizzate), si può generare un deadlock: Supporre di voler inviare un messaggio molto grande dal processo 0 al processo 1 se la memoria di sistema (buffer) sul ricevente è insufficiente, la send deve attendere che l utente fornisca spazio di memoria (attraverso una receive) Possibile deadlock: Process 0 Process 1 Send(1) Recv(1) Send(0) Recv(0) Questo codice è chiamato unsafe, poiché il suo funzionamento dipende dalla disponibiltà di buffer di sistema 23 Alcune soluzioni al problema del codice unsafe Ordinare le operazioni più attentamente: Process 0 Send(1) Recv(1) Process 1 Recv(0) Send(0) Usare primitive non-blocking: Process 0 Isend(1) Irecv(1) Waitall Process 1 Isend(0) Irecv(0) Waitall 24
13 Estensioni a MPI(1): MPI-2 Oltre alle comunicazioni one-sided Dynamic Process Management Startup dinamico dei processi Determina dinamicamente le connessioni I/O parallelo Bindings anche per C++/ Fortran-90 problemi legati a linguaggi diversi e alla rappresentazione dei tipi semplici e strutturati 25 MPICH MPICH è un implementazione portabile di MPI 1 con alcune nuove primitive MPI-2 Funziona su MPPs, Grid, cluster, e NOWs o Clumps eterogenei Per compilare, decomprimere in /usr/local configure make bisogna poi sistemare PATH e MANPATH Per compilare, eseguire e analizzare le prestazioni mpicc o myprog myprog.c mpirun -np 10 myprog 26
14 MPICH (compilazione) Esistono quindi diversi script per compilare e linkare (librerie e path relativi, path degli include sono specificati dagli script) C (mpicc) C++ (mpicc) Fortran 77 (mpif77) Fortran 90 Script di compilazione permettono diverse opzioni: -mpilog Costruisce eseguibile che genera MPE log files. -mpitrace Costruisce eseguibile che genera tracce di esecuzione -mpianim Costruisce eseguibile che genera animazione real-time -show Mostra solo i comandi che verranno eseguiti Possibile linkare altre librerie mpicc -o foo foo.o -lm 27 MPICH (esecuzione) mpirun [mpirun_options...] <progname> [options...] Alcune mpirun_options: -machinefile <machine-file name> Take the list of possible machines to run on from the file <machine-file name>. This is a list of all available machines; use -np <np> to request a specific number of machines. -np <np> specify the number of processors to run on -nolocal don t run on the local machine -t Testing - do not actually run, just print what would be executed In un cluster di workstation i processi di un job parallelo sono fatti partire individualmente su ciascuna workstation Se il parametro machifile non è specificato, mpich cerca una lista di default: machines.<arch> nella directory di istallazione (es.: /usr/local/mpich2.2.21). 28
15 MPICH (machinefile) E possibile costruire un file delle workstation (machinefile) personale Esempio di machinefile: mercury venus earth mars:2 jupiter:4 che specifica l esistenza di 3 macchine con processore singolo (mercury, venus, and earth), una macchina con 2 processori (mars), e una con 15 (jupiter). Eseguendo: mpirun -np 9... con il file di sopra, verranno creati 1 processo su mercury, venus, e earth 2 su mars 4 su jupiter Se fossero necessari 10 o più processi, mpirun ripartirebbe dall inizio del file, creando processi aggiuntivi su mercury, venus, ecc. 29 MPICH (machinefile e rsh/ssh) Deve essere possibile lanciare un processo/comando tramite rsh/ssh su ogni macchina compresa nel <machinefile> Senza digitare la password ogni volta Con garanzia di sicurezza rsh Meno sicuro Un host permette il login remoto ad un insieme di utenti@host listati in un file (.rhosts) Quindi il login è permesso sulla base di un IP e di un user name ssh Più sicuro Basato sul meccanismo delle chiavi pubbliche/private L host su cui vogliamo collegarci in remoto (server) deve possedere la chiave pubblica dell utente@host (client) Il client dimostra la propria identità firmando con la propria chiave privata un messaggio challenge Il server verifica il challenge grazie al possesso della relativa chiave pubblica Sicurezza garantita dalla protezione della chiave privata 30
16 rsh Per costruire un cluster composto dalle macchine p0.dsi.unive.it p1.dsi.unive.it p3.dsi.unive.it ponete nella vostra home condivisa il file.rhosts così costruito: p0.dsi.unive.it username p1.dsi.unive.it username p3.dsi.unive.it username Una generica macchina py.dsi.unive.it accetterà l esecuzione locale di una richiesta remota, proveniente dalla macchina px.dsi.unive.it e con utente pippo, solo se nel file.rhosts presente nella home di pippo su py.dsi.unive.it apparirà la riga: px.dsi.unive.it pippo NOTA: con MPICH, è il comando mpirun ad aver bisogno di usare rsh per lo spawn dei vari task del programma SPMD. Quindi, se compiliamo e lanciamo mpirun sempre da px.dsi.unive.it, basterà includere in tutti i file. rhosts del cluster l unica riga di sopra 31 MPICH (machinefile e rsh) Potete controllare la corretta configurazione di rsh e.rhosts, ovvero se dalla una macchina p0 è possibile lanciare job sulla macchina p2 effettuando il comando > rsh p2.dsi.unive.it ls che invoca un ls remoto sulla home directory. MPICH mette anche a disposizione un tool > tstmachines -v -machinefile=<miofile> per controllare il corretto funzionamento di rsh su tutte le workstation del machinefile. 32
17 SSH Sulle macchine del laboratorio, rsh è stato disabilitato In verità, con il meccanismo dei link simbolici, quando si invoca rsh si sta in realtà invocando ssh MPI (ma anche PVM) usano ssh per l esecuzione remota di processi/comandi Usando SSH, il meccanismo di autenticazione senza password non è basato sul file.rhosts è necessario generare la coppia di chiavi privata e pubblica 33 SSH senza password Digitare ssh-keygen -t rsa digitare sempre <Invio> alla richiesta di password, senza inserire nulla In questo modo però la chiave privata non sarà protetta da passphase Questo comando genera in $HOME:/.ssh i file id_rsa (chiave privata) e id_rsa.pub (chiave publica) Copiare il file $HOME:/.ssh/id_rsa.pub in $HOME:/.ssh/authorized_keys Poiché la home è condivisa, basta questo per permettere l invio di comandi remoti tra tutte le macchine del laboratorio Eseguire i test suggeriti per rsh Suggerimento: Conservare in modo sicuro la chiave privata $HOME:/.ssh/id_rsa Ad esempio rimuovendola se necessario 34
18 Alcuni semplici esercizi Compila e esegui il programma cpi dpkg -L mpich (per verificare i file istallati) cp R /usr/share/doc/mpich/examples/pi mpi_examples cd mpi_examples; make cpi Modifica il programma cpi in modo da usare send/receive invece di bcast/reduce Scrivere un programma che invia un messaggio lungo un anello: Processo 0 legge una linea dallo stdin Processo 0 invia la linea a Processo 1, che l invia al Processo 2, etc. L ultimo processi la invia indietro al Processo 0, che lo stampa. Usa MPI_Wtime per prendere i tempi (man MPI_Wtime) Calcola banda di trasmissione e overhead di trasmissione tra 2 processi Ping-pong: il primo processo invia e riceve, il secondo rimbalza i messaggi ricevuti Calcolare con MPI_Wtime il tempo impiegato sul primo processo, dividendo il tempo per il numero Byte trasmessi Cosa succede all aumentare del size dei messaggi? 35
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)
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
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/
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
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
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
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
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
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
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
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
DettagliSomma 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
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
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
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,
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:
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;
DettagliEsercizi MPI. Algoritmi e Calcolo Parallelo. Daniele Loiacono
Esercizi MPI Algoritmi e Calcolo Parallelo Esercizio 1 2 Implementare in MPI una soluzione parallela del seguente algoritmo per approssimare PI cin >> npoints; count = 0; for(j=0, j
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
DettagliCompiti 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
DettagliEsercizi Calcolo Parallelo Algoritmi, Strutture Dati e Calcolo Parallelo. Daniele Loiacono
Esercizi Calcolo Parallelo Algoritmi, Strutture Dati e Calcolo Parallelo MPI Esercizio 1 3 Implementare in MPI una soluzione parallela del seguente algoritmo per approssimare PI scanf( %d,npoints); count
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
DettagliSi 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
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
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
DettagliLinguaggio di Riferimento: C
Programmazione procedurale Linguaggio di Riferimento: C 1 Linguaggio macchina Il linguaggio macchina costituisce la forma espressiva atta a descrivere programmi e ad essere direttamente interpretata dall
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
DettagliFile System Unix. Generalità
File System Unix Generalità File System: Caratteristiche Struttura gerarchica Files senza struttura (byte strems) Protezione da accessi non autorizzati Semplicità di struttura "On a UNIX system, everything
DettagliIntroduzione Generalitá sull uso degli array Array allocabili Funzioni intrinseche. Array. Fondamenti di Informatica T (A-K) AA
allocabili AA 2013-2014 allocabili Introduzione Un array rappresenta un gruppo di variabili (o costanti) dello stesso tipo, a cui si fa riferimento con un singolo nome. Si definisce anche vettore un array
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2 1 Editor di testi Sono disponibili numerosi
DettagliLaboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 4 24/10/2013
Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 4 24/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University
DettagliAA 2016/2017. MPI: concetti di base
Corso di Laurea Magistrale in Informatica Dipartimento di Scienze Fisiche, Informatiche e Matematiche Titolare del corso: prof. Marko Bertogna (marko.bertogna@unimore.it) AA 2016/2017 MPI: concetti di
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
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica a.a. 2008-2009 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2 1 L editor di testi Emacs/XEmacs (opzionale)
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
DettagliTitolo presentazione
Titolo presentazione Programmazione C: Esercizi su stringhe, funzionisottotitolo di libreria e matrici Milano, XX mese 20XX Informatica ed Elementi di Informatica Medica Agenda Argomenti e valore di ritorno
DettagliIntroduzione al linguaggio C Primi programmi
Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
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
DettagliJAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {
JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int
DettagliSISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi
SISTEMI OPERATIVI Processi in Linux 2 Creazione di processi concorrenti» La creazione di un processo figlio consente di far eseguire alcune funzionalità del programma in modo concorrente» Opzione 1 il
DettagliProdotto 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
DettagliSistemi 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
DettagliPer quanto sappiamo finora, in C le variabili sono sempre definite staticamente. per variabili di tipo array, in cui dover
ALLOCAZIONE STATICA: LIMITI Per quanto sappiamo finora, in C le variabili sono sempre definite staticamente la loro esistenza deve essere prevista e dichiarata a priori Questo può rappresentare un problema
DettagliLinea di comando. Compilazione. Aprire una shell di DOS tramite:
Linea di comando Aprire una shell di DOS tramite: Start MS VisualStudio 2005 Visual Studio Tools E una normale shell di DOS con aggiunte al path ed alle variabili d ambiented Digitare cl /? per vedere
DettagliUniversità 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
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
DettagliProdotto Matrice - Vettore in MPI - III Strategia
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
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliEsercitazione 1 la shell
Esercitazione 1 la shell Obiettivi Prendere confidenza con i comandi per la gestione del file system Utilizzare gli strumenti visti a lezione per creare tre semplici script bash File system 1/2 1. Verificare
DettagliDichiarazioni e tipi predefiniti nel linguaggio C
Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:
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à
DettagliProgetto II: Il linguaggio C e le chiamate di sistema sui processi
Progetto II: Il linguaggio C e le chiamate di sistema sui processi Scrivere un programma C psstat.c che svolga quanto segue: se invocato senza parametri deve stampare su standard output un istogramma orizzontale
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
DettagliEsame Laboratorio di Sistemi Operativi Cognome Nome Mat.
Il compito è costituito da domande chiuse, domande aperte ed esercizi. Non è consentito l uso di libri, manuali, appunti., etc. Tempo massimo 2 ore. Domande chiuse: ogni domanda corrisponde ad un punteggio
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
DettagliCorso di Laboratorio di Sistemi Operativi
Corso di Laboratorio di Sistemi Operativi Lezione 4 Alessandro Dal Palù email: alessandro.dalpalu@unipr.it web: www.unipr.it/~dalpalu Approfondimento su make http://http://capone.mtsu.edu/csdept/facilitiesandresources/make.htm
DettagliUso del terminale in ambiente UNIX
Uso del terminale in ambiente UNIX Non sempre è disponibile un interfaccia grafica sui computer su cui si lavora In questo caso l interazione con il calcolatore avviene attraverso l interfaccia a riga
DettagliCORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4
UNIVERSITÀ DEGLI STUDI DI PARMA Facoltà di Ingegneria Corso di Laurea in Ingegneria Elettronica e delle Telecomunicazioni a.a. 2005-2006 CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 4 1 Funzioni per il
DettagliENEA 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
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
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
DettagliLo strato di applicazione in Internet
Lo strato di applicazione in Internet Prof. Ing. Carla Raffaelli a.a. 2004/2005 Protocolli applicativi Sono i protocolli utilizzati dalle applicazioni per scambiarsi informazioni Esempi: HTTP per il web,
DettagliCenni su LSF. Utilizzo dell Infrastruttura Cresco. Ing. Fiorenzo Ambrosino, PhD DTE-ICT-HPC. Frascati 5 Aprile 2017
Cenni su LSF Utilizzo dell Infrastruttura Cresco Ing. Fiorenzo Ambrosino, PhD DTE-ICT-HPC Frascati 5 Aprile 2017 5/4/2017 1 Informazioni utili su CRESCO Comandi Base di LSF Code, sottomissione, monitoring
DettagliPerché il linguaggio C?
Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare
DettagliPrimi programmi in C
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma
DettagliTECN.PROG.SIST.INF. I Socket Roberta Gerboni
2015 - Roberta Gerboni Socket e porte I sistemi operativi multitasking possono fare girare contemporaneamente più processi dove ogni processo può rendere disponibili anche più servizi. Questi devono essere
DettagliSISTEMI DI ELABORAZIONE
SISTEMI DI ELABORAZIONE CORSO DI LAUREA MAGISTRALE IN INGEGNERIA ELETTRONICA SPECIFICHE DI PROGETTO A.A. 2011/2012 Il progetto consiste nello sviluppo di un applicazione client/server. Client e server
DettagliLezione 5: Introduzione alla programmazione in C
Lezione 5: Introduzione alla programmazione in C Laboratorio di Elementi di Architettura e Sistemi Operativi 4 Aprile 2012 Introduzione al C C vs. Java Java: linguaggio ad oggetti C: linguaggio procedurale
DettagliPreprocessore, linker e libreria standard
Preprocessore, linker e libreria standard Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 IL PREPROCESSORE Programma sorgente
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 19 settembre 2016 (Traccia A) Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine
DettagliFile binari e file di testo
I file File binari e file di testo distinzione tra file binari file di testo si possono usare funzioni diverse per la gestione di tipi di file diversi Programmazione Gestione dei file 2 File binari e file
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
DettagliPrimo passo: il preprocessor. Il preprocessore. Esempi di direttive al preprocessore: #include. Esempi di direttive al preprocessore: #define
Primo passo: il preprocessor Source code Preprocessor Pre-processed source code Compiler Libraries Linker Executable code 1 Il preprocessore Il preprocessore compie delle manipolazioni sul codice del programma.
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
DettagliLaboratorio 1. 20/21 febbraio 2019
Laboratorio 1. 20/21 febbraio 2019 Attivitá Professionalizzante A.A. 2018/19 Premessa Si lavora a coppie, sui PC del laboratorio. Al termine degli esercizi, ogni copia scrive un breve report e me lo invia
Dettagli5 Thread. 5 Thread. 5 Thread. Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni:
1 Ad un generico processo, sono associati, in maniera univoca, i seguenti dati e le seguenti informazioni: codice del programma in esecuzione un area di memoria contenente le strutture dati dichiarate
DettagliSistemi 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
DettagliEsempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina
Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono
DettagliENEA 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
DettagliLa connessione ai database MySQL tramite script PHP versione 5.5
La connessione ai database MySQL tramite script PHP versione 5.5 Php è un linguaggio di scripting che estende le funzionalità del server Web, mentre MySQL è un programma server che si occupa della gestione
DettagliShell BASH. Variabili Redirezione
Shell BASH Variabili Redirezione Variabili Scrittura/definizione: a=3 (senza spazi) Lettura: ${a} o semplicemente $a Esempi: > a=3 > echo $a 3 > echo $aa > echo ${a}a 3a > a=ciao pippo bash: pippo: command
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 17 febbraio 2014 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare
DettagliNozioni Base di Linux
Nozioni Base di Linux Shahram Rahatlou http://www.roma1.infn.it/people/rahatlou/labcalc/ Laboratorio di Calcolo Lezione 2 Hardware Sistema Operativo Software Routine e programmi di base per interagire
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
DettagliCapitolo 6 - Array. Copyright by Deitel & Associates, Inc. and Pearson Education Inc. All Rights Reserved.
1 Capitolo 6 - Array Array Array Gruppo di locazioni di memoria consecutive Stesso nome e tipo Per riferirsi a un elemento, specificare Nome dell array Posizione Formato: arrayname[ position number ] Primo
DettagliLABORATORIO DI SISTEMI OPERATIVI
LABORATORIO DI SISTEMI OPERATIVI Corso di Laurea Triennale in Ingegneria Informatica A.A. 2018/2019 Guglielmo Cola Email: g.cola@iet.unipi.it Web: iet.unipi.it/g.cola Processi in Unix/Linux caratteristiche
DettagliLe direttive del Preprocessore
Le direttive del Preprocessore Prof. Orazio Mirabella Direttive Un compilatore traduce le istruzioni di un programma sorgente in linguaggio macchina Talvolta è conveniente prendere coscienza dell esistenza
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 10 Martedì 7-11-2017 Thread a livello kernel Modello da uno a uno La
DettagliLaboratorio 1. 15/16 marzo 2018
Laboratorio 1. 15/16 marzo 2018 Attivitá Professionalizzante A.A. 2017/18 Premessa Quando avete finito gli esercizi, inviatemeli in un unico file compresso chiamato lab1 CognomeNome (zip, rar,...), all
Dettagli