MPICH: Как опубликовать_имя, чтобы клиентское приложение могло его искать?

При изучении MPI с использованием MPICH в Windows (1.4.1p1) я нашел пример кодаВот, Первоначально, когда я запустил сервер, мне пришлось бы скопировать сгенерированныйport_name и запустить клиент с ним. Таким образом, клиент может подключиться к серверу. Я изменил его, чтобы включитьMPI_Publish_name() вместо сервера. После запуска сервера с именемaaaa, Запускаю клиент, который выходит из строяMPI_Lookup_name() с

Invalid service name (see MPI_Publish_name), error stack:
MPID_NS_Lookup(87): Lookup failed for service name aaaa

Вот фрагменты кода:

server.c

MPI_Comm client; 
MPI_Status status; 
char port_name[MPI_MAX_PORT_NAME];
char serv_name[256];
double buf[MAX_DATA]; 
int size, again; 
int res = 0;

MPI_Init( &argc, &argv ); 
MPI_Comm_size(MPI_COMM_WORLD, &size); 
MPI_Open_port(MPI_INFO_NULL, port_name);
sprintf(serv_name, "aaaa");
MPI_Publish_name(serv_name, MPI_INFO_NULL, port_name);

while (1) 
{ 
    MPI_Comm_accept( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &client );
    /*...snip...*/
}

client.c

MPI_Comm server; 
double buf[MAX_DATA]; 
char port_name[MPI_MAX_PORT_NAME]; 
memset(port_name,'\0',MPI_MAX_PORT_NAME);
char serv_name[256];
memset(serv_name,'\0',256);

strcpy(serv_name, argv[1] )
MPI_Lookup_name(serv_name, MPI_INFO_NULL, port_name);
MPI_Comm_connect( port_name, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &server ); 
MPI_Send( buf, 0, MPI_DOUBLE, 0, tag, server ); 
MPI_Comm_disconnect( &server ); 
MPI_Finalize(); 
return 0; 

Я не могу найти никакой информации об изменении видимости опубликованных названий, если это даже проблема. MPICH, кажется, ничего не реализовал с MPI_INFO. Я бы попробовал openMPI, но у меня проблемы с его сборкой. Какие-либо предложения?

Ответы на вопрос(2)

Ваш ответ на вопрос