Ошибка MPICH2 gethostbyname

Я не понимаю сообщение об ошибке. Я пытаюсь сделать это, чтобы запустить приложение MPICH2 после того, как я установил mpich2 версии 1.4 или 1.5 в /opt/mpich2 (обе версии завершились с той же ошибкой). Мое приложение MPI было скомпилировано с помощью 1.3, но я могу запустить его с помощью mpi 1.4 на другой рабочей станции. Я тестирую его на Ubuntu 12.04.

Fatal error in PMPI_Init_thread: Other MPI error, error stack:
MPIR_Init_thread(467)..............: 
MPID_Init(177).....................: channel initialization failed
MPIDI_CH3_Init(70).................: 
MPID_nem_init(319).................: 
MPID_nem_tcp_init(171).............: 
MPID_nem_tcp_get_business_card(418): 
MPID_nem_tcp_init(377).............: gethostbyname failed, localhost (errno 3)

Ответы

Ответ 1

Решение для macOS

Я наткнулся на эту проблему на macOS 10.12.1.

Решение состоит в том, чтобы добавить 127.0.0.1 computername.local в /etc/hosts. Ваш файл будет выглядеть примерно так:

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1   localhost
127.0.0.1   computername.local
255.255.255.255 broadcasthost
::1             localhost 

Вы можете изменить/проверить имя своего компьютера, если вы перейдете в Системные настройки > Совместное использование > Имя компьютера.

Ответ 2

Что сработало для меня, было следующее:

Убедитесь, что ваше имя хоста одно и то же для 1 и 2 ниже:

  • имя узла терминала
  • "/etc/hosts" имя хоста

Итак, если вы введете cat /etc/hosts в терминал, это должно выглядеть так:

// 127.0.0.1       my_hostname

Мое имя было для меня одинаковым для 1 и 2. Как только я изменил их, чтобы соответствовать, моя программа mpi выполнит.

Чтобы изменить имя хоста вашего терминала, выполните следующие действия: sudo scutil --set HostName my_new_host_name

Чтобы изменить имя хоста /etc/hosts, выполните следующие действия: sudo nano /etc/hosts

а затем добавьте строку

127.0.0.1       my_new_hostname

Ответ 3

Эта ошибка указывает на то, что существует проблема с решением localhost. Проверьте файл /etc/hosts, убедитесь, что локальный хост правильно указан здесь, он должен указывать на 127.0.0.1. Попробуйте использовать ssh для подключения к localhost, убедитесь, что это работает.

Ответ 4

Будучи вопросом разным, ответ, вероятно, тот же, что я дал недавно для OpenMPI: Функция gethostname() отсутствует в openMPI

Портативное решение MPI должно использовать MPI_Get_processor_name()

Ответ 5

Возможно, ваш /dev/shm заполнен, попробуйте его почистить.

Ответ 6

Удаление 127.0.0.1 localhost решило эту проблему.