Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |  

This web mail archive is frozen.

This page is part of a frozen web archive of this mailing list.

You can still navigate around this archive, but know that no new mails have been added to it since July of 2016.

Click here to be taken to the new web archives of this list; it includes all the mails that are in this frozen archive plus all new mails that have been sent to the list since it was migrated to the new archives.

Subject: Re: [OMPI users] Client/Server test
From: Aurélien Bouteiller (bouteill_at_[hidden])
Date: 2008-04-26 11:29:56


This scenario is known to be buggy in some versions of Open MPI. It is
now fixed in svn version and will be part of the 1.3 release.

To quick fix your application, you'll need to spawn both applications
with the same mpirun, with MPMD syntax. However this will have the
adverse effect of having a larger than expected MPI_COMM_WORLD.

Aurelien

Le 26 avr. 08 à 00:31, Alberto Giannetti a écrit :

> I want to connect two MPI programs through the MPI_Comm_connect/
> MPI_Comm_Accept API.
> This is my server app:
>
> int main(int argc, char* argv[])
> {
> int rank, count;
> int i;
> float data[100];
> char myport[MPI_MAX_PORT_NAME];
> MPI_Status status;
> MPI_Comm intercomm;
>
> MPI_Init(&argc, &argv);
> MPI_Comm_rank(MPI_COMM_WORLD, &rank);
> printf("Processor %d (%d, Receiver) initialized\n", rank, getpid());
>
> MPI_Open_port(MPI_INFO_NULL, myport);
> printf("Opened port %s\n", myport);
>
> printf("Waiting for connections on %s...\n", myport);
> MPI_Comm_accept(myport, MPI_INFO_NULL, 0, MPI_COMM_SELF,
> &intercomm);
> printf("New connection on port %s\n", myport);
>
> printf("Processor %d waiting for data from new intercomm...\n",
> rank);
> MPI_Recv(data, 100, MPI_FLOAT, MPI_ANY_SOURCE, MPI_ANY_TAG,
> intercomm, &status);
> MPI_Get_count(&status, MPI_FLOAT, &count);
> printf("Processor %d got %d elements: %f, %f, %f...\n", rank,
> count, data[0], data[1], data[2]);
>
> MPI_Finalize();
> }
>
>
> And my client program:
>
> int main(int argc, char* argv[])
> {
> int rank, i;
> float data[100];
> char myport[MPI_MAX_PORT_NAME];
> MPI_Comm intercomm;
>
> 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 port name\n");
> MPI_Finalize();
> exit(-1);
> }
>
> for( i = 0; i < 100; i++ )
> data[i] = i;
>
> strcpy(myport, argv[1]);
> printf("Processor %d connecting to '%s'\n", rank, myport);
> MPI_Comm_connect(myport, MPI_INFO_NULL, 0, MPI_COMM_SELF,
> &intercomm);
>
> printf("Processor %d sending data through intercomm...\n", rank);
> MPI_Send(data, 100, MPI_FLOAT, 0, 55, intercomm);
> printf("Processor %d data sent!\n", rank);
>
> MPI_Finalize();
> }
>
>
> I run the server program:
>
> mpirun -np 2 app2
> Processor 0 (7916, Receiver) initialized
> Processor 1 (7918, Receiver) initialized
> Opened port 0.1.0:2000
> Waiting for connections on 0.1.0:2000...
> Opened port 0.1.1:2001
> Waiting for connections on 0.1.1:2001...
>
>
> Then the client:
>
> mpirun -np 1 app1 0.1.0:2000
> Processor 0 (7933, Sender) initialized
> Processor 0 connecting to '0.1.0:2000'
> [alberto-giannettis-computer.local:07933] [0,1,0] ORTE_ERROR_LOG: Not
> found in file /tmp/buildpackage-3432/openmpi-1.2.4/orte/dss/
> dss_unpack.c at line 209
> [alberto-giannettis-computer.local:07933] [0,1,0] ORTE_ERROR_LOG: Not
> found in file /tmp/buildpackage-3432/openmpi-1.2.4/ompi/communicator/
> comm_dyn.c at line 186
> [alberto-giannettis-computer.local:07933] *** An error occurred in
> MPI_Comm_connect
> [alberto-giannettis-computer.local:07933] *** on communicator
> MPI_COMM_SELF
> [alberto-giannettis-computer.local:07933] *** MPI_ERR_INTERN:
> internal error
> [alberto-giannettis-computer.local:07933] *** MPI_ERRORS_ARE_FATAL
> (goodbye)
>
>
> Why do I have an internal error? If I try to connect to 0.1.1:2001
> from the client the program hangs.
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users

--
* Dr. Aurélien Bouteiller
* Sr. Research Associate at Innovative Computing Laboratory
* University of Tennessee
* 1122 Volunteer Boulevard, suite 350
* Knoxville, TN 37996
* 865 974 6321