Разница между многопроцессорным программированием с форком и MPI

Есть ли разница в производительности или иная разница между созданием многопроцессорной программы с использованием linux-форка и функций, доступных в библиотеке MPI? Или это проще сделать в MPI из-за готовых функций?

1 ответ

Решение

Они не решают ту же проблему. Обратите внимание на разницу между параллельным программированием и параллельным программированием с распределенной памятью.

Упомянутая вами модель fork/join используется для параллельного программирования на одной и той же физической машине. Как правило, вы не распространяете свою работу на другие подключенные машины (за исключением некоторых моделей в комментариях).

MPI для параллельного программирования с распределенной памятью. Вместо того, чтобы использовать один процессор, вы используете группу машин (даже сотни тысяч процессоров) для решения проблемы. Хотя их иногда считают одной большой логической машиной, они обычно состоят из множества процессоров. Функции MPI призваны упростить взаимодействие между этими процессами на распределенных машинах, чтобы избежать необходимости делать такие вещи, как ручное открытие TCP-сокетов между всеми вашими процессами.

Так что на самом деле нет способа сравнить их производительность, если только вы не запускаете MPI-программу на одной машине, а это не совсем то, для чего она предназначена. Да, вы можете запускать MPI на одной машине, и люди делают это постоянно для небольших тестовых кодов или небольших проектов, но это не самый большой вариант использования.

Другие вопросы по тегам