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.