Libreria MPI. (Message Passing Interface)

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

Alcuni strumenti per lo sviluppo di software su architetture MIMD

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

Comunicazione. La comunicazione point to point e' la funzionalita' di comunicazione fondamentale disponibile in MPI

MPI è una libreria che comprende:

Introduzione a MPI Algoritmi e Calcolo Parallelo. Daniele Loiacono

Alcuni strumenti per lo sviluppo di software su architetture MIMD

Programmazione di base

Calcolo parallelo con MPI (2ª parte)

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

Modelli di programmazione parallela

Il Modello a scambio di messaggi

Modello a scambio di messaggi

Primi Programmi con MPI 1

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

Funzioni in C. Funzioni. Strategie di programmazione. Funzioni in C. Come riusare il codice? (2/3) Come riusare il codice? (1/3)

Primi passi col linguaggio C

Modello a scambio di messaggi

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Strategie di programmazione

Il Modello a scambio di messaggi

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Il linguaggio C. Puntatori e dintorni

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

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

Funzioni e. Alessandra Giordani Mercoledì 16 maggio 2012

Strutture dati e loro organizzazione. Gabriella Trucco

1 PANORAMICA SUL LINGUAGGIO C

Lezione 6 Introduzione al C++ Mauro Piccolo

Introduzione al Linguaggio C

Chiamata di procedura remota

Principles of Concurrent Programming

5. I device driver. Device driver - gestori delle periferiche. Struttura interna del sistema operativo Linux. Tipi di periferiche. Tipi di periferiche

Introduzione alla Programmazione Concorrente

Funzioni, Stack e Visibilità delle Variabili in C

Introduzione al Multithreading

Principles of Concurrent Programming

C espressioni condizionali

Comunicazione tra Computer. Protocolli. Astrazione di Sottosistema di Comunicazione. Modello di un Sottosistema di Comunicazione

Threads: 1. Concetti di base 2. Threads in sistemi operativi attuali (NT/UNIX)

a) Uno stesso problema in minor tempo

Processi parte IV. Processi parte IV

Rappresentazione degli algoritmi

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Università di Roma Tor Vergata Corso di Laurea triennale in Informatica Sistemi operativi e reti A.A Pietro Frasca.

Capitolo 10 - Strutture

Livelli del sottosistema di I/O

Corso di Fondamenti di Informatica Classi di istruzioni 2

C: panoramica. Violetta Lonati

Sistemi Operativi Teledidattico

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Struttura interna del sistema operativo Linux

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

il tipo di parallelismo dipende dal grado di cooperazione

Input/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Strutture Dati Dinamiche

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

ACSO Programmazione di Sistema e Concorrente

Input/Output. Livelli del sottosistema di I/O

Una interfaccia GA ad alcune routines di ScaLAPACK

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Sistemi Operativi SISTEMI DI INPUT/OUTPUT. D. Talia - UNICAL. Sistemi Operativi 10.1

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

Sistemi Operativi. Sistemi I/O SISTEMI DI INPUT/OUTPUT. Hardware di I/O. Interfaccia di I/O per le applicazioni. Sottosistema per l I/O del kernel

Comunicazione tra Processi

Comunicazione tra Processi

Applicazioni distribuite e sistemi ad oggetti distribuiti. RPC RMI - Web Services 1

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

Programmazione (imperativa)

Analisi Lessicale. File

Lezione 8 Struct e qsort

Funzioni. (Passaggio dei parametri per riferimento) Passaggio dei parametri

Indirizzi e tipi puntatore a

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Laboratorio di programmazione

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

GESTIONE DELLE PERIFERICHE D INGRESSO/USCITA ARGOMENTI

Linguaggio C e sistema operativo

Programmazione con Java

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Il presente plico contiene 4 esercizi e deve essere debitamente compilato con cognome e nome, numero di matricola.

Indice. Prefazione. 3 Oggetti e Java 53

