Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] MPI_Lookup_name error
From: Alberto Giannetti (albertogiannetti_at_[hidden])
Date: 2008-05-06 15:17:58


Correct, I am using 1.2.6 and not running a persistent deamon (thank you for
the link Pak by the way).
However, in the Client/Server test thread I'm showing a complete example
where I tried to run both applications through the same mpirun command and
still having an internal error:
http://www.open-mpi.org/community/lists/users/2008/04/5537.php

On Mon, May 5, 2008 at 10:18 AM, Ralph Castain <rhc_at_[hidden]> wrote:

> I assume you are using some variant of OMPI 1.2?
>
> When last I checked, which admittedly was quite a while ago, this worked
> on
> the 1.2.x series. However, I note something here that may be a problem. In
> the 1.2.x series, we do not have a global publish/lookup service - the
> application doing the publish must be launched by the same mpirun as the
> application doing the lookup.
>
> The code below only does the lookup, and appears to be asking that you
> provide some server name. I assume you are somehow looking up the name of
> the mpirun that launched the application that did the publish, and hoping
> the two will cross-connect? Unfortunately, I don't believe the 1.2.x code
> is
> smart enough to figure out how to do that.
>
> This is cleaned up in the upcoming 1.3 release and should work much
> smoother.
>
> Ralph
>
>
>
> On 4/27/08 6:58 PM, "Alberto Giannetti" <albertogiannetti_at_[hidden]>
> wrote:
>
> > I am having error using MPI_Lookup_name. The same program works fine
> > when using MPICH:
> >
> >
> > /usr/local/bin/mpiexec -np 2 ./client myfriend
> > Processor 0 (662, Sender) initialized
> > Processor 0 looking for service myfriend-0
> > Processor 1 (664, Sender) initialized
> > Processor 1 looking for service myfriend-1
> > [local:00662] *** An error occurred in MPI_Lookup_name
> > [local:00662] *** on communicator MPI_COMM_WORLD
> > [local:00662] *** MPI_ERR_NAME: invalid name argument
> > [local:00662] *** MPI_ERRORS_ARE_FATAL (goodbye)
> > [local:00664] *** An error occurred in MPI_Lookup_name
> > [local:00664] *** on communicator MPI_COMM_WORLD
> > [local:00664] *** MPI_ERR_NAME: invalid name argument
> > [local:00664] *** MPI_ERRORS_ARE_FATAL (goodbye)
> >
> >
> > int main(int argc, char* argv[])
> > {
> > int rank, i;
> > float data[100];
> > char cdata[64];
> > char myport[MPI_MAX_PORT_NAME];
> > char myservice[64];
> > MPI_Comm intercomm;
> > MPI_Status status;
> > int intercomm_size;
> >
> > MPI_Init(&argc, &argv);
> > MPI_Comm_rank(MPI_COMM_WORLD, &rank);
> > printf("Processor %d (%d, Sender) initialized\n", rank, getpid());
> >
> > if( argc < 2 ) {
> > fprintf(stderr, "Require server name\n");
> > MPI_Finalize();
> > exit(-1);
> > }
> >
> > for( i = 0; i < 100; i++ )
> > data[i] = i;
> >
> > sprintf(myservice, "%s-%d", argv[1], rank);
> > printf("Processor %d looking for service %s\n", rank, myservice);
> > MPI_Lookup_name(myservice, MPI_INFO_NULL, myport);
> > printf("Processor %d found port %s looking for service %s\n",
> > rank, myport, myservice);
> >
> > while( 1 ) {
> > printf("Processor %d connecting to '%s'\n", rank, myport);
> > if( MPI_Comm_connect(myport, MPI_INFO_NULL, 0, MPI_COMM_SELF,
> > &intercomm) == MPI_SUCCESS )
> > break;
> > sleep(1);
> > }
> > printf("Processor %d connected\n", rank);
> >
> > MPI_Comm_remote_size(intercomm, &intercomm_size);
> > printf("Processor %d remote comm size is %d\n", rank,
> > intercomm_size);
> >
> > printf("Processor %d sending data through intercomm to rank 0...
> > \n", rank);
> > MPI_Send(data, 100, MPI_FLOAT, 0, rank, intercomm);
> > printf("Processor %d data sent!\n", rank);
> > MPI_Recv(cdata, 12, MPI_CHAR, MPI_ANY_SOURCE, MPI_ANY_TAG,
> > intercomm, &status);
> > printf("Processor %d received string data '%s' from rank %d, tag %d
> > \n", rank, cdata, status.MPI_SOURCE, status.MPI_TAG);
> >
> > sleep(5);
> >
> > printf("Processor %d disconnecting communicator\n", rank);
> > MPI_Comm_disconnect(&intercomm);
> > printf("Processor %d finalizing\n", rank);
> >
> > MPI_Finalize();
> > printf("Processor %d Goodbye!\n", rank);
> > }
> >
> > _______________________________________________
> > users mailing list
> > users_at_[hidden]
> > http://www.open-mpi.org/mailman/listinfo.cgi/users
>
>
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>