Почему все мои открытые процессы MPI имеют ранг 0? - PullRequest
9 голосов
/ 28 октября 2010

Я пишу параллельную программу с использованием Open MPI. Я использую Snow Leopard 10.6.4 и установил Open MPI через менеджер пакетов homebrew .

Когда я запускаю свою программу, используя mpirun -np 8 ./test, каждый процесс сообщает, что он имеет ранг 0, и считает, что общее число процессов равно 1, и 8 строк process rank: 0, total processes: 1 выводятся на консоль.

Я знаю, что это не проблема кода, поскольку точно такой же код будет компилироваться и запускаться, как и ожидалось, на некоторых машинах Ubuntu в компьютерной лаборатории моего колледжа. Я проверил средство отслеживания ошибок homebrew, и никто не сообщил о проблеме с пакетом Open MPI. Я в растерянности.

Ответы [ 4 ]

6 голосов
/ 25 февраля 2013

Полностью удалить предыдущую реализацию MPI.

В моем случае я сначала установил MPICH2, затем удалил его и изменил на OpenMPI.Затем произошел тот же случай, все ранги процесса были равны 0. Что я сделал, чтобы решить эту проблему: полностью удалить MPICH2 из моей системы (я использую Ubuntu / Debian Linux).

# apt-get remove mpich2
# apt-get autoremove
6 голосов
/ 04 марта 2011

Проверьте, какой mpirun вы вызываете.Выполняемый mpirun запускает 8 независимых экземпляров двоичного файла.Таким образом, каждый экземпляр является приложением MPI с размером юниверса 1 и рангом 0.

Кроме того, если вы не планируете запускать финальный код на кластере блоков OS X, я настоятельно рекомендую установить версию Linux ввиртуальная машина, например virtualbox, для тестирования и разработки этих кодов.

2 голосов
/ 21 апреля 2014

Сегодня я встретил ту же проблему, что и вы.И, наконец, я получил решение.

См. https://wiki.mpich.org/mpich/index.php/Frequently_Asked_Questions#Q:_All_my_processes_get_rank_0

Проще говоря, в ответе говорится, что MPI нужен подходящий PMI, чтобы сообщить процессам об их рангах и что-то еще.Поэтому нам нужно использовать соответствующий mpirun / mpiexec для запуска программы MPI.

Я полагаю, что ваша проблема связана с несоответствием между компилятором программы mpi и инструментом mpirun.Поэтому попробуйте удалить все и установить MPICH / openMPI (обязательно просто установите один из них).

2 голосов
/ 29 июня 2012

У меня была такая же проблема с openMPI в C на Linux. Вместо того, чтобы использовать MPIch2, проблема была исправлена ​​(но не забудьте запустить MPI_Finalize () в конце, иначе это будет странно.)

...