Scuola di Calcolo Scientifico con MATLAB (SCSM) 2017 Palermo 31 Luglio - 4 Agosto 2017

Linguaggi, Traduttori e le Basi della Programmazione

LIBRERIE STANDARD in C. LIBRERIE STANDARD in C

Complementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Preprocessore, linker e libreria standard

INTRODUZIONE. ALLA PROGRAMMAZIONEColonna 1. in linguaggio C

Prodotto Matrice - Vettore in MPI - III Strategia

Sistemi Operativi. Lez. 13: primitive per la concorrenza monitor e messaggi

Componenti di un sistema operativo

Reti (già Reti di Calcolatori )

MODELLO AD AMBIENTE GLOBALE

Tempo di vita e scope delle variabili

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

Transcript:

Libreria MPI (Message Passing Interface)

Standard Message Passing Interface (MPI) Il primo standard de jure per i linguaggi paralleli a scambio di messaggi (definisce le specifiche sintattiche e semantiche, e non l implementazione) Messo a punto in una serie di riunioni tenutesi tra novembre 1992 e gennaio 1994. ommissione MPI ostituita da membri provenienti da 40 istituti diversi (Università, Istituti di cerca, Industrie, Enti governativi) SOPI - Rendere portabile il software parallelo - Fornire agli sviluppatori di software un unico standard ben definito per lo codifica di software parallelo - Fornire ai costruttori di architetture un unico insieme di primitive da implementare, potenzialmente nel modo più efficiente desiderato Michele olajanni Libreria MPI 2/36

Standard Message Passing Interface (MPI) Non si è voluto creare un sovra-insieme di tutte le primitive esistenti nei diversi ambienti di programmazione già implementati, anche se Sono stati creati dei comitati per ciascuna categoria di primitive in cui le scelte venivano effettuate a maggioranza lcune peculiarità Possibilità di definire Gruppi di processi Possibilità di effettuare comunicazioni tra Gruppi di processi Possibilità di definire un insieme di contesti per le comunicazioni Elevata flessibilità nella selettività della ricezione di un messaggio Vasto insieme di routine per effettuare comunicazioni ed operazioni globali (scatter, gather, reduce, scan) Supporti per la realizzazione di librerie modulari Michele olajanni Libreria MPI 3/36

La libreria MPI è grande o piccola? MPI è grande - 125 funzioni! - E il PL/1 o l da dello scambio di messaggi? No: 1) Il numero elevato di funzioni deriva dalla combinazione di un numero ridotto di concetti ortogonali 2) Molte delle funzionalità possono essere ignorate fino a che non servono esplicitamente Michele olajanni Libreria MPI 4/36

La libreria MPI è grande o piccola? MPI è piccola 6 funzioni fondamentali possono essere utilizzate per scrivere molti programmi paralleli: MPI_INT Inizializza l ambiente MPI MPI_OMM_SIZE etermina quanti processi vi sono MPI_OMM_RNK etermina il numero (rank) di processo MPI_SEN Invia un messaggio MPI_REV Ricevi un messaggio MPI_FINLIZE Termina l ambiente MPI MPI è della dimensione che serve Oltre alle 6 funzioni,le altre funzioni possono aggiungere: Flessibilità (tipi di dati) Efficienza (comunicazioni non bloccanti) Modularità (gruppi, comunicatori) onvenienza (operazioni/comunicazioni collettive, topologie virtuali) Michele olajanni Libreria MPI 5/36

Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 6/36

Struttura programma MPI #include <mpi.h> main (int argc, char**argv) { MPI_init (&argc, &argv); /* orpo del programma */ MPI_finalize(); exit (0); } Michele olajanni Libreria MPI 7/36

