Я пытаюсь настроить небольшой кластер из 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