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. :-\
For corporate legal information go to: