почему мой код mpi выполняется только на одном узле кластера?

#mpi #cluster-computing

#mpi #кластерные вычисления

Вопрос:

Я новичок в Linux и mpi и создаю кластеры. Я использую linux ubuntu 18.04, и мне нужно запустить код mpi в кластере. Я создал кластер узлов tow, просто соедините их вместе с помощью коммутатора и установите openssh-server и mpich на каждый из них, используя эти команды:

 sudo apt update
sudo apt upgrade
sudo apt install openssh-server
sudo apt install mpich
 

после этого, чтобы позволить им подключаться друг к другу без пароля, я генерирую ключ rsa для каждого on и добавляю его на другой узел, используя эти команды :

 ssh-keygen -t rsa
ssh-copy-id {ip of the other node}
eval `ssh-agent`
ssh-add ~/.ssh/id_rsa
 

Затем я помещаю код hello world по одному и тому же пути на каждый узел, компилирую его и запускаю :

 mpicc mpi_hello_world.c -o mpi_hello_world
mpirun -n 4 -hosts manager,worker ./mpi_hello_world
 

где manager и worker и определены в файле hosts .
вывод :

 Hello world from processor manager, rank 1 out of 4 processors
Hello world from processor manager, rank 0 out of 4 processors
Hello world from processor manager, rank 3 out of 4 processors
Hello world from processor manager, rank 2 out of 4 processors
 

вот мои файлы hosts:
в диспетчере:

 127.0.0.1 localhost
127.0.1.1 manager
127.0.1.2 worker
::1          ip6-localhost ip6-loopback
fe00::0      ip6-localnet
ff00::0      ip6-mcastprefix
ff02::1      ip6-allnodes
ff02::2      ip6-allrouters
 

на рабочем :

 127.0.0.1 localhost
127.0.1.1 manager 
127.0.1.2 worker 
::1          ip6-localhost ip6-loopback 
fe00::0      ip6-localnet 
ff00::0      ip6-mcastprefix 
ff02::1      ip6-allnodes 
ff02::2      ip6-allrouters 
 

есть ли какая-либо ошибка?

Комментарии:

1. возможное объяснение заключается manager в том, что у него более 4 ядер, а политика mpich по умолчанию заключается в том, чтобы сначала упаковать узлы. mpirun -ppn 2 ... раньше это удавалось, но я давно не пробовал.

2. результат все тот же. четыре оператора печати, но имя процесса — manager во всех.

3. Вы работаете mpirun на manager ?

4. Что ssh worker hostname возвращает?

5. наконец-то это сработало! . я просто изменил IP-адреса, как вы сказали. большое спасибо 🙂