Я хотел бы узнать (в нескольких словах), какие основные отличия между OpenMP и MPI.В чем разница между MPI и OpenMP?
ответ
OpenMP - это способ программирования на устройствах общей памяти. Это означает, что параллелизм возникает, когда каждый параллельный поток имеет доступ ко всем вашим данным.
Вы можете думать о нем как о параллелизме при выполнении определенного цикла for
путем разделения цикла между различными потоками.
MPI - это способ программирования на устройствах с распределенной памятью. Это означает, что параллелизм происходит там, где каждый параллельный процесс работает в своем собственном пространстве памяти в отрыве от других.
Вы можете думать об этом как о: каждый бит написанного вами кода выполняется независимо от каждого процесса. Параллелизм возникает, потому что вы сообщаете каждому процессу, в какой части глобальной проблемы они должны работать, основываясь исключительно на их идентификаторе процесса.
То, как вы пишете программу OpenMP и MPI, конечно же, тоже очень отличается.
MPI обозначает Интерфейс передачи сообщений. Это набор объявлений API при передаче сообщений (таких как передача, получение, трансляция и т. Д.), И какое поведение следует ожидать от реализаций.
Идея «передачи сообщений» довольно абстрактна. Это может означать передачу сообщений между локальными процессами или процессами, распределенными по сетевым хостам и т. Д. Современные реализации очень стараются быть универсальными и абстрактными от нескольких основных механизмов (доступ к общей памяти, сетевой ввод-вывод и т. Д.).
OpenMP - это API, который предназначен для того, чтобы сделать его (предположительно) более простым для записи программ обработки с использованием общей памяти. Нет понятия передавать сообщения. Вместо этого, с набором стандартных функций и директив компилятора, вы пишете программы, которые выполняют локальные потоки параллельно, и вы контролируете поведение этих потоков (на какой ресурс они должны иметь доступ, как они синхронизируются и т. Д.). OpenMP требует поддержки компилятора, поэтому вы можете также рассматривать его как расширение поддерживаемых языков.
И не редкость, что приложение может использовать как MPI, так и OpenMP.
- 1. Описание OpenMP & MPI
- 2. В чем разница между рангами и процессами в MPI?
- 3. В чем разница между «статическим» и «динамическим» расписанием в OpenMP?
- 4. Разница между папкой mpi и mpich2?
- 5. Разница между таймером MPI и таймером CUDA
- 6. C# HPC - MPI и OpenMP
- 7. MPI OpenMp hybrid
- 8. Разница между OpenMP threadprivate и private
- 9. OpenMP - Разница между директивами и конструкциями
- 10. В чем разница между «и»?
- 11. В чем разница между `{}` и `[]`?
- 12. В чем разница между == и ===?
- 13. В чем разница между «+» и «\ +»?
- 14. В чем разница между + = и = +?
- 15. В чем разница между/* ... */и/** ... */
- 16. В чем разница между: и +:
- 17. В чем разница между $ {} и # {}
- 18. В чем разница между $ _. и $ _
- 19. В чем разница между = и: =
- 20. В чем разница между && и &?
- 21. В чем разница между $ {} и # {}?
- 22. В чем разница между + и%?
- 23. В чем разница между + = и = +
- 24. В чем разница между # {} $ {} и% {}?
- 25. В чем разница между «» и «»?
- 26. В чем разница между ['#'] и [. = '#']?
- 27. В чем разница между == ~ и! =?
- 28. В чем разница между «/» и «/ *»?
- 29. В чем разница между «./» и «../»?
- 30. В чем разница между {}()) и {})()
Вы можете делать то, что вы описываете очень легко, в общем или распределенном программировании памяти. То, что вы ищете, называется «сокращением», – NoseKnowsAll