Primi Programmi con MPI 1

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Primi Programmi con MPI 1"

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 Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 1 Message Passing Interface MPI www.mcs.anl.gov./research/projects/mpi/

Dettagli

Alcuni strumenti per lo sviluppo di software su architetture MIMD

Alcuni strumenti per lo sviluppo di software su architetture MIMD Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 MPI : Message Passing Interface MPI

Dettagli

MPI è una libreria che comprende:

MPI è una libreria che comprende: 1 Le funzioni di MPI MPI è una libreria che comprende: Funzioni per definire l ambiente Funzioni per comunicazioni uno a uno Funzioni percomunicazioni collettive Funzioni peroperazioni collettive 2 1 3

Dettagli

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

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

Dettagli

Introduzione a MPI Algoritmi e Calcolo Parallelo. Daniele Loiacono

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

Dettagli

Cenni 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 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

Dettagli

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

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

Dettagli

Programmazione di base

Programmazione 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

Dettagli

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

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

Dettagli

Prodotto Matrice - Vettore in MPI - III Strategia

Prodotto 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

Dettagli

Modalità 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 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

Dettagli

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

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

Dettagli

Prodotto Matrice - Vettore in MPI II Strategia

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

Dettagli

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

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

Dettagli

Non blocking. Contro. La programmazione di uno scambio messaggi con funzioni di comunicazione non blocking e' (leggermente) piu' complicata

Non 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

Dettagli

Linux Cluster con Raspberry PI

Linux 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

Dettagli

Comunicazione. 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 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

Dettagli

CLUSTER COKA. Macchine e Risorse

CLUSTER 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

Dettagli

Laboratorio di Calcolo Parallelo

Laboratorio 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

Dettagli

Un 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 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

Dettagli

Laboratorio Centro Calcolo

Laboratorio 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

Dettagli

Mai fidarsi. int main() { int a,i=2; a = 1*abs(i 1); printf ( "%d\n", a); } $ gcc W Wall o first main.c $./first 1

Mai fidarsi. int main() { int a,i=2; a = 1*abs(i 1); printf ( %d\n, a); } $ gcc W Wall o first main.c $./first 1 Mai fidarsi int main() { int a,i=2; a = 1*abs(i 1); printf ( "%d\n", a); } $ gcc W Wall o first main.c $./first 1 $ gcc fno builtin o second main.c $./second 1 compilatore dipendente Bcast Vediamo la soluzione

Dettagli

MPI in dettaglio. Chi ha definito MPI. Salvatore Orlando. CALCOLO PARALLELO - S. Orlando. CALCOLO PARALLELO - S. Orlando

MPI 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

Dettagli

UNIVERSITA DEGLI STUDI DI NAPOLI FEDERICO II

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

Dettagli

Somma di un array di N numeri in MPI

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

Dettagli

Algoritmi paralleli per la moltiplicazione di matrici

Algoritmi paralleli per la moltiplicazione di matrici UNIVERSITA CA FOSCARI VENEZIA Facoltà di Scienze Matematiche, Fisiche e Naturali Corso di Laurea in Informatica Progetto di Calcolo Parallelo Prof. S. Orlando Algoritmi paralleli per la moltiplicazione

Dettagli

Programmazione di base

Programmazione 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,

Dettagli

Principles of Concurrent Programming

Principles 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

Dettagli

Primi passi col linguaggio C

Primi 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

Dettagli

Esercizi MPI. Algoritmi e Calcolo Parallelo. Daniele Loiacono

Esercizi 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

Dettagli

Esercizi Calcolo Parallelo Algoritmi, Strutture Dati e Calcolo Parallelo. Daniele Loiacono

Esercizi 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

Dettagli

prova.c #include <stdio.h> char funzione(char); codice oggetto del main()

prova.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

Dettagli

C: panoramica. Violetta Lonati

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

Dettagli

IL PRIMO PROGRAMMA IN C

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

Dettagli

Capitolo 5 - Funzioni

Capitolo 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

Dettagli

System call per la gestione di processi

System 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:

Dettagli

eseguire comandi dati dall'utente, utilizzando una macchina reale, di livello inferiore,

eseguire 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

Dettagli

Impianti di Elaborazione (allievi Gestionali)

Impianti 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

Dettagli

Grid Tutorial Day Palermo, 13 Aprile 2011 Job Description Language Gestione job utente

Grid 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

Dettagli

Sviluppo di software parallelo con il sistema MPI

Sviluppo 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

Dettagli

Argomenti. Architettura fisica di U-Lite Architettura software di U-Lite Comandi gestione job: NFS contro AFS Licenze software

