У меня есть простая программа MPICH, в которой процессы отправляют & получать сообщения друг от друга в порядке звонка.
Я настроил 2 идентичные виртуальные машины и убедился, что сеть работает нормально. Я протестировал простую программу MPICH на обеих машинах, и она отлично работает.
Проблема возникает, когда я пытаюсь установить связь между процессами на разных машинах, как в приведенной выше программе. Я получаю следующую ошибку:
Неустранимая ошибка в MPI_Send: сбой процесса, стек ошибок:
MPI_Send (171) ……………: MPI_Send (buf = 0xbfed8c08, count = 1, MPI_INT, dest = 1,
tag = 1, MPI_COMM_WORLD) не удалось
MPID_nem_tcp_connpoll (1826): ошибка связи с рангом 1: соединение отклонено
/etc/hosts
настроен правильно.Вот что я сделал, И это работает!
Установлен следующий пакет с использованием исходного кода (tarball)
hydra
openmpi
Создан файл hosts (оба узла)
# cat /home/spatel/mpi/hydra/hosts
node1
node2
Установить переменную в .bashrc on (оба узла)
echo HYDRA_HOST_FILE=/home/spatel/mpi/hydra/hosts >> ~/.bashrc
Используйте программу HelloWorld MPI для запуска на одном узле.
node1# /home/spatel/mpi/hydra/bin/mpiexec -np 1 /home/spatel/mpi/mpi_hello_world
Hello world from processor node1.example.com, rank 0 out of 1 processors
Запустить на нескольких узлах, используя -machinefile
вариант -np
это номер процессора
node1# /home/spatel/mpi/hydra/bin/mpiexec -np 4 -machinefile /home/spatel/mpi/hydra/hosts /home/spatel/mpi/mpi_hello_world
Hello world from processor node1.example.com, rank 0 out of 1 processors
Hello world from processor node2.example.com, rank 0 out of 1 processors
Hello world from processor node1.example.com, rank 0 out of 1 processors
Hello world from processor node2.example.com, rank 0 out of 1 processors
Других решений пока нет …