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