<?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-place operation with ippsAdd_32u in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815416#M4239</link>
    <description>Hi,&lt;BR /&gt;&lt;BR /&gt;Actually I did some testing and it is working but should I expect to have some undefined behaviour sometimes ?&lt;BR /&gt;&lt;BR /&gt;output:&lt;BR /&gt;&lt;BR /&gt;u32a&lt;BR /&gt;1 2 3 4 5 6 7 8 9 10&lt;BR /&gt;&lt;BR /&gt;u32b&lt;BR /&gt;1 4 9 16 25 36 49 64 81 100&lt;BR /&gt;&lt;BR /&gt;ippStsNoErr: No error, it's OK&lt;BR /&gt;&lt;BR /&gt;result u32b&lt;BR /&gt;2 6 12 20 30 42 56 72 90 110&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;code:&lt;BR /&gt;&lt;BR /&gt;const int len = 10;&lt;BR /&gt;&lt;BR /&gt;Ipp32u * u32a = ippsMalloc_32u( len );&lt;BR /&gt;Ipp32u * u32b = ippsMalloc_32u( len );&lt;BR /&gt;&lt;BR /&gt;for( int i=0; i &amp;lt; len; i++ )&lt;BR /&gt;{&lt;BR /&gt; u32a&lt;I&gt; = i+1;&lt;BR /&gt; u32b&lt;I&gt; = ( i+1 ) * ( i+1 );&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;cout &amp;lt;&amp;lt; "u32a" &amp;lt;&amp;lt; endl;&lt;BR /&gt;for( int i=0; i &amp;lt; len; i++ )&lt;BR /&gt;{&lt;BR /&gt; cout &amp;lt;&amp;lt; u32a&lt;I&gt; &amp;lt;&amp;lt; " ";&lt;BR /&gt;}&lt;BR /&gt;cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;&lt;BR /&gt;&lt;BR /&gt;cout &amp;lt;&amp;lt; "u32b" &amp;lt;&amp;lt; endl;&lt;BR /&gt;for( int i=0; i &amp;lt; len; i++ )&lt;BR /&gt;{&lt;BR /&gt; cout &amp;lt;&amp;lt; u32b&lt;I&gt; &amp;lt;&amp;lt; " ";&lt;BR /&gt;}&lt;BR /&gt;cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;&lt;BR /&gt;&lt;BR /&gt;IppStatus st = ippsAdd_32u( u32a, u32b, u32b, len );&lt;BR /&gt;cout &amp;lt;&amp;lt; ippGetStatusString( st ) &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;cout &amp;lt;&amp;lt; "result u32b" &amp;lt;&amp;lt; endl;&lt;BR /&gt;for( int i=0; i &amp;lt; len; i++ )&lt;BR /&gt;{&lt;BR /&gt; cout &amp;lt;&amp;lt; u32b&lt;I&gt; &amp;lt;&amp;lt; " ";&lt;BR /&gt;}&lt;BR /&gt;cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;&lt;BR /&gt; &lt;BR /&gt;Best regards,&lt;BR /&gt;Markus&lt;BR /&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;</description>
    <pubDate>Thu, 30 Sep 2010 06:38:52 GMT</pubDate>
    <dc:creator>attemarkus</dc:creator>
    <dc:date>2010-09-30T06:38:52Z</dc:date>
    <item>
      <title>In-place operation with ippsAdd_32u</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815414#M4237</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;There is not in-place function ippsAdd_32u_I. &lt;BR /&gt;&lt;BR /&gt;Nevertheless is it allowed to to use same source and destination array ?:&lt;BR /&gt;&lt;BR /&gt;Ipp32u a[5];&lt;BR /&gt;Ipp32u b[5];&lt;BR /&gt;&lt;BR /&gt;ippsAdd_32u( a, b, b, 5 )&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Markus</description>
      <pubDate>Wed, 29 Sep 2010 09:21:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815414#M4237</guid>
      <dc:creator>attemarkus</dc:creator>
      <dc:date>2010-09-29T09:21:10Z</dc:date>
    </item>
    <item>
      <title>In-place operation with ippsAdd_32u</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815415#M4238</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;I think not possible to use same source and destination array for&lt;B&gt; not in-place function ippsAdd_32u.&lt;/B&gt;&lt;/P&gt;&lt;P&gt;As mentioned in the &lt;A href="http://software.intel.com/sites/products/documentation/hpc/ipp/ipps/ipps_ch5/functn_Add.html"&gt;&lt;SPAN style="text-decoration: underline;"&gt;documentation&lt;/SPAN&gt;&lt;/A&gt;, pSrcDst is Pointer to the source and destination vector for &lt;B&gt;in-place operation.&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Good question.&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;&lt;/B&gt;&lt;B&gt;Regards,&lt;/B&gt;&lt;/P&gt;&lt;P&gt;&lt;B&gt;Naveen Gv&lt;/B&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 29 Sep 2010 11:08:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815415#M4238</guid>
      <dc:creator>Naveen_G_Intel</dc:creator>
      <dc:date>2010-09-29T11:08:15Z</dc:date>
    </item>
    <item>
      <title>In-place operation with ippsAdd_32u</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815416#M4239</link>
      <description>Hi,&lt;BR /&gt;&lt;BR /&gt;Actually I did some testing and it is working but should I expect to have some undefined behaviour sometimes ?&lt;BR /&gt;&lt;BR /&gt;output:&lt;BR /&gt;&lt;BR /&gt;u32a&lt;BR /&gt;1 2 3 4 5 6 7 8 9 10&lt;BR /&gt;&lt;BR /&gt;u32b&lt;BR /&gt;1 4 9 16 25 36 49 64 81 100&lt;BR /&gt;&lt;BR /&gt;ippStsNoErr: No error, it's OK&lt;BR /&gt;&lt;BR /&gt;result u32b&lt;BR /&gt;2 6 12 20 30 42 56 72 90 110&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;code:&lt;BR /&gt;&lt;BR /&gt;const int len = 10;&lt;BR /&gt;&lt;BR /&gt;Ipp32u * u32a = ippsMalloc_32u( len );&lt;BR /&gt;Ipp32u * u32b = ippsMalloc_32u( len );&lt;BR /&gt;&lt;BR /&gt;for( int i=0; i &amp;lt; len; i++ )&lt;BR /&gt;{&lt;BR /&gt; u32a&lt;I&gt; = i+1;&lt;BR /&gt; u32b&lt;I&gt; = ( i+1 ) * ( i+1 );&lt;BR /&gt;}&lt;BR /&gt;&lt;BR /&gt;cout &amp;lt;&amp;lt; "u32a" &amp;lt;&amp;lt; endl;&lt;BR /&gt;for( int i=0; i &amp;lt; len; i++ )&lt;BR /&gt;{&lt;BR /&gt; cout &amp;lt;&amp;lt; u32a&lt;I&gt; &amp;lt;&amp;lt; " ";&lt;BR /&gt;}&lt;BR /&gt;cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;&lt;BR /&gt;&lt;BR /&gt;cout &amp;lt;&amp;lt; "u32b" &amp;lt;&amp;lt; endl;&lt;BR /&gt;for( int i=0; i &amp;lt; len; i++ )&lt;BR /&gt;{&lt;BR /&gt; cout &amp;lt;&amp;lt; u32b&lt;I&gt; &amp;lt;&amp;lt; " ";&lt;BR /&gt;}&lt;BR /&gt;cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;&lt;BR /&gt;&lt;BR /&gt;IppStatus st = ippsAdd_32u( u32a, u32b, u32b, len );&lt;BR /&gt;cout &amp;lt;&amp;lt; ippGetStatusString( st ) &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;cout &amp;lt;&amp;lt; "result u32b" &amp;lt;&amp;lt; endl;&lt;BR /&gt;for( int i=0; i &amp;lt; len; i++ )&lt;BR /&gt;{&lt;BR /&gt; cout &amp;lt;&amp;lt; u32b&lt;I&gt; &amp;lt;&amp;lt; " ";&lt;BR /&gt;}&lt;BR /&gt;cout &amp;lt;&amp;lt; endl &amp;lt;&amp;lt; endl;&lt;BR /&gt; &lt;BR /&gt;Best regards,&lt;BR /&gt;Markus&lt;BR /&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;&lt;/I&gt;</description>
      <pubDate>Thu, 30 Sep 2010 06:38:52 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815416#M4239</guid>
      <dc:creator>attemarkus</dc:creator>
      <dc:date>2010-09-30T06:38:52Z</dc:date>
    </item>
    <item>
      <title>In-place operation with ippsAdd_32u</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815417#M4240</link>
      <description>Hi Markus,&lt;BR /&gt;&lt;BR /&gt;we do separate in-place and out-of-place functions at API level specifically to allow optimized code do not worry about arrays overlapping for out-of-place case. This allow to achieve additional performance benefits. Although forsome particular functions and particular cpu-specific optimization out-of-place case could work the same way as in-place caseit is notguaranteed.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir</description>
      <pubDate>Thu, 30 Sep 2010 20:05:36 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/In-place-operation-with-ippsAdd-32u/m-p/815417#M4240</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2010-09-30T20:05:36Z</dc:date>
    </item>
  </channel>
</rss>