MPI consente il modello SPM ESEMPIO Nodo 0 Nodo 1 Nodo 2 Nodo 3 ( ) ( ) ( ) ( ) ( ) Programma SPM.. begin < esegui ( )>; if (nodo==0) <esegui ( )>; else <esegui ( )>; if (nodo==0) <esegui ( )>; end HOST ( ) I 2 costrutti fondamentali del modello SPM: identificativo del processo costrutto condizionale Michele olajanni Libreria MPI 8/36

I costrutti MPI di base per la programmazione ommunicator (OMM) 1. Gruppo di processi che può comunicare 2. I comunicatori non sono partizioni dell insieme dei processi (pertanto un processo può appartenere a più comunicatori) 3. omunicatore predefinito: MPI_OMM_WORL (=tutti i processi) Rank 1. Identificatore numerico (da 0 a N) di un processo all interno di un comunicatore 2. Un processo può avere un diverso rank per ogni comunicatore cui appartiene 3. Uso: MPI_OMM_RNK(comm, &rank) Size 1. Numero di processi all interno di un comunicatore 2. Uso: MPI_OMM_SIZE(comm, &size) Risultati delle rispettive funzioni Michele olajanni Libreria MPI 9/36

Esempio programma MPI di tipo SPM Stampare una volta il numero di processi attivi ed il numero di rank dei processi pari. ltrimenti stampare rank di processi dispari. #include <mpi.h> main (int argc, char **argv) { int numproc, myid; MPI_init (&argc, &argv) ; MPI_comm_size (MPI_OMM_WORL, &numproc) ; MPI_comm_rank (MPI_OMM_WORL, &myid) ; if (myid == 0) printf ( numero processi = %d \n, numproc); if (( myid%2) == 0 ) printf ( rank processo = %d\n, myid); else printf( rank processo dispari \n ); } MPI_Finalize ( ); exit (0 ); Michele olajanni Libreria MPI 10/36

Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 11/36

Informazione del messaggio MESSGGIO = TI TRSMESSI + INFORMZIONI PER L TRSMISSIONE SEN Processo mittente Processi/o destinatari/o Locazione/i di memoria dei dati da trasmettere Tipo di dato da trasmettere Quantità di dati da trasmettere REEIVE Locazione di memoria dei dati da ricevere Quantità di dati che possono essere ricevuti SEN/REEIVE Identificatore (tag) del messaggio Modalità di comunicazione Michele olajanni Libreria MPI 12/36

omunicazioni MPI Librerie precedenti SEN (tag, buffer, lenght, dest) Novità MPI uffer del messaggio descritto indipendentemente dalla rappresentazione [Eterogeneità] Superamento del (uffer, lenght) Separazione delle famiglie di messaggi [ontestualizzazione] superamento del tag semplice Utili per applicazioni tipo: programmi complessi (reali), librerie, ecc. Separazione dei processi [Raggruppamento] Superamento del dest semplice Utili per applicazioni: librerie, topologie virtuali, ecc. Michele olajanni Libreria MPI 13/36

SEN in MPI MPI_Send (buf, count, datatype, dest, tag, comm) uf = buffer (nome della variabile o del vettore) ount = numero elementi di tipo datatype atatype = tipo di dato del linguaggio (,300,MPI_REL) = vettore di 300 numeri reali, [indipendentemente dalla lunghezza o dal formato della rappresentazione floating point] est= numero del processo destinatario, relativo al gruppo/contesto identificato da comm Tag= identificativo del messaggio omm= identifica un gruppo di processi e un contesto di comunicazione (Le nozioni di gruppo e contesto sono combinati in un unico oggetto chiamato OMUNITORE, che risulta essere un argomento della maggior parte di comunicazioni point-to-point e collettive) Michele olajanni Libreria MPI 14/36

atatype fondamentali di MPI (linguaggio ) MPI atatype MPI_HR MPI_SHORT MPI_INT MPI_LONG MPI_UNSIGNE_HR MPI_UNSIGNE_SHORT MPI_UNSIGNE MPI_UNSIGNE_LONG MPI_FLOT MPI_ OULE MPI_LONG_OULE MPI_YTE MPI_PKE datatype Signed char Signed short int Signed int Signed long int unsigned char unsigned short int unsigned int unsigned long int Float ouble Long double Necessari per il calcolo parallelo su piattaforme eterogenee Michele olajanni Libreria MPI 15/36

