Libreria MPI. (Message Passing Interface)

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

Please download to get full document.

View again

of 36
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Information
Category:

Research

Publish on:

Views: 2 | Pages: 36

Extension: PDF | Download: 0

Share
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 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 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 P ll to ll P0 P P P P P 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 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 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 ftp://unix.hensa.ac.uk/parallel/standards/mpi MPI Standard ocument: MPI Frequently sked Questions: Implementazione EP di MPI: MPI: The omplete Reference Michele olajanni Libreria MPI 35/36 Oltre MPI-1 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
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks