[MPICH] question on progress engine in MPICH2

Guillaume Mercier mercierg at mcs.anl.gov
Fri Jan 20 08:49:02 CST 2006


Hello,

> But it is unclear to me that where these functions are used. As for
> MPID_CH3_Progress_wait, using grep, I only found it used in
> MPID_Probe.  How is the progress engine used for MPID_Send,
> MPID_Recv etc?

The progress engine code isn't used in MPID_Recv but in MPI_Recv.
(src/mpi/pt2pt/recv.c). Here is how it is used :

if ((*(request_ptr)->cc_ptr) != 0)
    {
        MPID_Progress_state progress_state;

        MPID_Progress_start(&progress_state);
        while((*(request_ptr)->cc_ptr) != 0)
        {
            mpi_errno = MPID_Progress_wait(&progress_state);
            if (mpi_errno != MPI_SUCCESS)
            {
                /* --BEGIN ERROR HANDLING-- */
                MPID_Progress_end(&progress_state);
                goto fn_fail;
                /* --END ERROR HANDLING-- */
            }
        }
        MPID_Progress_end(&progress_state);
    }

MPI_Recv calls MPID_Recv that returns a request object.
This request is then completed in the above code.

I hope this helps.

Best Regards,
Guillaume Mercier




More information about the mpich-discuss mailing list