Modalità di comunicazione Ottica globale Sincrona (il mittente sa se il messaggio è arrivato o meno, es. fax) sincrona (il mittente non sa se il messaggio è arrivato o meno, es. lettera) Ottica locale (buffer di trasmissione) loccante Restituisce il controllo al processo che ha invocato la primitiva di comunicazione solo quando la primitiva di comunicazione è stata completata (=il buffer di uscita è stato svuotato). TTENZIONE: LONTE SINRON! Non loccante Restituisce il controllo al processo che ha invocato la primitiva di comunicazione quando la primitiva di comunicazione è stata eseguita (senza controllo sull effettivo completamento, da poter effettuare in seguito). Il processo invocante può nel frattempo passare ad eseguire altre operazioni. In MPI vi sono diverse combinazioni possibili tra SEN/REEIVE sincrone e asincrone, bloccanti e non bloccanti Michele olajanni Libreria MPI 16/36

ompletamento delle comunicazioni Una comunicazione è completata localmente su di un processo se il processo ha completato tutta la sua parte di operazioni relative alla comunicazione (fino allo svuotamento del buffer di uscita) al punto di vista dell esecuzione del programma, completare localmente una comunicazione significa che il processo può eseguire l istruzione successiva alla SEN o REEIVE (possibilmente un altra SEN) Una comunicazione è completata globalmente se tutti i processi coinvolti hanno completato tutte le rispettive operazioni relative alla comunicazione Una comunicazione è completata globalmente se e solo se è completata localmente su tutti i processi coinvolti Michele olajanni Libreria MPI 17/36

Tipica esecuzione di una comunicazione Processo SEN F1() Sistema operativo Processo REEIVE F2() Sistema operativo Hardware buffer di uscita buffer di ingresso Hardware Nodo MITTENTE Nodo ESTINTRIO Rete di Interconnessione Michele olajanni Libreria MPI 18/36

SEN Non-locking Ritorna immediatamente. Modalità di blocking Il buffer del messaggio non deve essere sovrascritto subito dopo il ritorno al processo chiamante, ma si deve controllare che la SEN sia completata localmente. SEN locking Ritorna quando la SEN è completata localmente. Il buffer del messaggio può essere sovrascritto subito dopo il ritorno al processo chiamante. REEIVE Non-locking Ritorna immediatamente. Il buffer del messaggio non deve essere letto subito dopo il ritorno al processo chiamante, ma si deve controllare che la REEIVE sia completata localmente. REEIVE locking Ritorna quando la REEIVE è completata localmente. Il buffer del messaggio può essere letto subito dopo il ritorno. Michele olajanni Libreria MPI 19/36

Modalità di comunicazione punto-punto La modalità di una comunicazione punto-punto specifica quanto un operazione di SEN può iniziare a trasmettere e quando può ritenersi completata. MPI prevede 4 modalità: Modalità SINRON La SEN può iniziare (a trasmettere) anche se la REEIVE corrispondente non è iniziata. Tuttavia, la SEN è completata solo quando si ha garanzia che il processo destinatario ha eseguito e completato la REEIVE. Modalità UFFERE Simile alla modalità sincrona per l inizio della SEN. Tuttavia, il completamento è sempre indipendente dall esecuzione della REEIVE. (Il messaggio può essere bufferizzato per garantire il funzionamento) Modalità STNR La SEN può iniziare (a trasmettere) anche se la REEIVE corrispondente non è iniziata. La semantica del completamento è sincrona o buffered. Modalità REY La SEN può iniziare (a trasmettere) assumendo che la corrispondente REEIVE è iniziata. Tuttavia, il completamento è sempre indipendente dall esecuzione della REEIVE. Michele olajanni Libreria MPI 20/36

