Thanks for the ping -- sorry it took so long!

Committed to the SVN trunk in r23215; I filed CMR's for v1.4 and v1.5.  It's 
technically not a bug, so I don't know if the v1.4 RM's will allow it.


On May 27, 2010, at 12:02 PM, Shaun Jackman wrote:

> Ping.
> 
> On Tue, 2010-05-04 at 14:06 -0700, Shaun Jackman wrote:
> > Hi Jeff,
> >
> > request_get_status polls request->req_complete before calling
> > opal_progress. Ideally, it would check req_complete, call opal_progress,
> > and check req_complete one final time. This patch identically mirrors
> > the logic of
> > ompi_request_default_test in ompi/request/req_test.c.
> >
> > We've discussed this patch on the mailing list previously. I think we
> > both agreed it was a good idea, but never made it around to being
> > applied.
> >
> > Cheers,
> > Shaun
> >
> > 2009-09-14  Shaun Jackman  <sjack...@gmail.com>
> >
> >       * ompi/mpi/c/request_get_status.c (MPI_Request_get_status):
> >       If opal_progress is called then check the status of the request
> >       before returning. opal_progress is called only once. This logic
> >       parallels MPI_Test (ompi_request_default_test).
> >
> > --- ompi/mpi/c/request_get_status.c.orig      2008-11-04 12:56:27.000000000 
> > -0800
> > +++ ompi/mpi/c/request_get_status.c   2009-09-24 15:30:09.995850000 -0700
> > @@ -41,6 +41,10 @@
> >  int MPI_Request_get_status(MPI_Request request, int *flag,
> >                             MPI_Status *status)
> >  {
> > +#if OMPI_ENABLE_PROGRESS_THREADS == 0
> > +    int do_it_once = 0;
> > +#endif
> > +
> >      MEMCHECKER(
> >          memchecker_request(&request);
> >      );
> > @@ -57,6 +61,9 @@
> >          }
> >      }
> > 
> > +#if OMPI_ENABLE_PROGRESS_THREADS == 0
> > + recheck_request_status:
> > +#endif
> >      opal_atomic_mb();
> >      if( (request == MPI_REQUEST_NULL) || (request->req_state == 
> > OMPI_REQUEST_INACTIVE) ) {
> >          *flag = true;
> > @@ -78,9 +85,17 @@
> >          }
> >          return MPI_SUCCESS;
> >      }
> > -    *flag = false;
> >  #if OMPI_ENABLE_PROGRESS_THREADS == 0
> > -    opal_progress();
> > +    if( 0 == do_it_once ) {
> > +        /**
> > +         * If we run the opal_progress then check the status of the 
> > request before
> > +         * leaving. We will call the opal_progress only once per call.
> > +         */
> > +        opal_progress();
> > +        do_it_once++;
> > +        goto recheck_request_status;
> > +    }
> >  #endif
> > +    *flag = false;
> >
> 
> 


-- 
Jeff Squyres
jsquy...@cisco.com
For corporate legal information go to:
http://www.cisco.com/web/about/doing_business/legal/cri/


Reply via email to