Mpiexec не работает, поскольку прерывание MPI init

Я пытаюсь установить MPICH 2 на 64-разрядную машину, запущенную на Ubuntu 11.04 (Natty Narwhal). Я использовал

sudo apt-get install mpich2

Сначала я был удивлен, увидев, что mpd не установлен. При поиске в Google я увидел, что Hydra - это новый менеджер пакетов по умолчанию. Поэтому я попытался запустить свой MPI-код. Я получил следующую ошибку.

> -------------------------------------------------------------------------------------------
> [ip-10-99-75-58:02212] [[INVALID],INVALID] ORTE_ERROR_LOG: A
> system-required executable either could not be found or was not
> executable by this user in file
> ../../../../../../orte/mca/ess/singleton/ess_singleton_module.c at
> line 357 [ip-10-99-75-58:02212] [[INVALID],INVALID] ORTE_ERROR_LOG: A
> system-required executable either could not be found or was not
> executable by this user in file
> ../../../../../../orte/mca/ess/singleton/ess_singleton_module.c at
> line 230 [ip-10-99-75-58:02212] [[INVALID],INVALID] ORTE_ERROR_LOG: A
> system-required executable either could not be found or was not
> executable by this user in file ../../../orte/runtime/orte_init.c at
> line 132
> --------------------------------------------------------------------------
> It looks like orte_init failed for some reason; your parallel process
> is likely to abort.  There are many reasons that a parallel process
> can fail during orte_init; some of which are due to configuration or
> environment problems.  This failure appears to be an internal failure;
> here some additional information (which may only be relevant to an
> Open MPI developer):
> 
>   orte_ess_set_name failed   --> Returned value A system-required
> executable either could not be found or was not executable by this
> user (-127) instead of ORTE_SUCCESS
> --------------------------------------------------------------------------
> --------------------------------------------------------------------------
> It looks like MPI_INIT failed for some reason; your parallel process
> is likely to abort.  There are many reasons that a parallel process
> can fail during MPI_INIT; some of which are due to configuration or
> environment problems.  This failure appears to be an internal failure;
> here some additional information (which may only be relevant to an
> Open MPI developer):
> 
>   ompi_mpi_init: orte_init failed   --> Returned "A system-required
> executable either could not be found or was not executable by this
> user" (-127) instead of "Success" (0)
> --------------------------------------------------------------------------
> *** The MPI_Init() function was called before MPI_INIT was invoked.
> *** This is disallowed by the MPI standard.
> *** Your MPI job will now abort.
> -------------------------------------------------------------------------------------------

Прежде всего, это выглядит как ошибка Open MPI. Но я установил MPICH 2, а не Open MPI.

Во-вторых, я нахожусь в том, как справиться с этим, поскольку вся помощь, похоже, направлена ​​на пользователей Open MPI. Я что-то пропустил?

Ответ 1

У меня такая же проблема на Ubuntu 12.04. Я нахожу свою проблему в том, что у меня есть как open-mpi, так и mpich2 на моем компьютере. Когда я скомпилирую свою программу с помощью mpicc, она будет связана с open-mpi, а не с mpich2. Чтобы устранить эту проблему, вы можете использовать "mpicc.mpich2" для компиляции вашей программы, а затем использовать "mpiexec.mpich2" для выполнения вашего кода.

Ответ 2

В самом деле, эти сообщения об ошибках - это все открытые ошибки MPI. По какой-то причине у вас также есть (плохо настроенная?) Копия Open MPI, установленная где-то. Вы можете проверить, какой конкретный файл вы выполняете при вводе mpiexec, запустив which mpiexec. Я считаю, что вы можете сравнить это с результатом:

dpkg --listfiles mpich2

(или аналогичный), чтобы выяснить, где был установлен пакет MPICH2.

Ответ 3

У меня это случилось со мной, и я нашел проблему. Где-то в вашей системе во время запуска LD_PRELOAD было установлено, чтобы указать libmpi.so в OpenMPI.

Пример:

export LD_PRELOAD=<some_directory>/openmpi/1.4.4/lib/libmpi.so

В результате MPICH2 выходит из строя. Просто выполните "unset LD_PRELOAD" перед запуском MPICH2, и проблема исчезнет.

Обратите внимание, что настройка LD_PRELOAD на OpenMPI libmpi.so фактически требуется иногда для работы OpenMPI, поэтому отключение может нарушить OpenMPI для вас. Просто запомните reset, если вам нужно использовать OpenMPI.