2010-10-28 5 views
6

Я пишу параллельную программу, используя Open MPI. Я запускаю Snow Leopard 10.6.4, и я установил Open MPI через диспетчер пакетов homebrew.Почему все мои открытые MPI-процессы имеют ранг 0?

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

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

+0

Это происходит, если вы сами строите источник или используете OS X (Snow Leopard) при условии open-mpi? –

+0

Удаление open-mpi homebrew вызвало работу OS X-open open-mpi. Хм. – aperiodic

+4

Это почти всегда результат компиляции с одним распределением MPI и (случайно или иначе), запускающим его с mpirun другого. Убедитесь, что все пути и пути поиска динамической библиотеки имеют только один дистрибутив. –

ответ

4

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

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

1

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

4

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

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

# apt-get remove mpich2 
# apt-get autoremove 
1

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

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

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

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