Hi,

When combining OpenMPI 2.0.2 with OpenMP, I'm interested in launching a number of ranks and allocating a number of cores to each rank. Using "-map-by socket:PE=<num>", switching to "-map-by node:PE=<num>" if I want to allocate more than a single socket to a rank, seems to do what I want.

Except for "-map-by socket:PE=1". That seems to allocate an entire socket to each rank instead of a single core. Here's the output of a test program on a dual socket non-hyperthreading system that reports rank core bindings (odd cores on one socket, even on the other):

   $ mpirun -np 2 -map-by socket:PE=1 ./report_binding
   Rank 0 bound somehost.somewhere:  0 2 4 6 8 10 12 14 16 18 20 22
   Rank 1 bound somehost.somewhere:  1 3 5 7 9 11 13 15 17 19 21 23

   $ mpirun -np 2 -map-by socket:PE=2 ./report_binding
   Rank 0 bound somehost.somewhere:  0 2
   Rank 1 bound somehost.somewhere:  1 3

   $ mpirun -np 2 -map-by socket:PE=3 ./report_binding
   Rank 0 bound somehost.somewhere:  0 2 4
   Rank 1 bound somehost.somewhere:  1 3 5

   $ mpirun -np 2 -map-by socket:PE=4 ./report_binding
   Rank 0 bound somehost.somewhere:  0 2 4 6
   Rank 1 bound somehost.somewhere:  1 3 5 7

I get the same result if I change "socket" to "numa". Changing "socket" to either "core", "node" or "slot" binds each rank to a single core (good), but doesn't round-robin ranks across sockets like "socket" does (bad).

Is "-map-by socket:PE=1" doing the right thing, please? I tried reading the man page but I couldn't work out what the expected behaviour is :o

Cheers,

Mark

_______________________________________________
users mailing list
users@lists.open-mpi.org
https://rfd.newmexicoconsortium.org/mailman/listinfo/users

Reply via email to