title: Processor/socket affinity in openMPI?
body: <p>I know,there are some basic function in openMPI implementation for mapping the different processes to different cores of different sockets(if the system have more than one sockets).</p>
  
  <ol>
  <li><code>--bind-to-socket</code>(first come first serve)</li>
  <li><code>--bysocket</code>(round-robin,based on load balencing)</li>
  <li><code>--npersocket N</code>(assign N processes to each socket)</li>
  <li><code>--npersocket N --bysocket</code>(assign N process to each socket , but in a round-robin basis)</li>
  <li><code>--bind-to-core</code>(binds one process to each core in a sequential fashion)</li>
  <li><code>--bind-to-core --bysocket</code>(assign one process to each core ,but never leave any socket less utilized)</li>
  <li><code>--cpus-per-proc N</code>(bind processes to more than one core)</li>
  <li><code>--rankfile</code>(can write complete description of preference of each process)</li>
  </ol>
  
  <p>I am running my openMPI program on a server having 8 sockets(10 cores each),and since the multi threading is on,there are 160 cores available.
  I need to analyze by running openMPI program on different combination of sockets/cores and processes.I expect the case when all the sockets are used ,and the code is dealing with some data transfer ,to be slowest as memory transfer is fastest in case both the process are executing on the cores of a same socket.</p>
  
  <pre><code>So my questions are follows,
  </code></pre>
  
  <hr>
  
  <ol>
  <li><p>What are the worst/best case mapping between the process and sockets(each process has a sleep duration and a data transfer to the root process) ?</p></li>
  <li><p>Is there any way to print the name of the socket and core details on which the process is being executed ? (i will make us of it to know,if the processes are really distributing themselves among the sockets)</p></li>
  </ol>