Chciałbym wiedzieć (w kilku słowach) jakie są główne różnice między OpenMP i MPI.Jakie są różnice między MPI a OpenMP?
Odpowiedz
OpenMP to sposób programowania na urządzeniach z pamięcią wspólną. Oznacza to, że równoległość występuje, gdy każdy równoległy wątek ma dostęp do wszystkich twoich danych.
Można myśleć o tym jako: równoległość może się zdarzyć podczas wykonywania określonej pętli for
, dzieląc pętlę między różne wątki.
MPI to sposób programowania na rozproszonych urządzeniach pamięci. Oznacza to, że równoległość występuje tam, gdzie każdy równoległy proces działa we własnej przestrzeni pamięci w oderwaniu od innych.
Możesz myśleć o tym tak: każdy napisany kod jest wykonywany niezależnie przez każdy proces. Równoległość występuje, ponieważ każdy proces dokładnie określa, w której części globalnego problemu powinny pracować, w oparciu o swój identyfikator procesu.
Oczywiście sposób, w jaki pisze się program OpenMP i MPI, jest zupełnie inny.
MPI to skrót od Message Passing Interface. Jest to zbiór deklaracji API dotyczących przekazywania komunikatów (takich jak send, receive, broadcast, itp.) I jakie zachowanie należy oczekiwać od implementacji.
Idea "przekazywania wiadomości" jest dość abstrakcyjna. Może to oznaczać przekazywanie wiadomości między lokalnymi procesami lub procesami rozproszonymi w hostach sieciowych, itp. Nowoczesne implementacje bardzo starają się być wszechstronnymi i abstrakcyjnymi wielowymiarowymi mechanizmami (dostęp do pamięci współużytkowanej, sieć IO itp.).
OpenMP to API, które polega przede wszystkim na ułatwieniu tworzenia programów do wielokrotnego przetwarzania pamięci wspólnej (przypuszczalnie). Nie ma pojęcia o przekazywaniu wiadomości. Zamiast tego, przy użyciu zestawu standardowych funkcji i dyrektyw kompilujących, piszesz programy, które wykonują lokalne wątki równolegle, i kontrolujesz zachowanie tych wątków (do jakiego zasobu mają mieć dostęp, jak są zsynchronizowane, itp.). OpenMP wymaga obsługi kompilatora, więc możesz również spojrzeć na to jako rozszerzenie obsługiwanych języków.
I nie jest niczym niezwykłym, że aplikacja może używać zarówno MPI, jak i OpenMP.
- 1. Jakie są różnice między postem a stroną
- 2. Jakie są różnice między przerwą a wyjściem?
- 3. Jakie są różnice między typedef a używaniem?
- 4. Jakie są różnice między programem a aplikacją?
- 5. Jakie są różnice między java 1.5 a java 1.6
- 6. Jakie są różnice między widokiem snapshot a widokiem dynamicznym?
- 7. Jakie są różnice między & a &&, | i || w R?
- 8. Jakie są różnice między Visual Studio Code a Visual Studio?
- 9. Jakie są różnice między gradle assemble a gradle build taks?
- 10. Jakie są różnice między VBA 6.0 a VBA 7.0?
- 11. Jakie są różnice między rzutami a ponownymi rzutami w Swift?
- 12. Jakie są podstawowe różnice między instancją a obiektem klasy?
- 13. Jakie są różnice między trybem binarnym MD5 a trybem tekstowym?
- 14. Jakie są różnice między Tibco EMS a Rendezvous
- 15. Jakie są różnice w JIT między Javą a .Net
- 16. Jakie są duże różnice między wtyczką IntelliJ + Ruby a RubyMine?
- 17. Jakie są różnice między powłoką logowania a powłoką interaktywną?
- 18. Jakie są różnice między Hazelcast Jet a Apache Flink?
- 19. Różnice między LAM MPI i OpenMPI
- 20. Program hybrydowy OpenMP i MPI
- 21. Jakie są różnice między PECL i PEAR?
- 22. Jakie są różnice między Haskell i PureScript?
- 23. Jakie są różnice między Conda i Anaconda
- 24. Jakie są różnice między @dynamic i @synthesize?
- 25. Jakie są różnice między LinFu.DynamicProxy i Castle.DynamicProxy?
- 26. Jakie są różnice między możliwościami obliczeniowymi CUDA?
- 27. Jakie są różnice między utf8_general_ci i utf8_unicode_ci?
- 28. Różnice między GWT a Vaadin
- 29. W C++, jakie są różnice między static_cast <double> (a) i double (a)?
- 30. Jakie są różnice między `` pushManager.getSubscription` pushManager.subscribe` i usługi pracownika
Możesz to, co opisujesz, bardzo łatwo w programowaniu pamięci współdzielonej lub rozproszonej. To, czego szukasz, nazywa się "redukcją" – NoseKnowsAll