Open MPI logo

Open MPI User's Mailing List Archives

  |   Home   |   Support   |   FAQ   |   all Open MPI User's mailing list

Subject: Re: [OMPI users] trouble using --mca mpi_yield_when_idle 1
From: Jens (jens-devel_at_[hidden])
Date: 2008-12-08 04:01:18


Hi Douglas,

this an answer to my question on the paraview-mailinglist.

I have the same problem with paraview, that it simply waits for more to
do in client-server(MPI) mode, but is running on 100%.

Different MPI-Implementations seem to behave different here. Using
MPICH2 for example does not result in 100% cpu-time for paraview while
waiting.

I desperate to know if that is possible with open-mpi, too. These FAQs
where interesting, but did not help:
http://www.open-mpi.org/faq/?category=running#oversubscribing
http://www.open-mpi.org/faq/?category=running#force-aggressive-degraded

Greetings
Jens

Eugene Loh schrieb:
> 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.
> _______________________________________________
> users mailing list
> users_at_[hidden]
> http://www.open-mpi.org/mailman/listinfo.cgi/users
>