<?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 Hi Sérgio, in Intel® oneAPI Math Kernel Library</title>
    <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-of-gather-and-scatter-when-it-s-not-supported/m-p/1064896#M21875</link>
    <description>&lt;P&gt;Hi&amp;nbsp;Sérgio,&lt;/P&gt;

&lt;P&gt;I am not really understand why you mentioned gather, scatter instructions of MPI. Because avx instruction is normally for vectorized code which mkl used for vectorization operation. For instance, the mkl_dft_avx_gather_z_z is used for access discontinuous data elements. But the gather instruction for MPI mainly for collecting elements from many processes to one process. I am afraid the gather instruction for mkl is not used for MPI. Even you use MKL, not every function will required to call avx. for example, some blas 1 level function might not call avx instruction.&lt;/P&gt;

&lt;P&gt;Best regards,&lt;BR /&gt;
	Fiona&lt;/P&gt;</description>
    <pubDate>Wed, 26 Oct 2016 06:31:33 GMT</pubDate>
    <dc:creator>Zhen_Z_Intel</dc:creator>
    <dc:date>2016-10-26T06:31:33Z</dc:date>
    <item>
      <title>Use of gather and scatter when it's not supported</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-of-gather-and-scatter-when-it-s-not-supported/m-p/1064895#M21874</link>
      <description>&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;Hi there!&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em;"&gt;I am a MSc student in HPC, and I am currently working with Quantum Espresso, in order to improve their performance in a cluster environment.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;Recently I generated the call graph of the application through a machine with Ivy Bridge microarchitecture (Intel® Xeon® Processor E5-2670 v2), which uses AVX as extension of the instruction set, which supposedly does not support operations to gather and scatter with the MPI, but as you can see in the call graph excerpt from the link below, the application uses these operations by libmkl_avx.so library more precisely the following operations: mkl_dft_avx_gather_z_z and mkl_dft_avx_scatter_z_z.&lt;/P&gt;

&lt;P&gt;&lt;A href="http://imgur.com/k7754x8"&gt;http://imgur.com/k7754x8&lt;/A&gt;&lt;BR /&gt;
	&lt;BR /&gt;
	Someone can help me understand why this occur?&lt;BR /&gt;
	&lt;BR /&gt;
	Thanking you in advance, yours sincerely&lt;/P&gt;

&lt;P&gt;Sérgio Caldas&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 25 Oct 2016 16:09:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-of-gather-and-scatter-when-it-s-not-supported/m-p/1064895#M21874</guid>
      <dc:creator>Sérgio_Caldas</dc:creator>
      <dc:date>2016-10-25T16:09:47Z</dc:date>
    </item>
    <item>
      <title>Hi Sérgio,</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-of-gather-and-scatter-when-it-s-not-supported/m-p/1064896#M21875</link>
      <description>&lt;P&gt;Hi&amp;nbsp;Sérgio,&lt;/P&gt;

&lt;P&gt;I am not really understand why you mentioned gather, scatter instructions of MPI. Because avx instruction is normally for vectorized code which mkl used for vectorization operation. For instance, the mkl_dft_avx_gather_z_z is used for access discontinuous data elements. But the gather instruction for MPI mainly for collecting elements from many processes to one process. I am afraid the gather instruction for mkl is not used for MPI. Even you use MKL, not every function will required to call avx. for example, some blas 1 level function might not call avx instruction.&lt;/P&gt;

&lt;P&gt;Best regards,&lt;BR /&gt;
	Fiona&lt;/P&gt;</description>
      <pubDate>Wed, 26 Oct 2016 06:31:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-of-gather-and-scatter-when-it-s-not-supported/m-p/1064896#M21875</guid>
      <dc:creator>Zhen_Z_Intel</dc:creator>
      <dc:date>2016-10-26T06:31:33Z</dc:date>
    </item>
    <item>
      <title>Hi Fiona</title>
      <link>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-of-gather-and-scatter-when-it-s-not-supported/m-p/1064897#M21876</link>
      <description>&lt;P dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;SPAN id="docs-internal-guid-c65fcaf5-072d-4924-a97f-ba2449cc7223"&gt;&lt;SPAN style="font-size: 13.333333333333332px; font-family: Arial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Hi Fiona&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;SPAN id="docs-internal-guid-c65fcaf5-072d-4924-a97f-ba2449cc7223"&gt;&lt;SPAN style="font-size: 13.333333333333332px; font-family: Arial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Apologies for my previous post. I was worried with a distributed memory project and I mixed the terms "gather &amp;amp; scatter" in a vector computer environment with the same terms in MPI…&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;SPAN id="docs-internal-guid-c65fcaf5-072d-4924-a97f-ba2449cc7223"&gt;&lt;SPAN style="font-size: 13.333333333333332px; font-family: Arial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;I’m aware that since the early Cray vector machines, these could access vector operands scattered in memory and store back the resulting vector in disjoint memory locations. And also that the SIMD extensions in Intel processors did not support these features until AVX 2 (and only gather) and AVX-512 (both gather and scatter).&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;SPAN id="docs-internal-guid-c65fcaf5-072d-4924-a97f-ba2449cc7223"&gt;&lt;SPAN style="font-size: 13.333333333333332px; font-family: Arial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;However, when I ran a particular code with QE on a cluster node with dual Ivy Bridge chips (that only support AVX and not AVX 2), I analysed through a call graph the functions that were used and I noticed that the code used 2 AVX functions (&lt;EM&gt;mkl_dft_avx_gather_z_z&lt;/EM&gt; and &lt;EM&gt;mkl_dft_avx_scatter_z_z&lt;/EM&gt;) that are not supported in the Ivy Bridge microarchitecture hardware.&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;SPAN id="docs-internal-guid-c65fcaf5-072d-4924-a97f-ba2449cc7223"&gt;&lt;SPAN style="font-size: 13.333333333333332px; font-family: Arial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Could you please explain what is happening?&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;SPAN id="docs-internal-guid-c65fcaf5-072d-4924-a97f-ba2449cc7223"&gt;&lt;SPAN style="font-size: 13.333333333333332px; font-family: Arial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Best Regards&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;

&lt;P dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt;"&gt;&lt;SPAN&gt;&lt;SPAN style="font-size: 13.333333333333332px; font-family: Arial; font-variant-ligatures: normal; font-variant-position: normal; font-variant-numeric: normal; font-variant-alternates: normal; font-variant-east-asian: normal; vertical-align: baseline; white-space: pre-wrap;"&gt;Sérgio Caldas&lt;/SPAN&gt;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 27 Oct 2016 17:27:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-oneAPI-Math-Kernel-Library/Use-of-gather-and-scatter-when-it-s-not-supported/m-p/1064897#M21876</guid>
      <dc:creator>Sérgio_Caldas</dc:creator>
      <dc:date>2016-10-27T17:27:00Z</dc:date>
    </item>
  </channel>
</rss>

