Hi Raymond,

Raymond wrote:

Hi Heitor,


Heitor Florido wrote:
> I have installed OpenMPI on both computers and my application works on on
> both of them, but when I try to communicate between them, the method
> MPI_Lookup_name can't resolve the name published by the other machine.
>
> I've tried to run the example from mpi-forum that uses MPI_Open_port too,
> but it didn't work either.
> After reading about it on some FAQs e some other threads from the forum, I
> believe that I need to config my ssh options.
>
>

Honestly, when I installed Open MPI, I didn't perform any configuration
of the ssh options, as far as I can remember.  I'm not sure if someone
else can help you.  I can imagine networks being set up incorrectly, but
I can't imagine what incorrect ssh option there would be to prevent one
computer from finding another.  In addition to some FAQs, Gus suggested
running a simple example called hello_c.c.  Have you tried that?

Yes, I've tried to execute hello_c.c and it worked fine.
Here's the outcome :

heitor@heitor-desktop:~/Desktop/untitled folder$ mpiexec -n 3 hello
Hello, world, I am 1 of 3
Hello, world, I am 0 of 3
Hello, world, I am 2 of 3

It might help if you ran some existing code
(such as http://mpi.deino.net/mpi_functions/MPI_Lookup_name.html), too.

Ray

I've executed the code example from http://mpi.deino.net/mpi_functions/MPI_Lookup_name.html
and it didn't wrote anything on the terminal. Reading the code I've realized that it shouldn't be any printf.
I believe that's OK.


It is hard to give any suggestions unless you give more information such
as a shortened version of your source code and what is the command line
that you ran mpirun with.

Here's some pieces of my code:

Server:
void Servidor::iniciaServidor(){

    bool sair = false;
    int valorRecebido, valorEnviado;
    MPI_Status s;
    char porta[MPI_MAX_PORT_NAME];
    char nomeServico[25];

    strcpy (nomeServico,"GEAR-TRAINING_CENTER" );
    MPI_Open_port(MPI_INFO_NULL, porta);
    MPI_Publish_name(nomeServico, MPI_INFO_NULL, porta);
    printf ("%s\n", porta);

    while (true){

        MPI_Comm_accept(porta, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &comunicadorInterface);
        printf ("Conexao aceitada!\n");

...

}

Client:
void InterfaceUsuario::conectaServidor (){

    char porta[MPI_MAX_PORT_NAME];
    char nomeServico[25];

    strcpy (nomeServico, "GEAR-TRAINING_CENTER");
    MPI_Lookup_name(nomeServico, MPI_INFO_NULL, porta);
    MPI_Comm_connect( porta, MPI_INFO_NULL, 0, MPI_COMM_WORLD, &this->comunicadorServidor );
   
}

If you need the rest of the code, just tell me and I will post it. :D

[]s

Heitor