<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Intel MPI strange behavor with I_MPI_PIN_DOMAIN in Intel® MPI Library</title>
    <link>https://community.intel.com/t5/Intel-MPI-Library/Intel-MPI-strange-behavor-with-I-MPI-PIN-DOMAIN/m-p/764419#M39</link>
    <description>Hi,&lt;BR /&gt;&lt;BR /&gt;That probably goes from the misunderstanding of the I_MPI_PIN_DOMAIN logic.&lt;BR /&gt;&lt;BR /&gt;I_MPI_PIN_DOMAIN doesn't limit number of processors to the one you used in a mask. It creates domains!&lt;BR /&gt;In your case (-genv I_MPI_PIN_DOMAIN [2]) 2 domains will be created: the first one will contain only one processor - 1th one, and the second domain will contain all other processors.&lt;BR /&gt;The problem here is that a domain with 0-th processor will be used first. That is why you see such behaviour.&lt;BR /&gt;&lt;BR /&gt;Much better to use not exact mask but domain size. For example you know that you have a processor with 4 cores on each and 2 processors in a socket (8 cores). You can create 2 domains size of 4 and Intel MPI library will automatically create these domains so that processes will be allocated as close as possible inside of a domain. (I_MPI_PIN_DOMAIN=4)&lt;BR /&gt;Or even better to use I_MPI_PIN_DOMAIN=socket.&lt;BR /&gt;&lt;BR /&gt;You can create domains so that processes will be allocated to share cache memory, e.g.: I_MPI_PIN_DOMAIN=cache2&lt;BR /&gt;Any MPI process and its openMP threads will share on domain.&lt;BR /&gt;&lt;BR /&gt;Might be you need to try I_MPI_PIN_PROCESSOR_LIST environment variable?&lt;BR /&gt;&lt;BR /&gt;Regards!&lt;BR /&gt; Dmitry&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
    <pubDate>Wed, 15 Dec 2010 13:42:12 GMT</pubDate>
    <dc:creator>Dmitry_K_Intel2</dc:creator>
    <dc:date>2010-12-15T13:42:12Z</dc:date>
    <item>
      <title>Intel MPI strange behavor with I_MPI_PIN_DOMAIN</title>
      <link>https://community.intel.com/t5/Intel-MPI-Library/Intel-MPI-strange-behavor-with-I-MPI-PIN-DOMAIN/m-p/764418#M38</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;I tried to pin processes to core allocated by SGE which support processor affinity(over 6.2u5).&lt;BR /&gt;The normal MPI programs work by using I_MPI_PIN_PROCESSOR_LIST.&lt;BR /&gt;However, The Hybrid(MPI + OpenMP) programs does not work by usign I_MPI_PIN_DOMAIN.&lt;BR /&gt;&lt;BR /&gt;For example:&lt;BR /&gt;$ mpiexec -genv I_MPI_PIN_DOMAIN [1] -n 1 ./affinity&lt;BR /&gt;rank = 0, affinity = 0 &amp;lt;-- works !&lt;BR /&gt;$ mpiexec -genv I_MPI_PIN_DOMAIN [2] -n 1 ./affinity&lt;BR /&gt;rank = 0, affinity = 0 2 3 4 5 6 7 8 9 10 &amp;lt;-- not works &lt;BR /&gt;$ mpiexec -genv I_MPI_PIN_DOMAIN [3] -n 1 ./affinity&lt;BR /&gt;rank = 0, affinity = 0 1 &amp;lt;-- works&lt;BR /&gt;$ mpiexec -genv I_MPI_PIN_DOMAIN [4] -n 1 ./affinity&lt;BR /&gt;rank = 0, affinity = 0 1 3 4 5 6 7 8 9 10 11&lt;BR /&gt;&lt;BR /&gt;If Open MPI is used with the -rf(rankfile) option, these work. &lt;BR /&gt;Can you help me ?&lt;BR /&gt;&lt;BR /&gt;Thank you in advance.&lt;BR /&gt;&lt;BR /&gt;Sincerely,&lt;BR /&gt;T.Ikeda</description>
      <pubDate>Wed, 15 Dec 2010 10:45:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-MPI-Library/Intel-MPI-strange-behavor-with-I-MPI-PIN-DOMAIN/m-p/764418#M38</guid>
      <dc:creator>iketeru</dc:creator>
      <dc:date>2010-12-15T10:45:18Z</dc:date>
    </item>
    <item>
      <title>Intel MPI strange behavor with I_MPI_PIN_DOMAIN</title>
      <link>https://community.intel.com/t5/Intel-MPI-Library/Intel-MPI-strange-behavor-with-I-MPI-PIN-DOMAIN/m-p/764419#M39</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;That probably goes from the misunderstanding of the I_MPI_PIN_DOMAIN logic.&lt;BR /&gt;&lt;BR /&gt;I_MPI_PIN_DOMAIN doesn't limit number of processors to the one you used in a mask. It creates domains!&lt;BR /&gt;In your case (-genv I_MPI_PIN_DOMAIN [2]) 2 domains will be created: the first one will contain only one processor - 1th one, and the second domain will contain all other processors.&lt;BR /&gt;The problem here is that a domain with 0-th processor will be used first. That is why you see such behaviour.&lt;BR /&gt;&lt;BR /&gt;Much better to use not exact mask but domain size. For example you know that you have a processor with 4 cores on each and 2 processors in a socket (8 cores). You can create 2 domains size of 4 and Intel MPI library will automatically create these domains so that processes will be allocated as close as possible inside of a domain. (I_MPI_PIN_DOMAIN=4)&lt;BR /&gt;Or even better to use I_MPI_PIN_DOMAIN=socket.&lt;BR /&gt;&lt;BR /&gt;You can create domains so that processes will be allocated to share cache memory, e.g.: I_MPI_PIN_DOMAIN=cache2&lt;BR /&gt;Any MPI process and its openMP threads will share on domain.&lt;BR /&gt;&lt;BR /&gt;Might be you need to try I_MPI_PIN_PROCESSOR_LIST environment variable?&lt;BR /&gt;&lt;BR /&gt;Regards!&lt;BR /&gt; Dmitry&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 15 Dec 2010 13:42:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-MPI-Library/Intel-MPI-strange-behavor-with-I-MPI-PIN-DOMAIN/m-p/764419#M39</guid>
      <dc:creator>Dmitry_K_Intel2</dc:creator>
      <dc:date>2010-12-15T13:42:12Z</dc:date>
    </item>
    <item>
      <title>Intel MPI strange behavor with I_MPI_PIN_DOMAIN</title>
      <link>https://community.intel.com/t5/Intel-MPI-Library/Intel-MPI-strange-behavor-with-I-MPI-PIN-DOMAIN/m-p/764420#M40</link>
      <description>Thank you for your reply.&lt;BR /&gt;&lt;BR /&gt;However, I don't understand how to pin processes of the hybrid(MPI + OpenMP) programs.&lt;BR /&gt;If I run 2processes which have 4threads each on 2nodes, I can pin with Open MPI as follows:&lt;BR /&gt;&lt;BR /&gt;$ export KMP_AFFINITY=compact&lt;BR /&gt;$ export OMP_NUM_THREADS=4&lt;BR /&gt;$ cat machinefile&lt;BR /&gt;node1&lt;BR /&gt;node2&lt;BR /&gt;$ cat rankfile&lt;BR /&gt;rank 0=node1 slot=1,2,6,10 &amp;lt;-- This slot information will be provided by Sun Grid Eingine&lt;BR /&gt;rank 1=node2 slot=1,4,7,11 &amp;lt;-- This slot information will be provided by Sun Grid Eingine&lt;BR /&gt;$ mpirun -np 2 -machinefile machinefile -rf rankfile -x OMP_NUM_THREADS &lt;BR /&gt;-x KMP_AFFINITY ./affinity&lt;BR /&gt;hostname = node1, rank = 0, thread = 0, affinity = 1&lt;BR /&gt;hostname = node1, rank = 0, thread = 1, affinity = 2&lt;BR /&gt;hostname = node1, rank = 0, thread = 2, affinity = 6&lt;BR /&gt;hostname = node1, rank = 0, thread = 3, affinity = 10&lt;BR /&gt;hostname = node2, rank = 1, thread = 0, affinity = 1&lt;BR /&gt;hostname = node2, rank = 1, thread = 1, affinity = 4&lt;BR /&gt;hostname = node2, rank = 1, thread = 2, affinity = 7&lt;BR /&gt;hostname = node2, rank = 1, thread = 3, affinity = 11&lt;BR /&gt;&lt;BR /&gt;Could you tell me how to pin with Intel Compiler + Intel MPI ?&lt;BR /&gt;&lt;BR /&gt;Thank you in advance.&lt;BR /&gt;&lt;BR /&gt;Sincerely,&lt;BR /&gt;T.Ikeda</description>
      <pubDate>Thu, 16 Dec 2010 01:43:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-MPI-Library/Intel-MPI-strange-behavor-with-I-MPI-PIN-DOMAIN/m-p/764420#M40</guid>
      <dc:creator>iketeru</dc:creator>
      <dc:date>2010-12-16T01:43:33Z</dc:date>
    </item>
  </channel>
</rss>

