Dear Kenneth,

Thanks for your quick reply.
I tested your suggestion and, unfortunately, this approach didn't work.

Question: when I call MPI_IPROBE it accounts also for the messages that were already received asynchronously?

Is there any way to know, for my list of mpi_requests (from my MPI_IRECV's), which ones are "opened" and which ones have messages?

Regards,


On 11 March 2014 17:00, Kenneth Raffenetti <raffenet@mcs.anl.gov> wrote:
You could use MPI_Probe/MPI_Iprobe and pass in your "data" tag to test for any more pending messages.

Ken


On 03/11/2014 02:50 PM, Luiz Carlos da Costa Junior wrote:
Dear all,

I am all set with your suggestions and my program is working quite well
without any "unexpected message" since then, thanks again.

However now I am facing a small problem I describe next.

My receiver process receives actually 2 types of messages (2 different
tags):

  * the basic tag means that the message is a "data message" ("data"

    tag) that should be processed.
  * the second one means that the worker process is done and it will

    send no more messages ("end_of_processing" tag).

Once all worker processes send their end_of_processing tag, the receiver
process finishes its execution.

The problem I noticed is that some of the last messages sent by the
worker processes were not being processed. I think the problem is
related with the logic I am using with MPI_WAITANY in the receiver
process. I am simply counting the number of end_of_processing messages
received and if it reaches the number of worker processes, I finish the
execution without checking if there are more messages to be received at
the MPI_WAITANY queue.

As the order that messages arrive is not relevant for MPI_WAITANY I
think that my logic forgets some of the messages at the end of the
queue. Is this right?

Is there any way to check if there is any pending request to be processed?

Best regards,
Luiz


On 16 January 2014 16:57, "Antonio J. Peņa" <apenya@mcs.anl.gov
<mailto:apenya@mcs.anl.gov>> wrote:


    A profiling of both of your codes would help to understand where the
    time is spent and the difference between them in terms of performance.

       Antonio



    On 01/16/2014 12:47 PM, Luiz Carlos da Costa Junior wrote:
    Yes, I am comparing original x new implementation.

    The original implementation is as follows.

    c-----------------------------------------------------------------------
          subroutine my_receiver_original
    c ------------------------------------------------------------------
          (...)

    c     Local
    c     -----
          integer*4 m_stat(MPI_STATUS_SIZE)
          character card*(zbuf)      ! buffer for messages received

          do while( keep_receiving )
            call MPI_RECV(card, zbuf, MPI_CHARACTER,
         .  MPI_ANY_SOURCE, M_RECCSV, MY_COMM,
         .  m_stat, m_ierr )

    c       Process message: disk IO
    c ---------------
            <DO SOMETHING>
            if( SOMETHING_ELSE ) then
    keep_receiving = .false.
            end if
          end do

          (...)

          return
          end

    Regards,
    Luiz

    On 16 January 2014 16:19, Balaji, Pavan <balaji@mcs.anl.gov
    <mailto:balaji@mcs.anl.gov>> wrote:


        On Jan 16, 2014, at 12:16 PM, Luiz Carlos da Costa Junior
        <lcjunior@ufrj.br <mailto:lcjunior@ufrj.br>> wrote:
        > No, these failures don't occur all the time. I have a
        successful run (with my original implementation) which I am
        using as the base case for comparison.

        What are the two cases you are comparing?  Original
        implementation vs. new implementation?  What’s the original
        implementation?

          — Pavan

        _______________________________________________
        discuss mailing list discuss@mpich.org <mailto:discuss@mpich.org>

        To manage subscription options or unsubscribe:
        https://lists.mpich.org/mailman/listinfo/discuss




    _______________________________________________
    discuss mailing listdiscuss@mpich.org  <mailto:discuss@mpich.org>

    To manage subscription options or unsubscribe:
    https://lists.mpich.org/mailman/listinfo/discuss


    --
    Antonio J. Peņa
    Postdoctoral Appointee
    Mathematics and Computer Science Division
    Argonne National Laboratory
    9700 South Cass Avenue, Bldg. 240, Of. 3148
    Argonne, IL 60439-4847
    apenya@mcs.anl.gov  <mailto:apenya@mcs.anl.gov>
    www.mcs.anl.gov/~apenya  <http://www.mcs.anl.gov/~apenya>


    _______________________________________________
    discuss mailing list discuss@mpich.org <mailto:discuss@mpich.org>

    To manage subscription options or unsubscribe:
    https://lists.mpich.org/mailman/listinfo/discuss




_______________________________________________
discuss mailing list     discuss@mpich.org
To manage subscription options or unsubscribe:
https://lists.mpich.org/mailman/listinfo/discuss

_______________________________________________
discuss mailing list     discuss@mpich.org
To manage subscription options or unsubscribe:
https://lists.mpich.org/mailman/listinfo/discuss