On Feb 13, 2011, at 4:07 AM, Brice Goglin wrote: >> $ mpirun -np 4 hwloc-bind socket:0.core:0-3 ./test >> >> 1. Does hwloc-bind map the processes *sequentially* on *successive* cores of >> the socket? > > No. Each hwloc-bind command in the mpirun above doesn't know that there are > other hwloc-bind instances on the same machine. All of them bind their > process to all cores in the first socket.
To further underscore this point, mpirun launched 4 copies of: hwloc-bind socket:0.core:0-3 ./test Which means that all 4 processes bound to exactly the same thing. If you want each process to bind to a *different* set of PU's, then you have two choices: 1. See Open MPI 1.5.1's mpirun(1) man page. There's new affinity options in the OMPI 1.5 series, such as --bind-to-core and --bind-to-socket. We wrote them up in the FAQ, too. 2. Write a wrapper script that looks at the Open MPI environment variables OMPI_COMM_WORLD_RANK, or OMPI_COMM_WORLD_LOCAL_RANK, or OMPI_COMM_WORLD_NODE_RANK and decides how to invoke hwloc-bind. For example, something like this: mpirun -np 4 my_wrapper.sh ./test where my_wrapper.sh is: ----- #!/bin/sh if test "$OMPI_COMM_WORLD_RANK" = "0"; then bind_string=...whatever... else bind_string=...whatever... fi hwloc-bind $bind_string $* ----- Something like that. -- Jeff Squyres jsquy...@cisco.com For corporate legal information go to: http://www.cisco.com/web/about/doing_business/legal/cri/