Mi piacerebbe sapere (in poche parole) quali sono le principali differenze tra OpenMP e MPI.Quali sono le differenze tra MPI e OpenMP?
risposta
OpenMP è un modo per programmare su dispositivi di memoria condivisa. Ciò significa che il parallelismo si verifica dove ogni thread parallelo ha accesso a tutti i tuoi dati.
Si può pensare a questo: il parallelismo può verificarsi durante l'esecuzione di uno specifico loop for
dividendo il loop tra i diversi thread.
MPI è un modo per programmare su dispositivi di memoria distribuiti. Ciò significa che il parallelismo avviene dove ogni processo parallelo sta lavorando nel proprio spazio di memoria in isolamento dagli altri.
Si può pensare a questo: ogni bit di codice che hai scritto viene eseguito indipendentemente da ogni processo. Il parallelismo si verifica perché ogni processo viene identificato con esattezza su quale parte del problema globale su cui si dovrebbe lavorare basandosi interamente sul proprio ID di processo.
Il modo in cui si scrive un programma OpenMP e MPI, ovviamente, è anche molto diverso.
MPI è l'acronimo di Message Passing Interface. È un insieme di dichiarazioni API sul trasferimento di messaggi (come invio, ricezione, trasmissione, ecc.) E quale comportamento ci si dovrebbe aspettare dalle implementazioni.
L'idea di "passaggio di messaggi" è piuttosto astratta. Potrebbe significare passare il messaggio tra processi o processi locali distribuiti attraverso host in rete, ecc. Le moderne implementazioni cercano molto di essere versatili e astratti via i molteplici meccanismi sottostanti (accesso alla memoria condivisa, rete IO, ecc.).
OpenMP è un'API che consente di semplificare (presumibilmente) più facilmente la scrittura di programmi multi-elaborazione con memoria condivisa. Non c'è idea di trasmettere messaggi in giro. Invece, con un insieme di funzioni standard e direttive del compilatore, si scrivono programmi che eseguono thread locali in parallelo e si controlla il comportamento di quei thread (a quale risorsa dovrebbero avere accesso, come sono sincronizzati, ecc.). OpenMP richiede il supporto del compilatore, quindi puoi anche considerarlo come un'estensione delle lingue supportate.
E non è raro che un'applicazione possa utilizzare sia MPI che OpenMP.
- 1. Quali sono le differenze tra $ {} e # {}?
- 2. Quali sono/sono le principali differenze tra Flink e Storm?
- 3. Quali sono/sono le differenze tra MSBuild e TFSBuild
- 4. Quali sono le differenze tra le classi Helper e Utility?
- 5. Quali sono le differenze tra & e &&, | e || in R?
- 6. MPI vs GPU vs Hadoop, quali sono le principali differenze tra questi tre parallelismi?
- 7. Differenze tra LAM MPI e OpenMPI
- 8. OpenMP e programma ibrido MPI
- 9. Quali sono le differenze tra un compilatore e un linker?
- 10. Quali sono le differenze tra JSP e Facelets?
- 11. Quali sono le differenze tra un'istruzione GOTO e GOSUB BASIC
- 12. Quali sono le differenze tra RedrawWindow e UpdateWindow in Win32?
- 13. Quali sono le differenze tra evento e segnale in Qt
- 14. Quali sono le differenze effettive tra child_process.fork e cluster.fork?
- 15. Quali sono le differenze tra flex-grow e width?
- 16. Quali sono le principali differenze tra Babel e TypeScript
- 17. Quali sono le differenze tra Notifica e pynotify?
- 18. Quali sono le differenze tra coerenza sequenziale e coerenza quiescente?
- 19. Quali sono le differenze tra NSURLConnection e ASI-HTTP-Request?
- 20. Quali sono le differenze tra dpm() e dsm()?
- 21. Quali sono le differenze tra XmlSerializer e BinaryFormatter
- 22. Quali sono le differenze chiave tra JavaScript e ActionScript 3?
- 23. Quali sono le differenze tra flex mxml e actionscript-3
- 24. Quali sono le differenze tra Int e Integer in Scala?
- 25. Quali sono le differenze tra HasOne e References in Nhibernate?
- 26. Quali sono le differenze tra struct_time e datetime?
- 27. Quali sono le differenze attuali tra jQuery e Prototype?
- 28. Quali sono le differenze tra ibm jdk e oracle jdk?
- 29. Quali sono le differenze tra Conda e Anaconda
- 30. Quali sono le differenze tra Chrome, Canary e Chromium?
È possibile eseguire facilmente le operazioni descritte nella programmazione della memoria condivisa o distribuita. Quello che stai cercando è chiamato "riduzione" – NoseKnowsAll