<?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 In the latest Intel Compiler in Software Archive</title>
    <link>https://community.intel.com/t5/Software-Archive/Porting-MIC-code-to-AVX512/m-p/966290#M22955</link>
    <description>&lt;P&gt;In the latest Intel Compiler documentation for AVX512, the gather intrinsic is described as&lt;/P&gt;
&lt;P&gt;__m512i _mm512_i32gather_epi32(__m512i vindex, void const* base_addr, _MM_UPCONV_EPI32_ENUM upconv, int scale, int hint);&lt;/P&gt;
&lt;P&gt;but in the&amp;nbsp;zmmintrin.h it occurs only in the form&lt;/P&gt;
&lt;P&gt;__m512i _mm512_i32gather_epi32(__m512i vindex, void const* base_addr, int scale);&lt;/P&gt;
&lt;P&gt;so without an upconvert and without a memory hint. So the question is what version of gather is correct?&lt;/P&gt;
&lt;P&gt;If the&amp;nbsp;zmmintrin.h is correct this would mean that the documentation should be updated, since the upconvert and the memory hint are no longer supported with a gather on AVX512.&lt;/P&gt;</description>
    <pubDate>Thu, 07 Nov 2013 22:11:52 GMT</pubDate>
    <dc:creator>Clothoid</dc:creator>
    <dc:date>2013-11-07T22:11:52Z</dc:date>
    <item>
      <title>Porting MIC code to AVX512</title>
      <link>https://community.intel.com/t5/Software-Archive/Porting-MIC-code-to-AVX512/m-p/966288#M22953</link>
      <description>&lt;P&gt;With the latest C++ compiler 14.0 SP1, Update 1 it is now possible to use the Intel compiler to port code from MIC to AVX512.&lt;/P&gt;
&lt;P&gt;When starting to port code to AVX512, i noticed that some functionality that was available on MIC could be missing.&lt;/P&gt;
&lt;P&gt;For example on MIC i could gather 8 or 16 bit data and upconvert this into an integer, e.g. for signed 16 bit integer data&lt;/P&gt;
&lt;P&gt;_mm512_i32extgather_epi32(aIndexVector, aArray, _MM_UPCONV_EPI32_SINT16, _MM_SCALE_2, _MM_HINT_NONE);&lt;/P&gt;
&lt;P&gt;When trying to porting this to AVX512 i was not able to achieve exacly the same with the new ISA..&lt;/P&gt;
&lt;P&gt;Interestingly, the compiler documentation that comes with the latest SP1 update1 compiler mentions that upconversion is still possible for gather with AVX512 and one can find the follwoing AVX512 intrinsic in the docu&lt;/P&gt;
&lt;P&gt;_mm512_i32gather_epi32&lt;/P&gt;
&lt;P&gt;extern __m512i __cdecl _mm512_i32gather_epi32(__m512i vindex, void const* base_addr, _MM_UPCONV_EPI32_ENUM upconv, int scale, int hint);&lt;/P&gt;
&lt;P&gt;But i can not find a suitable intrinsic for AVX512 that is able to do this in the zmmintrin.h file that works for AVX512.&lt;/P&gt;
&lt;P&gt;Is the AVX512 documentation wrong - or the zmmintrin.h file that does not contain such an AVX512 gather instruction that allows upconversion?&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Sat, 26 Oct 2013 13:38:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Porting-MIC-code-to-AVX512/m-p/966288#M22953</guid>
      <dc:creator>Clothoid</dc:creator>
      <dc:date>2013-10-26T13:38:10Z</dc:date>
    </item>
    <item>
      <title>Ok, so in zmmintrin.h there</title>
      <link>https://community.intel.com/t5/Software-Archive/Porting-MIC-code-to-AVX512/m-p/966289#M22954</link>
      <description>&lt;P&gt;Ok, so in&amp;nbsp;zmmintrin.h there is:&lt;/P&gt;
&lt;P&gt;#define _mm512_i32gather_epi32(index, addr, scale) \&lt;BR /&gt; _mm512_i32extgather_epi32((index), (addr), _MM_UPCONV_EPI32_NONE, \&lt;BR /&gt; (scale), _MM_HINT_NONE)&lt;/P&gt;
&lt;P&gt;but what you need is:&lt;/P&gt;
&lt;P&gt;#define _mm512_i32gather_epi32(index, addr, scale) \&lt;BR /&gt; _mm512_i32extgather_epi32((index), (addr), _MM_UPCONV_EPI32_ENUM, \&lt;BR /&gt; (scale), _MM_HINT_NONE)&lt;/P&gt;
&lt;P&gt;Have I got this right? If so, I will see if I can find someone to tell me where it is or when it will be available.&lt;/P&gt;</description>
      <pubDate>Wed, 06 Nov 2013 01:08:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Porting-MIC-code-to-AVX512/m-p/966289#M22954</guid>
      <dc:creator>Frances_R_Intel</dc:creator>
      <dc:date>2013-11-06T01:08:08Z</dc:date>
    </item>
    <item>
      <title>In the latest Intel Compiler</title>
      <link>https://community.intel.com/t5/Software-Archive/Porting-MIC-code-to-AVX512/m-p/966290#M22955</link>
      <description>&lt;P&gt;In the latest Intel Compiler documentation for AVX512, the gather intrinsic is described as&lt;/P&gt;
&lt;P&gt;__m512i _mm512_i32gather_epi32(__m512i vindex, void const* base_addr, _MM_UPCONV_EPI32_ENUM upconv, int scale, int hint);&lt;/P&gt;
&lt;P&gt;but in the&amp;nbsp;zmmintrin.h it occurs only in the form&lt;/P&gt;
&lt;P&gt;__m512i _mm512_i32gather_epi32(__m512i vindex, void const* base_addr, int scale);&lt;/P&gt;
&lt;P&gt;so without an upconvert and without a memory hint. So the question is what version of gather is correct?&lt;/P&gt;
&lt;P&gt;If the&amp;nbsp;zmmintrin.h is correct this would mean that the documentation should be updated, since the upconvert and the memory hint are no longer supported with a gather on AVX512.&lt;/P&gt;</description>
      <pubDate>Thu, 07 Nov 2013 22:11:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Archive/Porting-MIC-code-to-AVX512/m-p/966290#M22955</guid>
      <dc:creator>Clothoid</dc:creator>
      <dc:date>2013-11-07T22:11:52Z</dc:date>
    </item>
  </channel>
</rss>

