1 Reply Latest reply on Jan 24, 2013 1:56 AM by compres

    Need (more) RCKMPI details




      I am using RCKMPI and I am not clear about a few details. For instance, let's assume two processes running on two different tiles (no other processes).

      Process A sends large (~600KB) data with tag T1 to B.


      And here are the questions:


      (a). If the process B does not receive data with tag T1 (uses MPI_Probe to selectively receive data), and process A then proceeds to send a single byte with tag T2, then, will B be able to receive this byte with tag T2?


      (b). As a consequence, how do I ensure that a message with tag T2 can always be received by B, irrespective of the size of the message with tag T1?


      Thanks a lot for any clues.


      Devendra Rai

        • 1. Re: Need (more) RCKMPI details

          RCKMPI is MPICH2 with SCC specific "channels".  Channels in MPICH do nothing more than byte transfers.  Everything else is the same as MPICH2, including the behavior you are asking about.


          Bytes to transfer are stored in a FIFO and are transferred in order (the only exception being shared memory communication with Nemesis, but never with RCKMPI channels).


          So to answer your questions:


          (a). B will block until both messages are received in order to receive the one tagged T2.  The one tagged T1 will be stored in an internal buffer until the program does the corresponding receive.


          (b). The reception is guaranteed in any case, it is just a matter of latency given the in-order transfers.