Operazione di SEN 4 modalità di comunicazione (sincrona, standard, buffered, ready) 2 modalità di blocking (blocking, non blocking) 8 tipi di SEN Sintesi dei tipi di comunicazione mpi_[ -, i ] [ -, r, s, b ] send [ -, i ] = modalità di blocking locking significa che la SEN può ritenersi completata localmente (=buffer di uscita è libero) [ -, r, s, b ] = modalità di comunicazione Operazione di REEIVE 1 modalità di comunicazione 2 modalità di blocking 2 tipi di REEIVE mpi_[ -, i ] recv [ -, i ] = modalità di blocking Una qualsiasi operazione di receive può essere utilizzata per ricevere messaggi da una qualsiasi SEN Michele olajanni Libreria MPI 21/36

Modalità di omunicazione/locking Problema: osa fare quando il processo destinatario non è in grado di ricevere subito il messaggio? Modalità STNR [il messaggio vene copiato in un buffer interno; il processo mittente continua dopo il completamento della copia] MPI_SEN ( ) Modalità UFFERE [il messaggio viene copiato in un buffer esterno ed il processo mittente si blocca finché il buffer non può essere riutilizzato] MPI_SEN ( ) MPI_UFFER_TTH ( ) MPI_UFFER_ETH ( ) Modalità SINRON [il processo mittente si blocca finché il messaggio non è stato ricevuto dal processo destinatario] MPI_SSEN ( ) Modalità REY [si assume che il processo destinatario abbia già eseguito una REEIVE] MPI_RSEN ( ) a usare con attenzione, possibilmente in combinazione con MPI_WIT oppure MPI_TEST Michele olajanni Libreria MPI 22/36

Receive locking RE (buffer, lenght, tag) MPI_Recv (buf, count, datatype, source, tag, comm, status) buf= buffer dove inserire il messaggio ricevuto count= numero di elementi del buffer di tipo datatype datatype= tipo di dato del messaggio source= numero del processo mittente, relativo al gruppo/contesto comm (MPI_NY_SOURE ricevi il primo msg in arrivo da source) tag=identificativo del messaggio comm= identifica un gruppo di processi e un contesto di comunicazione (default: MPI_OMM_WORL un contesto costituito da tutti i processi) status= in è una variabile di tipo struct dove: status.mpi_soure contiene il rank del mittente status.mpi_tg contiene il tag del messaggio status.mpi_get_ount contiene il numero di item ricevuti Michele olajanni Libreria MPI 23/36

Sincronizzazione tra processi ue possibilità per la sincronizzazione dei processi: Uso di comunicazioni sincrone (es., MPI_ssend) Uso di primitive esplicite della libreria MPI (es., MPI_barrier) Michele olajanni Libreria MPI 24/36

ompletamenti multipli MPI_waitall Si blocca finché tutti i processi in una determinata lista non sono stati completati MPI_waitany Si blocca finché un processo di una determinata lista è stato completato MPI_waitsome Si blocca finché almeno un processo di una determinata lista è stato completato Michele olajanni Libreria MPI 25/36

Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 26/36

Tipi di comunicazione non point-to to-point in MPI One-to-Many (multicast) One-to-ll (broadcast) Many(ll)-to-One (gather) Many-to-Many ll-to-ll Michele olajanni Libreria MPI 27/36

omunicazioni ollettive in MPI P0 P1 roadcast P0 P1 P2 P2 P3 P3 P0 Scatter P0 P1 P1 P2 Gather P2 P3 P3 P0 P1 ll gather P0 P1 P2 P2 P3 P3 P0 P1 0 0 1 1 2 2 3 3 ll to ll P0 P1 0 1 0 1 0 1 0 1 P2 0 1 2 3 P2 2 2 2 2 P3 0 1 2 3 P3 3 3 3 3 Michele olajanni Libreria MPI 28/36

