We switched on hyper threading on our cluster with two eight core sockets per 
node (32 threads per node).

We configured  gridengine with 16 slots per node to allow the 16 extra threads 
for kernel process use but this apparently does not work. Printout of the 
gridengine hostfile shows that for a 32 slots job, 16 slots are placed on each 
of two nodes as expected. Including the openmpi --display-map option shows that 
all 32 processes are incorrectly  placed on the head node. Here is part of the 
output

master=cn6083
PE=orte
JOB_ID=2481793
Got 32 slots.
slots:
cn6083 16 par6.q@cn6083 <NULL>
cn6085 16 par6.q@cn6085 <NULL>
Sun Nov  9 16:50:59 GMT 2014
 Data for JOB [44767,1] offset 0

 ========================   JOB MAP   ========================

 Data for node: cn6083  Num slots: 16   Max slots: 0    Num procs: 32
        Process OMPI jobid: [44767,1] App: 0 Process rank: 0
        Process OMPI jobid: [44767,1] App: 0 Process rank: 1
...
        Process OMPI jobid: [44767,1] App: 0 Process rank: 31

 =============================================================

I found some related mailings about a new warning in 1.8.2 about 
oversubscription and  I tried a few options to avoid the use of the extra 
threads for MPI tasks by openmpi without success, e.g. variants of

--cpus-per-proc 1 
--bind-to-core 

and some others. Gridengine treats hw threads as cores==slots (?) but the 
content of $PE_HOSTFILE suggests it distributes the slots sensibly  so it seems 
there is an option for openmpi required to get 16 cores per node?
I tried both 1.8.2, 1.8.3 and also 1.6.5.

Thanks for some clarification that anyone can give.

Henk


Reply via email to