почему mpirun дублирует программу по умолчанию?

Я новичок в openMPI, у меня проблемы с пониманием концепций. (Я нашел это очень полезным)

1- Может ли кто-нибудь кратко объяснить, почему мы используем openMPI? Насколько я понимаю, OpenMPI используется для распараллеливания тех участков кода, которые могут выполняться параллельно.

2- почему mpirun дублирует одну программу? просто потому, что мой ноутбук двухъядерный?

3 - какие изменения в коде мне нужно применить, чтобы он работал правильно? Я имею в виду ОДНУ программу, распараллеленную на двух доступных ядрах? не 2 похожих треда одной и той же программы.


person sali    schedule 30.04.2014    source источник


Ответы (1)


MPI в первую очередь полезен при использовании в среде с несколькими машинами, в которой вы должны запускать несколько процессов.

Это требует серьезной модификации программы.

person kec    schedule 30.04.2014
comment
Спасибо за ваш быстрый ответ. Так что мне нужно установить и использовать openMP вместо этого? и ваш ответ в основном означает, что openMPI НЕ МОЖЕТ использоваться для многопоточности с общей памятью? - person sali; 30.04.2014
comment
OpenMP также требует модификации, но не такой значительной (возможно), как MPI. OpenMP работает только на одной машине, поэтому степень распараллеливания будет ограничена количеством ядер на одной машине. Так что если это сработает для вас, то да. - person kec; 30.04.2014
comment
спасибо, так что это не так просто, как добавить #pragma omp parallel for для тяжелых циклов for! - person sali; 30.04.2014
comment
Ну а если у вас уже есть много таких подходящих петель, то можно и так просто. - person kec; 30.04.2014
comment
тогда в чем разница между openMPI и openMP? Я имею в виду, могу ли я по-прежнему использовать openMPI и добавлять pragma в подходящие циклы? - person sali; 30.04.2014
comment
OpenMP нельзя распространять на несколько машин в кластере, поэтому масштабируемость ограничена. Вот несколько моментов. - person kec; 30.04.2014
comment
Да, вы можете комбинировать OpenMP и MPI. Обратите внимание, что OpenMP — это стандарт, а MPI — это стандарт, но OpenMPI — это конкретная реализация MPI. (Как-то запутанно.) - person kec; 30.04.2014
comment
Спасибо, теперь все проясняется. - person sali; 30.04.2014