Message Passing Interface: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Abbot (discussione | contributi)
m Riferimenti->Bibliografia come da Wikipedia:Bar/Discussioni/Note e riferimenti
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(41 versioni intermedie di 30 utenti non mostrate)
Riga 1:
{{S|applicazioni dell'informatica}}
Il '''Message Passing Interface''' ('''MPI''') è un [[protocollo di rete|protocollo]] di comunicazione per [[computer]]. È ''de facto'' lo standard per la comunicazione tra nodi appartenenti a un [[computer cluster|cluster di computer]] che eseguono un programma parallelo sviluppato per sistemi a [[memoria distribuita]]. MPI rispetto alle precedenti librerie utilizzate per il passaggio di parametri tra nodi, ha il vantaggio di essere molto portatile (MPI è stata implementata per moltissime architetture parallele) e veloce (MPI viene ottimizzato per ogni architettura).
 
'''Message Passing Interface''' '''(MPI'''<ref>{{Cita libro|autore=di William Gropp, Ewing Lusk, e Anthony Skjellum|titolo="Using MPI: Portable Parallel Programming with the Message-Passing Interface"|anno=1994|url=https://archive.org/details/usingmpiportable00grop}}</ref><ref>{{Cita libro|titolo="Parallel Scientific Computation: A Structured Approach using BSP and MPI" di Rob H. Bisseling}}</ref>) è un modello di programmazione e una libreria di standard per la [[comunicazione tra processi]] paralleli in calcolo ad alte prestazioni [[Computer cluster|('''HPC''']]) e applicazioni distribuite.
==Voci correlate==
*[[MPICH]]
*[[Beowulf (computer)]]
 
Lo standard, alla versione 3.1, definisce la sintassi delle chiamate MPI per i linguaggi [[C (linguaggio)|C]] e [[Fortran]]<ref name="standard3.1">{{cita pubblicazione|anno=2015|titolo=MPI: A Message-Passing Interface Standard|editore=MPI Forum|url=https://www.mpi-forum.org/docs/mpi-3.1/mpi31-report.pdf}}</ref>.È ampiamente utilizzato per scrivere programmi paralleli che possono eseguire compiti simultaneamente su cluster di computer o supercomputer. Ecco alcuni punti chiave relativi a MPI: Comunicazione tra processi: MPI è progettato per consentire la comunicazione efficiente tra processi paralleli. I processi possono essere eseguiti su diversi nodi di un cluster o su un singolo sistema multiprocessore. Standardizzazione: MPI è uno standard, il che significa che le implementazioni MPI sono disponibili per una vasta gamma di piattaforme e [[Linguaggio di programmazione|linguaggi di programmazione]], compresi C, [[C++]], [[Fortran]] e altri. Modello di programmazione: Gli sviluppatori utilizzano chiamate di funzione MPI<ref>{{Cita libro|titolo="Parallel Programming with MPI" di Peter S. Pacheco}}</ref> per inviare e ricevere dati tra i processi, sincronizzare l'esecuzione e coordinare il lavoro parallelo. Scalabilità: MPI è noto per la sua scalabilità, il che significa che può essere utilizzato con successo su sistemi con un numero variabile di processori, dalla cluster di poche macchine ai supercomputer più grandi. Parallelismo esplicito: MPI<ref>{{Cita libro|titolo="MPI: The Complete Reference" di Marc Snir, Steve Otto, Steven Huss-Lederman, David Walker, e Jack Dongarra}}</ref> richiede ai programmatori di specificare in modo esplicito le operazioni di comunicazione, il che offre un alto grado di controllo ma richiede una progettazione accurata dei programmi paralleli. Affidabilità: MPI offre funzionalità per gestire situazioni di errore e recuperare da guasti, il che è essenziale per applicazioni ad alte prestazioni. MPI è ampiamente utilizzato in settori come la simulazione scientifica, la modellazione del clima, la ricerca scientifica, la crittografia e molte altre aree in cui è necessario elaborare grandi quantità di dati o risolvere complessi problemi matematici. Le implementazioni MPI sono disponibili in diverse librerie e ambienti di sviluppo e forniscono un modo potente per sfruttare l'elaborazione parallela e distribuita.
==Collegamenti esterni==
{{dmoz|Computers/Parallel_Computing/Programming/Libraries/MPI/|Categoria MPI}}
* {{en}} [http://www.mpi-forum.org/docs/ Specifiche MPI]
* {{en}} [http://www.open-mpi.org/ Sito Open MPI]
 
==Bibliografia Storia ==
Negli anni '80, con l'aumento della potenza di calcolo dei supercomputer e dei cluster di computer, è emersa la necessità di sviluppare nuovi modelli di programmazione per sfruttare appieno queste risorse. In questo contesto, sono emerse diverse librerie di comunicazione, ciascuna specifica per una piattaforma o un ambiente di sviluppo. 1988: MPI ha avuto origine da un'iniziativa di ricerca congiunta tra il "[[Argonne National Laboratory]]" e il "[[Università statale del Mississippi|Mississippi State University]]". Questo sforzo ha portato allo sviluppo dei primi concetti di MPI come una specifica per la comunicazione tra processi paralleli. 1992: MPI-1 è diventato uno standard ufficiale. Questa prima versione standardizzava l'interfaccia di comunicazione e i principali metodi di comunicazione tra i processi paralleli. Ha stabilito le fondamenta per la programmazione parallela basata su MPI. 1995: MPI-2 è stato pubblicato come estensione di MPI-1, aggiungendo nuove funzionalità, come la comunicazione punto a punto remota, la comunicazione non bloccante e la gestione dinamica dei processi. 2008: MPI-2.2 è stato pubblicato come un aggiornamento minore, che ha incluso correzioni di errori e chiarificazioni. 2012: MPI-3 è stato rilasciato come una revisione significativa di MPI, aggiungendo nuove funzionalità come le operazioni atomiche, la gestione dei processi dinamica migliorata, miglioramenti alla comunicazione punto a punto e molto altro.
{{FOLDOC}}
 
MPI è uno standard nato a seguito del lavoro di numerose persone appartenenti a diversi gruppi di ricerca<ref name="mpi1.0" />. La nascita di un gruppo di lavoro sul progetto avviene nel [[1992]] presso la conferenza accademica ''Workshop on Standards for Message Passing in a Distributed Memory Environment''<ref>{{cita web|url=https://computing.llnl.gov/tutorials/mpi/|titolo=Message Passing Interface (MPI)|autore=Blaise Barney|editore=Lawrence Livermore National Laboratory|accesso=9 aprile 2020|dataarchivio=19 gennaio 2021|urlarchivio=https://web.archive.org/web/20210119191628/https://computing.llnl.gov/tutorials/mpi/|urlmorto=sì}}</ref>. A seguito della creazione del ''MPI Forum'' nello stesso anno, il gruppo di lavoro ha prodotto il primo standard MPI 1.0 datato [[5 maggio]] [[1994]]<ref name="mpi1.0">{{cita pubblicazione|titolo=MPI: Message-Passing Interface Standard|anno=1994|editore=University of Tennessee|url=https://www.mpi-forum.org/docs/mpi-1.0/mpi-10.ps}}</ref>. Successivamente si sono susseguite varie versioni, tra cui la 2.1 pubblicata a [[settembre]] [[2008]] e la 3.1 pubblicata a [[giugno]] [[2015]]. Al [[2020]] la versione 3.1 è ancora l'ultima versione disponibile e nel [[2019]] è stata pubblicata la bozza della futura versione<ref name="mpi-2019-draft">{{cita pubblicazione|url=https://www.mpi-forum.org/docs/drafts/mpi-2019-draft-report.pdf|titolo=MPI: A Message-Passing Interface Standard - 2019 draft|anno=2016|editore=MPI Forum}}</ref>.
[[Categoria:Calcolo parallelo]]
 
== Implementazioni ==
{{Portale|Informatica}}
Diverse [[implementazione|implementazioni]] software, sia Open Source che no, sono state create. Le principali sono<ref>{{cita pubblicazione|doi=10.1007/978-3-642-22027-2_18|titolo=Survey of MPI Implementations|anno=2011|rivista=Digital Information and Communication Technology and Its Applications|editore=Springer|autore=Mehnaz Hafeez|coautori=Sajjad Asghar, Usman Ahmad, MalikAdeel ur Rehman, Naveed Riaz
}}</ref>:
* [[tr:Open MPI]]
* [[MPICH]]
* [[vi:LAM/MPI]]
* [[Intel MPI]]
* [[MS MPI]]
 
== Note ==
[[ar:Mpi]]
<references />
[[de:Message Passing Interface]]
== Bibliografia ==
[[en:Message Passing Interface]]
* {{cita libro|autore=[[Andrew Stuart Tanenbaum]]|titolo=Architettura dei calcolatori. Un approccio strutturale|editore=Pearson Education|città=Milano|anno=2006|url=http://books.google.it/books?id=hK8lJ4BPOYcC|pp=610-613|capitolo=MPI - Interfaccia a scambio di messaggi|isbn=978-88-7192-271-3|cid=adc}}
[[es:Interfaz de Paso de Mensajes]]
 
[[fr:Message Passing Interface]]
== Voci correlate ==
[[ja:Message Passing Interface]]
* [[pl:MPIMPICH]]
* [[Beowulf (computer)]]
[[pt:Message Passing Interface]]
* [[Open MPI]]
[[ru:Message Passing Interface]]
 
[[tr:MPI]]
== Altri progetti ==
[[vi:MPI]]
{{Interprogetto|preposizione=sul}}
 
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* {{FOLDOC}}
* {{en}}cita [web|http://www.mpi-forum.org/docs/ |Specifiche MPI]|lingua=en}}
* {{en}}cita [httpweb|https://www.open-mpi.org/ |Sito Open MPI]|lingua=en}}
 
{{portale|informatica}}
 
[[Categoria:Calcolo parallelo]]