Open MPI logo

Open MPI User's Mailing List Archives

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

From: John Robinson (jr_at_[hidden])
Date: 2006-02-28 11:40:40


Argh, sorry for the b/w misuse. I think I got this wrong on my first
test program too.

Maybe output is stuck in the stdout buffers. I don't see that the slave
is ever going to exit (no DIETAG).

Spoke before thinking,
/jr

----
Jose Pedro Garcia Mahedero wrote:
> 
> Mmmh I don't understand you:
> 
> My (slave) call is:
> MPI_Recv(&work, 1, MPI_INT, 0, MPI_ANY_TAG,    MPI_COMM_WORLD, &status);
> 
> And MPI_Recv signature is:
> int MPI_Recv( void *buf, int count, MPI_Datatype datatype, int source, 
> int tag, MPI_Comm comm, MPI_Status *status )
> 
> So:
> void *buf -> work
> int count -> 1
> MPI_Datatype datatype -> MPI_INT
> int source -> 0,
> ...
> 
> I think I'm waiting to receive incoming messages from the master (source 
> id =0). In fact the only sender is the master and the only slave is the 
> only receiver. Maybe I'm doing something else wrong?
> 
> Thank you
> 
> 
> On 2/28/06, *John Robinson* <jr_at_[hidden] <mailto:jr_at_[hidden]>> wrote:
> 
>     Your MPI_Recv is trying to receive from the slave(1), not the master
>     (0).
> 
>     Jose Pedro Garcia Mahedero wrote:
>      > Hello everybody.
>      >
>      > I'm new to MPI and I'm having some problems while runnig a simple
>      > pingpong program in more than one node.
>      >
>      > 1.- I followed all the instructions and installed open MPI without
>      > problems in  a Beowulf cluster.
>      > 2.-  Ths cluster is working OK and ssh keys are set for not password
>      > prompting
>      > 3.- miexec seems to run OK.
>      > 4.- Now I'm using just 2 nodes: I've tried a simple ping-pong
>      > application but my master only sends one request!!
>      > 5.- I reduced the problem by trying to send just two mesages to
>     the same
>      > node:
>      >
>      > int main(int argc, char **argv){
>      >   int myrank;
>      >
>      >   /* Initialize MPI */
>      >
>      >   MPI_Init(&argc, &argv);
>      >
>      >   /* Find out my identity in the default communicator */
>      >
>      >   MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
>      >   if (myrank == 0) {
>      >     int work = 100;
>      >     int count=0;
>      >     for (int i =0; i < 10; i++){
>      >       cout << "MASTER IS SLEEPING..." << endl;
>      >       sleep(3);
>      >       cout << "MASTER AWAKE WILL SEND["<< count++ << "]:" << work
>     << endl;
>      >        MPI_Send(&work, 1, MPI_INT, 1, WORKTAG,   MPI_COMM_WORLD);
>      >     }
>      >   } else {
>      >       int count =0;
>      >       int work;
>      >       MPI_Status status;
>      >       while (true){
>      >           MPI_Recv(&work, 1, MPI_INT, 0,
>     MPI_ANY_TAG,    MPI_COMM_WORLD,
>      > &status);
>      >          cout << "SLAVE[" << myrank << "] RECEIVED[" << count++
>     << "]:"
>      > << work <<endl;
>      >         if (status.MPI_TAG == DIETAG) {
>      >           break;
>      >         }
>      >     }// while
>      >   }
>      >   MPI_Finalize();
>      >
>      >
>      >
>      > 6a.- RESULTS  (if I put more than one machine in my mpihostsfile), my
>      > master sends the first message  and my slave receives it
>     perfectly. But
>      > my master doesnt send its second .
>      > message:
>      >
>      >
>      >
>      > Here's my output
>      >
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[0]:100
>      > MASTER IS SLEEPING...
>      > SLAVE[1] RECEIVED[0]:100MPI_STATUS.MPI_ERROR:0
>      > MASTER AWAKE WILL SEND[1]:100
>      >
>      > 6b.- RESULTS (if I put ONLY  1 machine in my mpihostsfile),
>     everything
>      > is OK until iteration 9!!!
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[0]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[1]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[2]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[3]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[4]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[5]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[6]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[7]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[8]:100
>      > MASTER IS SLEEPING...
>      > MASTER AWAKE WILL SEND[9]:100
>      > SLAVE[1] RECEIVED[0]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[1]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[2]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[3]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[4]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[5]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[6]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[7]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[8]:100MPI_STATUS.MPI_ERROR:0
>      > SLAVE[1] RECEIVED[9]:100MPI_STATUS.MPI_ERROR:0
>      > --------------------------------
>      >
>      > I know this is a lot of text, but I wanted to give a mamixum detailed
>      > question. I've been search in FAQ, but still don't know what (and
>     why)
>      > is going on...
>      >
>      > Anyone can help please :-)  ?
>      >
>      >
>      >
>     ------------------------------------------------------------------------
>      >
>      > _______________________________________________
>      > users mailing list
>      > users_at_[hidden] <mailto:users_at_[hidden]>
>      > http://www.open-mpi.org/mailman/listinfo.cgi/users
>     _______________________________________________
>     users mailing list
>     users_at_[hidden] <mailto:users_at_[hidden]>
>     http://www.open-mpi.org/mailman/listinfo.cgi/users
>     <http://www.open-mpi.org/mailman/listinfo.cgi/users>
> 
> 
> 
> ------------------------------------------------------------------------
> 
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users