Назад | Перейти на главную страницу

Intel MPI выдает ошибку "ошибка инициализации канала" (mpirun)

Я пытаюсь настроить небольшой кластер из 3-х серверов. Их оборудование идентично, и они работают под управлением CentOS 7. Я использую кластерный компилятор Intel и реализацию MPI. Все настроено: я могу использовать ssh между всеми узлами без пароля, и я поделился каталогом / opt с nfs, поэтому which mpicc и which mpirun успешно на всех узлах. mpirun -hosts node1 -n 24 /home/cluster/test - это команда, которую я пытаюсь запустить (test скомпилирован из test.c из тестового каталога компилятора Intel и является nfs общим для всех узлов). Он отлично работает на любом отдельном узле, но если я попытаюсь запустить его более чем на одном узле, я получу:

[cluster@headnode ~]$ mpirun -hosts headnode -n 10 /home/cluster/test
Fatal error in MPI_Init: Other MPI error, error stack:
MPIR_Init_thread(784)...................: 
MPID_Init(1323).........................: channel initialization failed
MPIDI_CH3_Init(141).....................: 
MPID_nem_tcp_post_init(644).............: 
MPID_nem_tcp_connect(1107)..............: 
MPID_nem_tcp_get_addr_port_from_bc(1342): Missing ifname or invalid host/port description in business card

Google не дал мне никаких полезных ответов. Я также настраиваю базовый кластер виртуальных машин (CentOs 6.5) и получаю точно такую ​​же ошибку (так что это не проблема с оборудованием).

Также проверьте /etc/hosts и / или dig headnode чтобы убедиться, что имя хоста может быть правильно разрешено с узла, на котором запущено задание, если это невозможно, я бы проверил свою плохую конфигурацию кластера, прежде чем обвинять Intel MPI, я сомневаюсь, что это сработает с OpenMPI или любым другим дистрибутивом если головной узел не может быть исправлен. Дальнейшая проверка того, что порт открыт и доступен за брандмауэром, и что все правильно настроено под SE Linux / другими функциями безопасности, будет первым логическим шагом, поскольку очевидно, что узел недоступен.

Если у вас возникли эти проблемы и вы используете Intel MPI, вам следует сначала выполнить тест «пинг-понг» с помощью Intel MPI Benchmarks (IMB) и проанализировать эти результаты. Я позволю вам найти синтаксис для его запуска на веб-сайте Intel. Уже написанные Intel тесты и тесты лучше, чем все, что вы придумаете, и будут гораздо полезнее при диагностике этой проблемы.

Узнал как исправить: https://software.intel.com/en-us/articles/using-intel-mpi-library-and-intel-xeon-phi-coprocessor-tips

По сути, добавить -iface [network interface] к аргументам mpirun или добавьте export I_MPI_HYDRA_IFACE=[network interface] в .bashrc