On Fri, Dec 4, 2009 at 10:10, Eugene Loh <Eugene.Loh_at_[hidden]> wrote:
> Nicolas Bock wrote:
> On Fri, Dec 4, 2009 at 08:21, Ralph Castain <rhc_at_[hidden]> 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.