Что произойдет, если я запустил программу MPI, для которой требуется 3 узла (т. Е. Mpiexec -np 3 ./Program) на одной машине, которая имеет 2 процессора?MPI на одной машине dualcore
ответ
Это зависит от вашей реализации MPI, конечно. Скорее всего, он будет создавать три процесса и использовать общую память для обмена сообщениями. Это будет работать очень хорошо: операционная система будет отправлять два процессора по трем процессам и всегда выполнять один из готовых процессов. Если процесс ожидает получения сообщения, он блокируется, и операционная система будет планировать запуск одного из двух других процессов - одним из которых будет тот, который отправляет сообщение.
Но скажу, что я хочу, чтобы три процесса были как можно более независимыми, и обмениваются сообщениями только через передачу сообщений. В идеале тогда мне понадобится машина с 3 cpus, не так ли? В качестве реализации MPI я использую MPICH2. – Rich 2010-11-24 23:05:39
Неправильно. Процессы будут независимы уже на двух процессорах. Операционная система будет просто планировать их; каждый получит 66% от одного процессора. Если они не блокируют ожидание сообщений, они будут запускать «полную скорость» (это означает, что они будут держать оба процессора в полной нагрузке и делать все индивидуальные действия). – 2010-11-24 23:19:29
Мартин дал правильный ответ, и я добавил его, но я просто хочу добавить несколько тонкостей, которые слишком длинны, чтобы вписаться в поле комментариев.
Нет ничего плохого в том, что у вас больше процессов, чем ядер; вы, вероятно, уже десятки лет на вашей машине, прежде чем запускать любую программу MPI. Вы можете попробовать с любым исполняемым файлом в командной строке, у вас есть что-то вроде mpirun -np 24 hostname
или mpirun -np 17 ls
в окне linux, и вы получите 24 копии вашего имени хоста или 17 (вероятно, чередующихся) списков каталогов, и все будет хорошо.
В MPI это использование большего количества процессов, чем ядер, обычно называется «переподпиской». Тот факт, что он имеет особое название, уже говорит о том, что это особый случай. Типы программ, написанных с помощью MPI, обычно лучше всего работают, когда каждый процесс имеет собственное ядро. Бывают ситуации, когда этого не должно быть, но оно (безусловно) обычное. И по этой причине, например, OpenMPI оптимизирован для обычного случая - он просто делает сильное предположение, что каждый процесс имеет свое собственное ядро, и поэтому очень агрессивно использовать CPU для опроса, чтобы узнать, появилось ли сообщение все же (поскольку он показывает, что это не делает ничего важного). Это не проблема, и ее можно легко отключить, если OpenMPI знает, что она переполнена (http://www.open-mpi.org/faq/?category=running#oversubscribing). Это дизайнерское решение, и это улучшает производительность подавляющего большинства случаев.
По историческим причинам я больше знаком с OpenMPI, чем с MPICH2, но я понимаю, что по умолчанию MPICH2s более прощает избыточный список - но я думаю, что даже там, возможно, можно включить более агрессивное ожидание.
В любом случае, это длинный способ сказать, что да, то, что вы делаете, прекрасно, и если вы видите какие-то странные проблемы при переключении MPI или даже версий MPI, выполните быстрый поиск, чтобы узнать, есть какие-либо параметры, которые необходимо изменить для этого случая.
- 1. MPI на многоядерной машине
- 2. Преимущества использования MPI на машине UMA
- 3. Свинья на одной машине
- 4. Остановка на одной машине
- 5. Dualcore vs Quadcore for Development
- 6. Установить только на одной машине
- 7. MPI запрашивает аутентификацию на localhost
- 8. NoSQL в одной машине
- 9. Запуск mpi на нескольких машинах
- 10. qtsingleapplication несколько пользователей на одной машине linux
- 11. 2 экземпляра сонара на одной машине
- 12. Использование всех ядер на одной машине Hadoop
- 13. Ошибка AutoHotkey ControlSend на одной машине
- 14. Официальные несколько версий Python на одной машине?
- 15. Несколько демонов sidekiq на одной машине
- 16. mulltiple счет печенья на одной машине
- 17. Запуск кластера Hadoop на одной машине
- 18. Импорт MongoDB на одной машине, сбой другой
- 19. Полимер - два браузера на одной машине
- 20. Python и IronPython на одной машине?
- 21. nServiceBus подход к развертыванию на одной машине
- 22. PHP + MySQL слишком медленный на одной машине
- 23. MongoDB shard по дате на одной машине
- 24. Rancher: Несколько хостов на одной физической машине
- 25. Несколько пользователей-гитолитов на одной машине
- 26. Несколько страниц на одной машине (Linode)
- 27. Запуск нескольких веб-фреймворков на одной машине?
- 28. Запуск двух IncrediBuild на одной машине?
- 29. Множественные клиенты PowerCenter Informatica на одной машине?
- 30. Rhadoop основной задачей на одной машине
Могу ли я предложить удаление «параллелизма» в качестве тега? MPI дает вам параллельное выполнение, но без параллелизма в том смысле, что вы можете написать веб-сервер, скажем, с ним. – 2010-11-24 22:47:05