On Fri, Dec 4, 2009 at 10:10, Eugene Loh <eugene....@sun.com> wrote: > Nicolas Bock wrote: > > On Fri, Dec 4, 2009 at 08:21, Ralph Castain <r...@open-mpi.org> wrote: > >> You used it correctly. Remember, all that cpu number is telling you is the >> percentage of use by that process. So bottom line is: we are releasing it as >> much as we possibly can, but no other process wants to use the cpu, so we go >> ahead and use it. >> >> If any other process wanted it, then the percentage would drop and the >> other proc would take some. >> > When you say "the other proc would take some", how much do you expect it > to take? In my case above, the master process does not appear to yield a > whole lot. Can I reduce the polling frequency? I know that my slave > processes typically run several minutes to hours. > > In my (limited) experience, the situation is a little of both. OMPI is > yielding. Yielding makes a difference only if someone else wants the CPU. > But even if someone else wants the CPU, OMPI in yield mode will still be > consuming cycles. It's like the way I drive a car. When I approach a stop > sign, I slow down -- really, officer, I do -- and if there is cross traffic > I let it go by ahead of me. But if there is no cross traffic, I, ahem, > proceed expediently. And, even if there is cross traffic, their progress is > still impacted by me -- heck, I'm all for obeying stop signs and all, but > I'm no doormat. OMPI processes can yield, but they only check to yield > every now and then. Between checks, they are not timid processes, even if > other processes are waiting to run. I once had some numbers on this. Yield > helped, but not as effectively as one might have imagined. >
Yes, that's the impression I get as well, the master process might be yielding, but it doesn't appear to be a lot. Maybe I should do this differently to avoid this CPU usage in master. All I really want is to execute another process somewhere on a free node in my MPI universe, wait for it to be done and go on. From my limited understanding of MPI, MPI_Comm_spawn() and MPI_Barrier() seemed just like what I needed, but as I said, maybe there are other ways to do this. nick