Am 18.11.2010 um 11:57 schrieb Terry Dontje:

> Yes, I believe this solves the mystery.  In short OGE and ORTE both work.  In 
> the linear:1 case the job is exiting because there are not enough resources 
> for the orte binding to work, which actually makes sense.  In the linear:2 
> case I think we've proven that we are binding to the right amount of 
> resources and to the correct physical resources at the process level.  
> 
> In the case you do not do pass bind-to-core to mpirun with a qsub using  
> linear:2 the processes on the same node will actually bind to the same two 
> cores.  The only way to determine this is to run something that prints out 
> the binding from the system.  There is no way to do this via OMPI because it 
> only reports binding when you are requesting mpirun to do some type of 
> binding (like -bind-to-core or -bind-to-socket.
> 
> In the linear:1 case with no binding I think you are having the processes on 
> the same node run on the same core.   Which is exactly what you are asking 
> for I believe.
> 
> So I believe we understand what is going on with the binding and it makes 
> sense to me.  As far as the allocation issue of slots vs. cores and trying to 
> not overallocate cores I believe the new allocation rule make sense to do but 
> I'll let you hash that out with Daniel.  

I still vote for a flag "limit_to_one_qrsh_per_host true/false" in the PE 
definition which a) checks whether any attempt is made to make a second `qrsh 
-inherit ...` to one and the same node (similar to the "job_is_first_task" to 
allow or deny a local `qrsh -inherit ...`), and b) as a side effect allocate 
*all* cores to this one and only started shepherd then.

And a second one "limit_cores_by_slot_count true/false" instead of new 
allocation_rules. To choose $fillup, $round_robin or others is independent from 
limiting it IMO.

-- Reuti


> In summary I don't believe there is any OMPI bugs related to what we've seen 
> and the OGE issue is just the allocation issue, right?
> 
> --td
> 
> 
> On 11/18/2010 01:32 AM, Chris Jewell wrote:
>>>> Perhaps if someone could run this test again with --report-bindings 
>>>> --leave-session-attached and provide -all- output we could verify that 
>>>> analysis and clear up the confusion?
>>>> 
>>>> 
>>> Yeah, however I bet you we still won't see output.
>>> 
>> Actually, it seems we do get more output!  Results of 'qsub -pe mpi 8 
>> -binding linear:2 myScript.com'
>> 
>> with
>> 
>> 'mpirun -mca ras_gridengine_verbose 100 -report-bindings 
>> --leave-session-attached -bycore -bind-to-core ./unterm'
>> 
>> [exec1:06504] System has detected external process binding to cores 0028
>> [exec1:06504] ras:gridengine: JOB_ID: 59467
>> [exec1:06504] ras:gridengine: PE_HOSTFILE: 
>> /usr/sge/default/spool/exec1/active_jobs/59467.1/pe_hostfile
>> [exec1:06504] ras:gridengine: exec1.cluster.stats.local: PE_HOSTFILE shows 
>> slots=2
>> [exec1:06504] ras:gridengine: exec3.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06504] ras:gridengine: exec2.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06504] ras:gridengine: exec7.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06504] ras:gridengine: exec4.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06504] ras:gridengine: exec5.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06504] ras:gridengine: exec6.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06504] [[59608,0],0] odls:default:fork binding child [[59608,1],0] to 
>> cpus 0008
>> [exec1:06504] [[59608,0],0] odls:default:fork binding child [[59608,1],1] to 
>> cpus 0020
>> [exec3:20248] [[59608,0],1] odls:default:fork binding child [[59608,1],2] to 
>> cpus 0008
>> [exec4:26792] [[59608,0],4] odls:default:fork binding child [[59608,1],5] to 
>> cpus 0001
>> [exec2:32462] [[59608,0],2] odls:default:fork binding child [[59608,1],3] to 
>> cpus 0001
>> [exec7:09833] [[59608,0],3] odls:default:fork binding child [[59608,1],4] to 
>> cpus 0002
>> [exec5:10834] [[59608,0],5] odls:default:fork binding child [[59608,1],6] to 
>> cpus 0001
>> [exec6:04230] [[59608,0],6] odls:default:fork binding child [[59608,1],7] to 
>> cpus 0001
>> 
>> AHHA!  Now I get the following if I use 'qsub -pe mpi 8 -binding linear:1 
>> myScript.com' with the above mpirun command:
>> 
>> [exec1:06552] System has detected external process binding to cores 0020
>> [exec1:06552] ras:gridengine: JOB_ID: 59468
>> [exec1:06552] ras:gridengine: PE_HOSTFILE: 
>> /usr/sge/default/spool/exec1/active_jobs/59468.1/pe_hostfile
>> [exec1:06552] ras:gridengine: exec1.cluster.stats.local: PE_HOSTFILE shows 
>> slots=2
>> [exec1:06552] ras:gridengine: exec3.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06552] ras:gridengine: exec2.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06552] ras:gridengine: exec7.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06552] ras:gridengine: exec4.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06552] ras:gridengine: exec5.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> [exec1:06552] ras:gridengine: exec6.cluster.stats.local: PE_HOSTFILE shows 
>> slots=1
>> --------------------------------------------------------------------------
>> mpirun was unable to start the specified application as it encountered an 
>> error:
>> 
>> Error name: Unknown error: 1
>> Node: exec1
>> 
>> when attempting to start process rank 0.
>> --------------------------------------------------------------------------
>> [exec1:06552] [[59432,0],0] odls:default:fork binding child [[59432,1],0] to 
>> cpus 0020
>> --------------------------------------------------------------------------
>> Not enough processors were found on the local host to meet the requested
>> binding action:
>> 
>>   Local host:        exec1
>>   Action requested:  bind-to-core
>>   Application name:  ./unterm
>> 
>> Please revise the request and try again.
>> --------------------------------------------------------------------------
>> [exec4:26816] [[59432,0],4] odls:default:fork binding child [[59432,1],5] to 
>> cpus 0001
>> [exec3:20345] [[59432,0],1] odls:default:fork binding child [[59432,1],2] to 
>> cpus 0020
>> [exec2:32486] [[59432,0],2] odls:default:fork binding child [[59432,1],3] to 
>> cpus 0001
>> [exec7:09921] [[59432,0],3] odls:default:fork binding child [[59432,1],4] to 
>> cpus 0002
>> [exec6:04257] [[59432,0],6] odls:default:fork binding child [[59432,1],7] to 
>> cpus 0001
>> [exec5:10861] [[59432,0],5] odls:default:fork binding child [[59432,1],6] to 
>> cpus 0001
>> 
>> 
>> 
>> Hope that helps clear up the confusion!  Please say it does, my head hurts...
>> 
>> Chris
>> 
>> 
>> --
>> Dr Chris Jewell
>> Department of Statistics
>> University of Warwick
>> Coventry
>> CV4 7AL
>> UK
>> Tel: +44 (0)24 7615 0778
>> 
>> 
>> 
>> 
>> 
>> 
>> _______________________________________________
>> users mailing list
>> 
>> us...@open-mpi.org
>> http://www.open-mpi.org/mailman/listinfo.cgi/users
> 
> 
> -- 
> <Mail-Anhang.gif>
> Terry D. Dontje | Principal Software Engineer
> Developer Tools Engineering | +1.781.442.2631
> Oracle - Performance Technologies
> 95 Network Drive, Burlington, MA 01803
> Email terry.don...@oracle.com
> 
> 
> 
> _______________________________________________
> users mailing list
> us...@open-mpi.org
> http://www.open-mpi.org/mailman/listinfo.cgi/users


Reply via email to