Argomenti. 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

Dettagli

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema

AXO. Operativo. Architetture dei Calcolatori e Sistema. programmazione di sistema AXO Architetture dei Calcolatori e Sistema Operativo programmazione di sistema Il sistema operativo Il Sistema Operativo è un insieme di programmi (moduli software) che svolgono funzioni di servizio nel

Dettagli

# include<stdio.h> int main() { // Dichiarazioni int n; int i;

# 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

Dettagli

Sistemi Operativi Teledidattico

Sistemi 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

Dettagli

Progetto II: Il linguaggio C e le chiamate di sistema sui processi

Progetto 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

Dettagli

C 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

C 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

Dettagli

Fondamenti di Programmazione

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

Dettagli

Perché il linguaggio C?

Perché 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

Dettagli

Concetto 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 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

Dettagli

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

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

Dettagli

In generale può essere utile che i due processi eseguano del codice diverso

In 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

Dettagli

Laboratorio di Algoritmi e Strutture Dati

Laboratorio 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

Dettagli

Breve Riepilogo del Linguaggio C

Breve 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)

Dettagli

CORSO DI SISTEMI OPERATIVI A - ESERCITAZIONE 2

CORSO 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

Dettagli

Algoritmo 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 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

Dettagli

Università 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 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

Dettagli

Introduzione al calcolo scientifico ad alte prestazioni

Introduzione 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

Dettagli

Alcuni 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 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

Dettagli

LINUX in ENEA: utilizzo di openmosix?

LINUX 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

Dettagli

Introduzione a GCC: GNU Compiler Collection

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

Dettagli

Programmazione I (Classe 1)

Programmazione 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

Dettagli

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

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

Dettagli

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Introduzione 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

Dettagli

La gestione della memoria dinamica Heap

La 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

Dettagli

Controllo dei Processi 1

Controllo 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

Dettagli

Fondamenti di Informatica T. Il Software

Fondamenti 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

Dettagli

Realizzazione di un cluster Condor su macchine virtuali

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

Dettagli

Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit

Lezione 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

Dettagli

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Funzioni 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

Dettagli

Calcolo parallelo con MPI (2ª parte)

Calcolo 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

Dettagli

I 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. 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

Dettagli

System Calls per la Gestione dei Processi

System 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()

Dettagli

I 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 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

Dettagli

SmallShell Piccolo processore comandi

SmallShell 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

Dettagli

ISTRUZIONI DI ITERAZIONE

ISTRUZIONI 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

Dettagli

Bootstrap. Bootstrap. Shutdown. Struttura di un SO. Elementi principali di un SO:

Bootstrap. 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

Dettagli

Sistemi 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 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

Dettagli

MATRICOLA S B/1 BIN: MS: CA2: BIN: = 1x x x x x x x x2 0 = 182

MATRICOLA 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

Dettagli

Laboratorio di linguaggi

Laboratorio 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

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

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

Dettagli

L'Allocazione Dinamica della Memoria nel linguaggio C

L'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

Dettagli

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

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

Dettagli

Shell BASH. Variabili Redirezione

Shell 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

Dettagli

Dipartimento di Scienze Chimiche Laboratorio Interdipartimentale di Chimica Computazionale

Dipartimento 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

Dettagli

file fisico file logico

file 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

Dettagli

ERRATA CORRIGE. void SvuotaBuffer(void); void SvuotaBuffer(void) { if(getchar()!=10) {svuotabuffer();} }

ERRATA 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

Dettagli

IBM -LENOVO System x3100

IBM -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

Dettagli

Informatica Applicata Laboratorio 1. Ing. Antonella Dimasi

Informatica 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

Dettagli

L ambiente di un processo (I)

L 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

Dettagli

Problem solving avanzato

Problem 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

Dettagli

Libreria MPI. (Message Passing Interface) Standard Message Passing Interface (MPI)

Libreria 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,

Dettagli

Tutorial. Cluster Linux 15-09-2003 Ultimo aggiornamento Ottobre 2004

Tutorial. 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

Dettagli

Laboratorio di Sistemi Operativi

Laboratorio 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

Dettagli

Esercitazione 6. Array

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

Dettagli

Architettura 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 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

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio 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

Dettagli

Laboratorio Turing @ Centro Calcolo

Laboratorio 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

Dettagli

Corso di programmazione Arduino DI MALVEZZI DAVIDE

Corso 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

Dettagli

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

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

Dettagli

Introduzione al calcolo parallelo per il metodo degli elementi finiti

Introduzione 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