Jeff Squyres wrote:
On Sep 2, 2008, at 7:25 PM, Vincent Rotival wrote:
I think I already read some comments on this issue, but I'd like to
know of latest versions of OpenMPI have managed to solve it. I am
now running 1.2.5
If I run a MPI program with synchronization routines (e.g.
MPI_barrier, MPI_bcast...), all threads waiting for data are still
burning CPU. On the other hand when using non-blocking receives all
threads waiting for data are not consuming any CPU.
Would there be a possibility to use MPI_Bcast without burning CPU
power ?
I'm afraid not at this time. We've talked about adding a blocking
mode for progress, but it hasn't happened yet (and is very unlikely
to happen for the v1.3 series).
I'd like to understand this issue better.
What about the variable mpi_yield_when_idle ? Is the point that this
variable will cause a polling process to yield, but if there is no one
to yield to then the process resumes burning CPU? If so, I can imagine
this solution being sufficient in some cases but not in others.
Also, Vincent, what do you mean by waiting threads not consuming any CPU
for non-blocking receives? In what state are these threads? Are they
in an MPI call (like MPI_Wait)? Or, have they returned from an MPI call
(like MPI_Irecv) and the user application can then park these threads to
the side?