Michele olajanni Libreria MPI 29/36 MPI_REUE MPI_REUE RNK G H F E T S R Q P M N O L K J I root 0 1 2 3 4 MPI_REUE oeoiomoq

Michele olajanni Libreria MPI 30/36 MPI_LLREUE MPI_LLREUE G H F E T S R Q P M N O L K J I 0 1 2 3 4 MPI_LLREUE Nota: non c è ROOT nelle operazioni MPI_LLXXX oeoiomoq RNK

Elementi caratterizzanti di MPI Modello programmativo Funzioni per l individuazione dell identificativo del processo e del numero di processi omunicazioni punto-punto (one-to-one) omunicazioni collettive (one-to-many, many-to-one) Operazioni collettive (one-to-many, many-to-one) Michele olajanni Libreria MPI 31/36

Operazioni collettive arrier (sincronizzazione) ata Movement (comunicazioni collettive) roadcast Scatter Gather ollective omputations Reduce (computazioni collettive) NOT Minimum, Maximum Sum Logical OR, N, etc. User-defined differenza di altre librerie message-passing, in MPI le comunicazioni collettive non hanno bisogno di esplicitare la receive. Tutti i processi eseguono: MPI_ST (buf, count, datatype, source, comm) Es., MPI_ST (&n, 1, MPI_INT, 0, MPI_OMM_WORL) Michele olajanni Libreria MPI 32/36

Tipologie Virtuali Possibilità di concettualizzare l organizzazione fisica della rete di interconessione (topology) dei processi secondo un determinato pattern di comunicazione (application topology) iverse topologie possibili: Griglia logica Grafi regolari MPI_RT_RETE( ) Topologie definite dall utente Le topologie virtuali forniscono una metodologia ad alto livello per gestire gruppi di processi senza trattare con essi direttamente. Michele olajanni Libreria MPI 33/36

Topologie Virtuali: Esempio efinire una topologia virtuale mesh bi-dimensionale 4x3. 0 0,2 1 1,2 2 2,2 3 3,2 4 0,1 5 1,1 6 2,1 7 3,1 ndims=2; dims[1]=4; dims[2]=3; periods[1]=0; /*FLSE periods[2]=0; /*TRUE reorder=1; /*FLSE 8 0,0 9 1,0 10 2,0 FLSE=non ciclica*/ TRUE=ciclica*/ FLSE= dati già distribuiti*/ /*Il process rank non cambia*/ /*TRUE= dati non distribuiti*/ /*MPI può modificare il process rank per /*tener conto della topologia virtuale*/ omunicatore di partenza 11 3,0 Nuovo comunicatore MPI_RT_RETE(MPI_OMM_WORL. ndims, dims, periods, reorder, ommunicator2) Michele olajanni Libreria MPI 34/36

lcune home page su MPI: ltre informazioni su MPI http://www.mcs.anl.gov/projects/mpi ftp://unix.hensa.ac.uk/parallel/standards/mpi MPI Standard ocument: http://www.mcs.anl.gov/mpi/mpi-report/mpi-report.html MPI Frequently sked Questions: http://www.cs.msstate.edu/dist_computing/mpi-faq.html Implementazione EP di MPI: http://www.epcc.ed.ac.uk/t3dmpi/product MPI: The omplete Reference http://www.netlib.org/utk/papers/mpi-book/mpi-book.html Michele olajanni Libreria MPI 35/36

Oltre MPI-1 1 Generalizzare la nozione di processo - gestione dell attivazione/disattivazione dinamica di processi - processi lightweight (threads) Generalizzare la nozione di message-passing - remote signal (interrupt-driven receive) - active message (remote memory copying) Parallel I/O - operazioni di I/O asincrone - nuovi datatype - gestire la non uniformità nell accesso a dispositivi esterni MPI-2: Extensions to the Message Passing Interface, July 1997 Michele olajanni Libreria MPI 36/36