Eugene Loh wrote:
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?
Dear Eugene
The solution I retained was for the main thread to isend data separately
to each other threads that are using Irecv + loop on mpi_test to test
the finish of the Irecv. It mught be dirty but works much better than
using Bcast
Cheers
Vincent
_______________________________________________
users mailing list
us...@open-mpi.org
http://www.open-mpi.org/mailman/listinfo.cgi/users