Douglas Guptill wrote:

Hi:

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
other.

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 yielding.

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 to run?

Not a real answer to your question, but hopefully this helps.

Reply via email to