Douglas Guptill wrote:
>I am using openmpi-1.2.8 to run a 2 processor job on an Intel
>Quad-core cpu. Opsys is Debian etch. I am reaonably sure that, most
>of the time, one process is waiting for results from the other. The
>code is fortran 90, and uses mpi_send and mpi_recv. Yet
>"gnome-system-monitor" shows 2 cpus at 100%.
>So I read, and re-read, the FAQs, and found the mpi_yield_when_idle
>flag, and tried it:
> mpirun --host localhost,localhost,localhost,localhost --mca btl sm,self --mca mpi_yield_when_idle 1 --byslot -np 2 /home/dguptill/software/sopale_nested_2008-10-24/bin/sopale_nested_openmpi-intel-noopt
>And still get, for each run, two cpus are at 100%.
>My goal is to get the system to a minimum usage state, where only one
>cpu is being used, if one process is waiting for results from the
>Can anyone suggest if this is possible, and if so, how?
I'm no expert on this, but I've played with the same problem. I think I
did this on Solaris, but perhaps the behavior is the same on other OSes.
One issue is that "yield" might mean "yield if there is someone else
ready to run". Like a traffic sign: if someone else is there, you
yield. If no one else is there, there's no way to tell that someone is
Next, even if someone else is trying to run, "yield" doesn't give give
up the CPU 100%. It's still rather pesky.
So, one question is whether you really want to have an idle CPU. Do
you, or do you simply want another process, if there is one, to be able
Not a real answer to your question, but hopefully this helps.