On Dec 13, 2010, at 11:00 AM, Hicham Mouline wrote:

> In various interfaces, like network sockets, or threads waiting for data from 
> somewhere, there are various solutions based on _not_ checking the state of 
> the socket or some sort of  queue continuously, but sort of getting 
> _interrupted_ when there is data around, or like condition variables for 
> threads.

OMPI currently busy polls for all progress in the MPI layer, even for TCP 
sockets.  Our progression engine is (currently) based on the premise of not 
blocking, so we have to poll everything.

This design decision was based on several things, including assumptions that 
others have already mentioned in this thread (e.g., MPI jobs typically have 
complete "ownership" of the resources that they're running on, shared memory 
and other transports require polling to check for progress, ...etc.).

We developers have previously discussed how to make the MPI layer block 
(instead of busy poll), but there has never been a compelling need to do so.  
Specifically, conversion to allow a blocking model is a fair amount of complex 
work that no one has allocated any time/resources to do.  :-\

-- 
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