MPICH: после того, как порожденный MPI_COMM_SPAWN дочерний элемент не может достичь родительского узла - PullRequest
0 голосов
/ 15 апреля 2019

Я пытаюсь создать конфигурацию master-slave между двумя узлами.

Node1 порождает N процессов на Node2.Моя проблема заключается в том, что, когда порожденные процессы пытаются связаться со своим родительским узлом.Они пытаются подключиться к 127.0.1.1 IP, который является IP-адресом, назначенным для Node1 в файле / etc / hosts Node1.

Мои файлы / etc / hosts выглядят так:

Node1 / etc /файл hosts

127.0.0.1  localhost
127.0.1.1  node1
ip.node.2  node2
...

файл Node2 / etc / hosts

127.0.0.1  localhost
127.0.1.1  node2
ip.node.1  node1
...

Это моя ошибка

MPIR_Init_thread(506)............................: 
MPID_Init(325)...................................: spawned process group was unable to connect back to the parent on port <tag#0$description#madx$port#60313$ifname#127.0.1.1$>
MPID_Comm_connect(191)...........................: 
MPIDI_Comm_connect(834)..........................: Named port tag#0$description#madx$port#60313$ifname#127.0.1.1$ does not exist
MPIDI_Comm_connect(651)..........................: 
MPIDI_Create_inter_root_communicator_connect(324): Connection timed out in 180 seconds

И мой код master.c

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
void main(int argc, char *argv[])
{
    MPI_Init(&argc, &argv);
    int kernels, servers;
    char hostname[256];
    gethostname(hostname, 255);
    //char nombre[10]; int longitud;
    kernels = atoi(argv[1]);
    servers = atoi(argv[2]);

    MPI_Comm intercomm;
    MPI_Info info[2];

    MPI_Info_create(&info[0]);
    MPI_Info_set(info[0], "hostfile", "host2.txt");
    MPI_Info_create(&info[1]);
    MPI_Info_set(info[1], "hostfile", "host2.txt");

    char *cmds[2] = {"./kernel", "./server"};
    int np[2] = {kernels, servers};
    int errcodes[2];
    MPI_Comm_spawn_multiple(2, cmds, MPI_ARGVS_NULL, np, info, 0, MPI_COMM_WORLD, &intercomm, errcodes);

    MPI_Finalize();
}

host2.txt

host2:4
...