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