We use Torque and Moab as our resource manager, 
I have a user who has to mix programming models, threads and MPI, but not on 
all ranks,

Example:
Rank 0 needs 4 cores
Rank 1 needs 4 cores
Ranks 2-5 need 1

There is no way to give this to Torque/Moab in a way that when using TM openMPI 
correctly starts the layout I need.
I found I can use a rankfile to do this,

cat rankfile
rank 0=nyx0456 slot=0
rank 1=nyx0457 slot=0
rank 2=nyx0458 slot=0
rank 3=nyx0458 slot=1
rank 4=nyx0458 slot=2
rank 5=nyx0458 slot=3

qsub -I -l nodes=4:ppn=4
[brockp@nyx0456 tmp]$ mpirun -np 6 -rf rankfile hostname | sort | uniq -c
      1 nyx0456.engin.umich.edu
      1 nyx0457.engin.umich.edu
      4 nyx0458.engin.umich.edu

(ignore the cpu count mismatch, I am not using all 16 cores in this example)

I could make a script to build this rankfile, I want to know if there is a 
better way to do this, 
Also we don't want to use affinity, as we don't know what 'cpus' the bath 
(pbs/moab) system gave us,  is the above rankfile going to do the right thing? 
That is the processes will float? Is there a way to tell if affinity is set? Or 
to say "rank 0 goes to this host use any available cores" 

Thanks!

Brock Palen
www.umich.edu/~brockp
Center for Advanced Computing
bro...@umich.edu
(734)936-1985




Reply via email to