Primi Programmi con MPI 1
|
|
- Massimo Poggi
- 6 anni fa
- Visualizzazioni
Transcript
1 Il cluster che usiamo: spaci Esercitazione: Primi Programmi con MPI Spacina è un cluster HP XC 6000 / Linux a 64 nodi biprocessore. La configurazione hardware dei nodi è la seguente: CPU Intel Itanium 2, Madison Ghz Memory 4GB RAM, PC2100 ECC registered DDR266 SDRAM Frontside Bus 200 MHz Chipset HP zx1 chipset Graphic ATI Radeon 7000 Network Interface Card Quadrics QsNetII Elan4 Network Adapter, 2 Broadcom Corporation NetXtreme BCM5701 Gigabit Ethernet, Intel Fast Ethernet Corp Il cluster che usiamo: spaci Spacina è un cluster HP XC 6000 / Linux a 64 nodi biprocessore. La configurazione hardware dei nodi è la seguente: La rete di interconnessione principale è Quadrics QsNetII Elan 4. Sistema operativo Linux for High Performance Computing 3 (basato su Red Hat Enterprise Linux AS 3) Kernel Linux Librerie C GNU libc Primo Programma MPI: Hello World Spostarsi sotto la dir cognome (altrimenti crearla con mkdir cognome) cd cognome Copiare il file hello.c dalla home lauranto: cp /home3/lauranto/ceinge/hellompi.c. Definizione di alcune variabili per l ambiente MPI: module load hptc Compilazione mpicc c hellompi.c Generazione dell eseguibile mpicc o hellompi.exe hellompi.o (spazio, punto!!) Primi Programmi con MPI 1
2 Esecuzione mediante uno scheduler: LSF L'esecuzione di programmi sul cluster spaci.na.icar.cnr.it prevede l'utilizzo del resource manager LSF il quale fornisce le seguenti funzionalità: regola l'accesso ai nodi del cluster fornisce un'infrastruttura per l'esecuzione ed il monitoraggio dei programmi amministra code di job selezionando l'esecuzione di applicazioni in attesa Load Sharing Facility Esecuzione mediante uno scheduler: LSF Comando per la sottomissione di un programma, bsub bsub -o output.txt -n 2 mpirun -srun./hellompi.exe Opzioni di bsub -o nome file dove scrivere i dati di output -n numero dei processori da utilizzare -srun opzione per i programmi MPI Altre opzioni: -i nome file dove sono scritti i dati di input -e nome file dove scrivere gli (eventuali) errori di esecuzione bsub -i input.txt -e errori.txt -o output.txt -n 2 mpirun -srun./hellompi.exe Esecuzione mediante uno scheduler: LSF Esecuzione mediante uno scheduler: LSF Monitoraggio dei jobs, bjobs ceinge1@n64 ceinge1]> bjobs Visualizzazione del file di output ceinge1@n64 ceinge1]> vi output.txt JOBID USER STAT QUEUE FROM_HOST EXEC_ HOST JOB_NAME SUBMIT_TIME <423443> lauranto PEND Normal lsfhost.loc *sum.exe Feb 25 11:00 <423444> ceinge1 RUN Normal lsfhost.loc *hello.exe Feb 25 10:59 JOBID USER STAT QUEUE FROM_HOST EXEC_ HOST JOB_NAME SUBMIT_TIME <423443> lauranto PEND Normal lsfhost.loc *sum.exe Feb 25 11:00 <423444> ceinge1 RUN Normal lsfhost.loc *hello.exe Feb 25 10:59 Se il job è terminato verrà restituito all utente il messaggio ceinge1@n64 ceinge1]> bjobs No unfinished jobs Per eliminare un job in coda, bkill ceinge1@n64 ceinge1]> bkill Primi Programmi con MPI 2
3 Esercizio 1: messaggio di tipo broadcast Scrivere un programma che assegnato un intero, spedisca tale valore a tutti gli altri processi MPI Funzioni MPI da utilizzare: MPI_Init MPI_Comm_rank MPI_Comm_size MPI_Bcast MPI_Finalize Copiare la bozza di programma con il comando cp /home3/lauranto/ceinge/mpibcast.c. (spazio, punto!!) #include <stdio.h> #include "mpi.h" int main( int argc, char **argv ){ int rank, nproc, value; Esercizio 1: messaggio di tipo broadcast MPI_Init( COMPLETA ); MPI_Comm_rank( COMPLETA, &rank); MPI_Comm_size( COMPLETA ); if (rank == 0) { value = 100; printf( Valore intero da spedire %d \n, value); MPI_Bcast( &value, COMPLETA, MPI_COMM_WORLD ); printf( "Processo %d di %d ricevuto %d\n", rank, nproc, value ); MPI_Finalize( ); return 0; Bozza programma Prototipi funzioni MPI_Comm_rank(MPI_Comm comm, int *rank); MPI_Comm_size(MPI_Comm comm, int *nproc); MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm); Esercizio 1: messaggio di tipo broadcast Scrivere un programma che assegnato un intero, spedisca tale valore a tutti gli altri processi MPI Compilazione e generazione eseguibile mpicc -c mpibcast.c mpicc -o bcast.exe mpibcast.o Scrivere un programma in cui la prima metà di nproc processi comunica il proprio identificativo (rank) alla seconda metà secondo il seguente schema nproc = 8 Sottomissione mediante LSF bsub -o out2.txt -n 2 mpirun -srun./bcast.exe Visualizzazione dell output vi out2.txt P 0 P 1 P 2 P 3 P 4 P 5 P 6 P 7 Primi Programmi con MPI 3
4 Scrivere un programma in cui la prima metà di nproc processi comunica il proprio identificativo (rank) alla seconda metà secondo il seguente schema Funzioni MPI da utilizzare: MPI_Init MPI_Comm_rank MPI_Comm_size MPI_Send MPI_Recv MPI_Finalize Copiare la bozza di programma con il comando cp /home3/lauranto/ceinge/sendrecv.c. (spazio, punto!!). #define MASTER 0 int main (int argc, char **argv){ int nproc, rank, len; char hostname[mpi_max_processor_name]; int partner, message; MPI_Status status; MPI_Init(&argc, &argv); MPI_Comm_size(COMPLETA); MPI_Comm_rank(COMPLETA); MPI_Get_processor_name(hostname, &len); printf ("Hello from task %d on %s!\n", rank, hostname); if (rank == MASTER) printf("master: Number of MPI tasks is: %d\n",numtasks); Bozza programma 1/2 /* calcolo del partner e spedizione/ricezione con il processo partner associato */ if (taskid < numtasks/2) { partner = numtasks/2 + taskid; MPI_Send(COMPLETA, partner, 1, MPI_COMM_WORLD); else if (taskid >= numtasks/2) { partner = taskid - numtasks/2; MPI_Recv(COMPLETA, &status); /* Stampa del risultato */ printf("il processo %d ha partner il processo %d\n",taskid,message); MPI_Finalize(); Bozza programma 2/2 MPI_Send(void *buffer, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm); MPI_Recv(void *buffer, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm, MPI_Status *status); Scrivere un programma in cui la prima metà di nproc processi comunica il proprio identificativo (rank) alla seconda metà secondo il seguente schema Compilazione e generazione eseguibile mpicc -c sendrecv.c mpicc -o sr.exe sendrecv.o Sottomissione mediante LSF bsub -o out3.txt -n 2 mpirun -srun./sr.exe Visualizzazione dell output vi out3.txt Primi Programmi con MPI 4
5 Esercizio 3: Modificare il programma sendrecv.c in modo che la prima metà di nproc processi si scambia il valore del proprio identificativo (rank) con la seconda metà secondo il seguente schema nproc = 8 Scrivere un programma che esegue la somma di n numeri secondo il seguente schema nproc = 4 P 0 P 1 P 2 P 3 s 0 s 1 s 2 s 3 P 0 P 4 sumtot=s 0 + s 1 P 1 P 5 P 2 P 6 sumtot=sumtot + s 2 P 3 P 7 sumtot=sumtot + s 3 Scrivere un programma che esegue la somma di n numeri Funzioni MPI da utilizzare: MPI_Init MPI_Comm_rank MPI_Comm_size MPI_Gather MPI_Send MPI_Recv MPI_Finalize Copiare la bozza di programma con il comando cp /home3/lauranto/ceinge/somma_istrat.c. (spazio, punto!!) Bozza programma 1/3 /* ) fase di input */ if (menum==0){ n=100; printf( numero addendi %d\n,n); vet=(float*)calloc(n,sizeof(float)); /* solo menum0 alloca memoria per vet */ for (i=0;i<n;i++) vet[i]=(float)i +1; MPI_Bcast(&n,1,MPI_INT,0,MPI_COMM_WORLD); Nloc=n/nproc; Vetloc=(float*)calloc(nloc, sizeof(float)); MPI_Scatter(vet,nloc,MPI_FLOAT,vetloc,nloc,MPI_FLOAT,0,MPI_COMM_WORLD); Primi Programmi con MPI 5
6 Bozza programma 2/3 /* ) fase di calcolo */ sum=0; for(i=0;i<nloc;i++) sum+=vetloc[i]; /* sum=sum+vetloc[i] */ /* ) fase di comunicazione */ if(menum!=0) { tag=menum; MPI_Send(&sum,1,MPI_FLOAT,0,tag,MPI_COMM_WORLD); else for(i=1;i<nproc;i++){ tag=i; MPI_Recv(&stemp,1,MPI_FLOAT,i,tag,MPI_COMM_WORLD,&info); sum+=stemp; /* ) fase di output */ if(menum==0) printf("la somma totale vale %f\n",sum); MPI_Finalize(); return 0; Bozza programma 3/3 Scrivere un programma che esegue la somma di n numeri Fine Compilazione e generazione eseguibile mpicc -c somma_istrat.c mpicc -o sum.exe somma_istrat.o Sottomissione mediante LSF bsub -o outsum.txt -n 2 mpirun -srun./sr.exe Visualizzazione dell output vi outsum.txt Utilizzare un numero di processori divisore di 100 Primi Programmi con MPI 6
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/
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
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
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
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)
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
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
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
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
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
DettagliModalità di utilizzo dei server di calcolo del C.E.D. di Frascati
Modalità di utilizzo dei server di calcolo del C.E.D. di Frascati 1 Macchine per lavori interattivi e batch Nome macch. Arc. Sist. Oper. N cpu RAM Freq. sp3-1 Power III AIX 5.1.3 16 16 GB 375 MHz sp3-2
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
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
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
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
DettagliLinux Cluster con Raspberry PI
Linux Cluster con Raspberry PI Creazione di un piccolo supercomputer per calcolo parallelo con tecnologia cluster Marco Cavallini KOAN - Bergamo 1 Agenda Introduzione FabLab Architetture Arduino vs. Raspberry
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
DettagliCLUSTER COKA. Macchine e Risorse
CLUSTER COKA Macchine e Risorse Il cluster per il progetto COKA si compone complessivamente delle seguenti 5 macchine: rd coka 01 : server con il MIC e le GPU K20; rd gpu 01 : server con GPU C1060; rd
DettagliLaboratorio di Calcolo Parallelo
Laboratorio di Calcolo Parallelo Lezione 1: Introduzione a C ed MPI Francesco Versaci & Alberto Bertoldo Università di Padova 5 maggio 2009 Francesco Versaci (Università di Padova) Laboratorio di Calcolo
DettagliUn introduzione a. Condor Project Computer Sciences Department University of Wisconsin-Madison condor-admin@cs.wisc.edu http://www.cs.wisc.
Un introduzione a Condor Project Computer Sciences Department University of Wisconsin-Madison condor-admin@cs.wisc.edu Incontriamo Frieda Frieda è uno scienzato, ed ha un grande problema. 2 Il problema
DettagliLaboratorio Centro Calcolo
INTRODUZIONE AI CLUSTER DI CALCOLO DEL DIPARTIMENTO DI MATEMATICA Centro di Calcolo Novembre 2015 A cura di L. Ciambella, A. Gabrielli, A. Seghini {ciambella, gabrielli, seghini}@mat.uniroma1.it Laboratorio
DettagliMai 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
DettagliMPI in dettaglio. Chi ha definito MPI. Salvatore Orlando. CALCOLO PARALLELO - S. Orlando. CALCOLO PARALLELO - S. Orlando
MPI in dettaglio Salvatore Orlando 1 Chi ha definito MPI 2 Il modello Message-Passing Model Ad un processo è tradizionalmente associato con program counter & address space. Processi possono però avere
DettagliUNIVERSITA 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
DettagliSomma 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
DettagliAlgoritmi 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
DettagliProgrammazione di base
Fondamenti di Informatica Primo Appello 01-17 8 febbraio 017 Rispondi alle domande negli appositi spazi. I punti assegnati per ogni domanda sono indicati nel riquadro a lato. L'esame contiene 10 domande,
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
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
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
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
Dettagliprova.c #include <stdio.h> char funzione(char); codice oggetto del main()
prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp
DettagliC: 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
DettagliIL 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
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
DettagliSystem call per la gestione di processi
System call per la gestione di processi Chiamate di sistema per creazione di processi: fork() sostituzione di codice e dati: exec...() terminazione: exit() sospensione in attesa della terminazione di figli:
Dettaglieseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore,
La programmazione di sistema Introduzione ai sistemi operativi multiprocesso Primitive per la gestione dei processi http://home.dei.polimi.it/silvano/acso.htm Il sistema ste operativo Il Sistema Operativo
DettagliImpianti di Elaborazione (allievi Gestionali)
Impianti di Elaborazione (allievi Gestionali) Giuseppe Pozzi Impianti di Elaborazione per Allievi Gestionali - Como Facoltà di Ingegneria dell Informazione Politecnico di Milano giuseppe.pozzi@polimi.it
DettagliGrid Tutorial Day Palermo, 13 Aprile 2011 Job Description Language Gestione job utente
Grid Tutorial Day Palermo, 13 Aprile 2011 Marco Cipolla Job Description Language Gestione job utente Jobs e Applicazioni Utente I job permettono l esecuzione di programmi utente sulla GRID Per sottomettere
DettagliSviluppo di software parallelo con il sistema MPI
Sviluppo di software parallelo con il sistema MPI Sommario Cluster Beowulf Message Passing Installazione di MPI Routine di base di MPI Calcolo della somma di n numeri Gruppi di processi e topologie virtuali
DettagliArgomenti. Architettura fisica di U-Lite Architettura software di U-Lite Comandi gestione job: NFS contro AFS Licenze software
U-Lite Argomenti Architettura fisica di U-Lite Architettura software di U-Lite Comandi gestione job: Sottomissione Controllo Cancellazione NFS contro AFS Licenze software U-Lite Architettura fisica U-Lite
DettagliAXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema
AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel
Dettagli# include<stdio.h> int main() { // Dichiarazioni int n; int i;
/* CALCOLIAMO I DIVISORI DI UN NUMERO. INSERIAMO UN CONTROLLO CHE IL NUMERO SIA EFFETTIVAMENTE POSITIVO UTILIZZIAMO IL DO...WHILE PER SEMPLIFICARE IL CODICE # include int main() // Dichiarazioni
DettagliSistemi Operativi Teledidattico
Sistemi Operativi Teledidattico Anno 2002 3a esercitazione 5/10/2002 Paolo Torroni processi fork (creazione di un figlio) exec (sostituzione di codice del programma in esecuzione) wait (attesa della terminazione
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
DettagliC O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O
Il linguaggio C C O P Y R I G H T ( C ) 2 0 0 8 W W W. F O N D A M E N T I. I N F O P E R M I S S I O N I S G R A N T E D T O C O P Y, D I S T R I B U T E A N D / O R M O D I F Y T H I S D O C U M E N
DettagliFondamenti 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
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
DettagliConcetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi
Concetto di Processo Scheduling dei Processi Operazioni sui Processi Processi cooperanti Comunicazione tra processi 3.3 Silberschatz, Galvin and Gagne 2005 1 Un SO esegue diversi tipi di programmi Sistema
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,
DettagliIn generale può essere utile che i due processi eseguano del codice diverso
System call FORK P fork() ha l aspetto di una funzione C, in realtà è una system call, una chiamata al sistema operativo fork() P P Il processo P' è una copia di P esegue lo stesso codice e possiede una
DettagliLaboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 16 ottobre 2007 1 Rappresentazioni di caratteri in C In C un carattere è una costante intera il cui valore è dato dal codice ASCII
DettagliBreve Riepilogo del Linguaggio C
Breve Riepilogo del Linguaggio C Note Gli script shell cominciano sempre con la seguente riga: #!/bin/sh NON esistono spazi all'interno della stringa #!/bin/sh NON ci sono altri caratteri (oltre il newline)
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
DettagliAlgoritmo per il calcolo della somma di N numeri In ambiente di calcolo parallelo su architettura MIMD a memoria distribuita
Algoritmo per il calcolo della somma di N numeri In ambiente di calcolo parallelo su architettura MIMD a memoria distribuita Carlo Maurizio Santoro 0108-000528 Attività di laboratorio Università Parthenope
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. 2014-15 Pietro Frasca Lezione 20 Martedì 16-12-2014 1 System call per la gestione dei processi Creazione
DettagliIntroduzione al calcolo scientifico ad alte prestazioni
Corso di formazione per il progetto TEDAT ENEA C. R. Brindisi, 24-25 giugno 2013 Introduzione al calcolo scientifico ad alte prestazioni Agostino Funel agostino.funel@enea.it ENEA Centro Ricerche Portici
DettagliAlcuni esercizi. 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli
Alcuni esercizi 1. Valutazione in cortocircuito 2. If e if innestati 3. Switch 4. Cicli Stampa di voti Esempio 1 (switch) Realizzare un programma che legge da input un voto (carattere tra A ed E ) e ne
DettagliLINUX in ENEA: utilizzo di openmosix?
LINUX in ENEA: utilizzo di openmosix? G. Bracco bracco@frascati.enea.it, http://fusfis.frascati.enea.it/~bracco Le risorse Linux in ENEA INFO: Cluster FERONIA (Alpha) Cluster BW (x86) Nuovo cluster x86
DettagliIntroduzione a GCC: GNU Compiler Collection
Introduzione a GCC: GNU Compiler Collection Caratteristiche di GCC Compilatore multipiattaforma modulare Disponibile per tutti i principali sistemi operativi Può produrre programmi per la maggior parte
DettagliProgrammazione I (Classe 1)
Programmazione I (Classe 1) Appello 12 CFU 8 Settembre 2017 Docenti: Fuccella - Zizza Cognome: Nome: Matricola: Ritirato Riservato alla commissione d esame 1 2 3 4 5 6 7 8 TOT (/40) Da codice etico Unisa
DettagliESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)
ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include
DettagliIntroduzione a. Funzioni di Ingresso e Uscita. Compilazione
Introduzione a Funzioni di Ingresso e Uscita Compilazione 2 Come si termina...... un programma in esecuzione (processo)? Ctrl + C In UNIX ci si basa sul concetto di terminale Anche da GUI, quello che si
DettagliLa gestione della memoria dinamica Heap
Laboratorio di Algoritmi e Strutture Dati La gestione della memoria dinamica Heap Prof. Luigi Lamberti 2005 Cenni sui Processi Un Programma è un insieme di Istruzioni memorizzato in un file con le costanti
DettagliControllo dei Processi 1
Controllo dei Processi 1 I processi Nei sistemi Unix/Linux ogni processo ne può generare altri. Il processo che li genera è detto processo padre (parent process), mentre i processi generati sono detti
DettagliFondamenti di Informatica T. Il Software
Il Software TECNOLOGIA DIGITALE CPU, memoria centrale e dispositivi sono realizzati con tecnologia elettronica digitale. Dati ed operazioni vengono codificati a partire da due valori distinti di grandezze
DettagliRealizzazione di un cluster Condor su macchine virtuali
Realizzazione di un cluster Condor su macchine virtuali Davide Petturiti Sistemi Operativi Avanzati Prof. Osvaldo Gervasi A.A. 2007/2008 Corso di Laurea Specialistica in Informatica Facoltà di Scienze
DettagliLezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
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
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
DettagliI Processi nel Sistema Operativo Unix. Gerarchie di processi Unix. Stati di un processo Unix. Stati di un processo Unix.
I Processi nel Sistema Operativo Unix Processi Unix Unix è un sistema operativo multiprogrammato a divisione di tempo: l unità di computazione è il processo. Caratteristiche del processo Unix: processo
DettagliSystem Calls per la Gestione dei Processi
System Calls per la Gestione dei Processi Domenico Cotroneo Dipartimento di Informatica e Sistemistica Università degli Studi di Napoli Federico II Roadmap Process Context Identificativi getpid() getppid()
DettagliI puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
DettagliSmallShell Piccolo processore comandi
SmallShell Piccolo processore comandi /* file smallsh.h */ #include #include #define EOL 1 #define ARG 2 #define AMPERSAND 3 #define SEMICOLON 4 #define RIDIRIN 5 #define RIDIROUT 6
DettagliISTRUZIONI DI ITERAZIONE
CHAPTER 6 CICLI 1 ISTRUZIONI DI ITERAZIONE Le istruzioni di iterazione sono usate per realizzare I cicli. Un ciclo è una istruzione il cui compito è di eseguire ripetutamente qualche altra istruzione (il
DettagliBootstrap. Bootstrap. Shutdown. Struttura di un SO. Elementi principali di un SO:
Bootstrap Bootstrap All accensione di un calcolatore vengono attivati programmi di diagnostica scritti nella ROM (Read Only Memory) che verificano l assenza di guasti Poi viene attivato il programma di
DettagliSistemi di calcolo distribuiti e paralleli per l utilizzo di codici Monte Carlo
Sistemi di calcolo distribuiti e paralleli per l utilizzo di codici Monte Carlo Corso per l utilizzazione del codice Monte Carlo in campo Medico Giorgio Amati, g.amati@caspur.it Collaborazione ISS-CASPUR
DettagliMATRICOLA S B/1 BIN: MS: CA2: BIN: = 1x x x x x x x x2 0 = 182
NOME COGNOME MATRICOLA S B/1 AAA-BARC BARD-BOUH BOUI-CART CARU-CONS CARU-CONS CONT-DEMAR DEMAS-FERRD FERRE-GIAQ GIAR-LAEZ LAFA-MANC MAND-MIQZ MIRA-PAHZ PAIA-PODD PODE-ROSSE ROSSF-SIQZ SIRA-TUCB TUCC-ZZZ
DettagliLaboratorio di linguaggi
lezioni: lunedi 9-11, aula A al corso Laboratorio di linguaggi laboratorio in tre turni: martedi 11-13 () giovedi 9-11 () venerdi 11-13 (Andrea Grosso) laboratorio: iscriversi all esame Corso A LABORATORIO
DettagliELEMENTI 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
DettagliL'Allocazione Dinamica della Memoria nel linguaggio C
L'Allocazione Dinamica della Memoria nel linguaggio C Prof. Rio Chierego riochierego@libero.it http://www.riochierego.it/informatica.htm Sommario Questo documento tratta l'allocazione dinamica della memoria
DettagliProcessi e thread. Dipartimento di Informatica Università di Verona, Italy. Sommario
Processi e thread Dipartimento di Informatica Università di Verona, Italy Sommario Concetto di processo Stati di un processo Operazioni e relazioni tra processi Concetto di thread Gestione dei processi
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
DettagliDipartimento di Scienze Chimiche Laboratorio Interdipartimentale di Chimica Computazionale
A tutti gli utenti: il nuovo sistema di gestione dei job tramite code, preparato dall Ing. Sella che ringrazio per il suo lavoro, è entrato in funzione. Si tratta di una modalità di gestione del sistema
Dettaglifile fisico file logico
I files Un file è una struttura di dati residente su una memoria di massa (file fisico) Un programma vede un file come una sequenza di bytes (file logico) Generalizzando, un file può comprendere qualsiasi
DettagliERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }
ERRATA CORRIGE Pulizia del buffer di input: come fare? (1) Dopo aver richiamato getchar() per prelevare un carattere dal buffer di input, inseriamo una seconda chiamata a getchar(), senza assegnare il
DettagliIBM -LENOVO System x3100
OFFERTA PROMO 2015 WWW.MISTERCOMPUTER.IT Elaborazione del 20/03/2015 Ultimo aggiornamento 25/03/2015 17:44 MISTER COMPUTER S.A.S. Tel 055 3427481 Fax 055 3424000 IBM LENOVO System x3100 XEON QUAD CORE
DettagliInformatica Applicata Laboratorio 1. Ing. Antonella Dimasi
Laboratorio 1 Ing. Antonella Dimasi Ambiente di sviluppo L ambiente di sviluppo utilizzato in questo corso è DEV- C++. Dev-C++ è un ambiente di sviluppo integrato (IDE) per la programmazione C/C++. Utilizza
DettagliL ambiente di un processo (I)
L ambiente di un processo (I) L ambiente di un processo è un insieme di stringhe (terminate da \0). Un ambiente è rappresentato da un vettore di puntatori a caratteri terminato da un puntatore nullo. Ogni
DettagliProblem solving avanzato
Problem solving avanzato Formulazione del problema Struttura dati e algoritmo Il programma 2 26 Politecnico di Torino 1 Dati in input (1/4) Sono dati due file di testo, contenenti le informazioni sulle
DettagliLibreria MPI. (Message Passing Interface) Standard Message Passing Interface (MPI)
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,
DettagliTutorial. Cluster Linux 15-09-2003 Ultimo aggiornamento Ottobre 2004
Documento tratto dal CD multimediale disponibile presso la biblioteca del Dipartimento di Matematica Tutorial Cluster Linux 15-09-2003 Ultimo aggiornamento Ottobre 2004 Istruzioni base CLUSTER LINUX ULISSE
DettagliLaboratorio di Sistemi Operativi
Laboratorio di Sistemi Operativi LAB2 Installazione Linux e relativi ambienti di lavoro 2002/2003 Pagani - Trentini Slide 1 Agenda Panoramica e storia di Linux Installazione Linux Installazione strumenti
DettagliEsercitazione 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
DettagliArchitettura dei calcolatori e sistemi operativi. M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente
Architettura dei calcolatori e sistemi operativi M2 Organizzazione della memoria virtuale Struttura dello spazio virtuale kernel e utente 18.01.2015 Architettura Intel x64 Lo spazio di indirizzamento virtuale
DettagliLinguaggio C - sezione dichiarativa: costanti e variabili
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente
DettagliLaboratorio Turing @ Centro Calcolo
INTRODUZIONE AI CLUSTER DI CALCOLO DEL DIPARTIMENTO DI MATEMATICA Centro di Calcolo Ottobre 2014 A cura di L. Ciambella, A. Gabrielli, A. Seghini {ciambella, gabrielli, seghini}@mat.uniroma1.it Laboratorio
DettagliCorso di programmazione Arduino DI MALVEZZI DAVIDE
Corso di programmazione Arduino DI MALVEZZI DAVIDE Argomenti Pin digitali e pin analogici Gestione di timer e bottoni Utilizzo della porta seriale Oggetto String Controllo di schermi LCD Utilizzo dell
DettagliLe 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
DettagliIntroduzione al calcolo parallelo per il metodo degli elementi finiti
Introduzione al calcolo parallelo per il metodo degli elementi finiti Simone Parisotto Università di Verona Dipartimento di Informatica 24 Aprile 2013 Simone Parisotto 24 Aprile 2013 1 / 28 Introduzione
Dettagli