<?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 Copy (move) pixels within an Image in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857576#M7385</link>
    <description>Hello,&lt;BR /&gt;&lt;BR /&gt;Maybe I'm just unable to find it (but I have been browsing the manuals for an hour) but I can't seem to locate a function like ippiCopy_xx that works for overlapping RIOs. ippiCopy doesn't work if the memory areas overlap unless the delta x and delta y are both zero or negative.&lt;BR /&gt;&lt;BR /&gt;It's quite common to want to move around an image within another one so I one such function must exist. It's like memcpy vs memmove. Can someone point me in the right direction?&lt;BR /&gt;&lt;BR /&gt;Btw, am I suppost to post these things on the premier support site?&lt;BR /&gt;&lt;BR /&gt;Cheers,&lt;BR /&gt;Mikael</description>
    <pubDate>Wed, 30 Sep 2009 16:22:07 GMT</pubDate>
    <dc:creator>Mikael_Grev</dc:creator>
    <dc:date>2009-09-30T16:22:07Z</dc:date>
    <item>
      <title>Copy (move) pixels within an Image</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857576#M7385</link>
      <description>Hello,&lt;BR /&gt;&lt;BR /&gt;Maybe I'm just unable to find it (but I have been browsing the manuals for an hour) but I can't seem to locate a function like ippiCopy_xx that works for overlapping RIOs. ippiCopy doesn't work if the memory areas overlap unless the delta x and delta y are both zero or negative.&lt;BR /&gt;&lt;BR /&gt;It's quite common to want to move around an image within another one so I one such function must exist. It's like memcpy vs memmove. Can someone point me in the right direction?&lt;BR /&gt;&lt;BR /&gt;Btw, am I suppost to post these things on the premier support site?&lt;BR /&gt;&lt;BR /&gt;Cheers,&lt;BR /&gt;Mikael</description>
      <pubDate>Wed, 30 Sep 2009 16:22:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857576#M7385</guid>
      <dc:creator>Mikael_Grev</dc:creator>
      <dc:date>2009-09-30T16:22:07Z</dc:date>
    </item>
    <item>
      <title>Re: Copy (move) pixels within an Image</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857577#M7386</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
Hi Mikael,&lt;BR /&gt;&lt;BR /&gt;no sense to submit simple 'how to' questions to premier support channel. That is what this forum stands for.&lt;BR /&gt;&lt;BR /&gt;To copy overlapped memory regions you may need to use ippsMove function. We do not have 2D variant of this function, so youneed todo copy on row by row basis.&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;</description>
      <pubDate>Wed, 30 Sep 2009 19:53:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857577#M7386</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-09-30T19:53:56Z</dc:date>
    </item>
    <item>
      <title>Re: Copy (move) pixels within an Image</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857578#M7387</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
Thank you, then I know.&lt;BR /&gt;&lt;BR /&gt;Isn't it a bit odd that a 2D version is missing? Especially since it is quite easy, and without performance implcations, to modify a normal copy to be overlap sensitive?&lt;BR /&gt;&lt;BR /&gt;Anyway, thanks for the answer. And the otherwise very good lib!&lt;BR /&gt;&lt;BR /&gt;Cheers,&lt;BR /&gt;Mikael&lt;BR /&gt;</description>
      <pubDate>Wed, 30 Sep 2009 21:24:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857578#M7387</guid>
      <dc:creator>Mikael_Grev</dc:creator>
      <dc:date>2009-09-30T21:24:33Z</dc:date>
    </item>
    <item>
      <title>Re: Copy (move) pixels within an Image</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857579#M7388</link>
      <description>&lt;DIV style="margin:0px;"&gt;&lt;/DIV&gt;
There is performance implication if normal copy had to also support overlapped regions. That is why special functions implemented in C run time and in IPP libraries.&lt;BR /&gt;&lt;BR /&gt;For 2D case you can just write a wrapper on top of ippsMove function and potentially even thread this with OpenMP. This will be very similar to what it may look like if implemented in IPP&lt;BR /&gt;&lt;BR /&gt;Thanks for your feedback. Can I ask you what kind of applications you develop with IPP? What are the most important features of IPP from your prospective and what are the weak areas?&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;</description>
      <pubDate>Fri, 02 Oct 2009 08:31:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857579#M7388</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-10-02T08:31:28Z</dc:date>
    </item>
    <item>
      <title>Re: Copy (move) pixels within an Image</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857580#M7389</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt; There is performance implication if normal copy had to also support overlapped regions. That is why special functions implemented in C run time and in IPP libraries.&lt;BR /&gt;&lt;BR /&gt;For 2D case you can just write a wrapper on top of ippsMove function and potentially even thread this with OpenMP. This will be very similar to what it may look like if implemented in IPP&lt;BR /&gt;&lt;BR /&gt;Thanks for your feedback. Can I ask you what kind of applications you develop with IPP? What are the most important features of IPP from your prospective and what are the weak areas?&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;Thanks Vladimir.&lt;BR /&gt;&lt;BR /&gt;On my system memmove and memcpy seems to have the same speed. Actually you just iterate from the start or beginning depending on if the dest is before source or vice versa. Really simple unless you have some really funky optimizations (which you might have, I have no idea).&lt;BR /&gt;&lt;BR /&gt;I have made such a wrapper. Speed is satisfactoy.&lt;BR /&gt;&lt;BR /&gt;I am creating a VNC-like app with a very advanced codec. It is the high level parts that are advanced btw, and I am using IPP for parts of the codec. Mostly the Jpeg codec and some copy functionality.&lt;BR /&gt;&lt;BR /&gt;I find the speed most satisfactory for the most part. I miss the Java way of documentation, but that is more a C/C++ problem. &lt;BR /&gt;&lt;BR /&gt;The only performance problem I have found is in the function that swaps bytes in an int, essentially converting from lille- to big endian and back. My own function is much faster there (using bswap asm).&lt;BR /&gt;&lt;BR /&gt;You should have a look at quicklz.com. It is an _extremely_ fast compressor/decompressor. Much much faster than anything you have I think. One problem is that if I compile it with ICC 11.1 and enable -parallel then it sucks upp all 4+4 cores on my Mac Pro i7 and performs 50% worse... Strange.&lt;BR /&gt;&lt;BR /&gt;Keep up the good work!&lt;BR /&gt;&lt;BR /&gt;Cheers,&lt;BR /&gt;Mikael&lt;BR /&gt;</description>
      <pubDate>Fri, 02 Oct 2009 13:34:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857580#M7389</guid>
      <dc:creator>Mikael_Grev</dc:creator>
      <dc:date>2009-10-02T13:34:39Z</dc:date>
    </item>
    <item>
      <title>Re: Copy (move) pixels within an Image</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857581#M7390</link>
      <description>Thanks Mikael,&lt;BR /&gt;&lt;BR /&gt;regarding quicklz speed - the key phrase I found on the link you provided I believe was: "Speed is favored over backwards compatibility"&lt;BR /&gt;&lt;BR /&gt;It is always possible to simplify the things in favour of performance. But the next question is what customers will do with their already existed achives?&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;</description>
      <pubDate>Tue, 06 Oct 2009 16:40:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857581#M7390</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2009-10-06T16:40:37Z</dc:date>
    </item>
    <item>
      <title>Re: Copy (move) pixels within an Image</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857582#M7391</link>
      <description>&lt;DIV style="margin:0px;"&gt;
&lt;DIV id="quote_reply" style="width: 100%; margin-top: 5px;"&gt;
&lt;DIV style="margin-left:2px;margin-right:2px;"&gt;Quoting - &lt;A href="https://community.intel.com/en-us/profile/336498"&gt;Vladimir Dudnik (Intel)&lt;/A&gt;&lt;/DIV&gt;
&lt;DIV style="background-color:#E5E5E5; padding:5px;border: 1px; border-style: inset;margin-left:2px;margin-right:2px;"&gt;&lt;EM&gt;Thanks Mikael,&lt;BR /&gt;&lt;BR /&gt;regarding quicklz speed - the key phrase I found on the link you provided I believe was: "Speed is favored over backwards compatibility"&lt;BR /&gt;&lt;BR /&gt;It is always possible to simplify the things in favour of performance. But the next question is what customers will do with their already existed achives?&lt;BR /&gt;&lt;BR /&gt;Regards,&lt;BR /&gt; Vladimir&lt;BR /&gt;&lt;/EM&gt;&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;/DIV&gt;
&lt;BR /&gt;True, but there are good use cases, like my codec which encode+decode on the other side in real time. I can always keep the two in sync version wise.&lt;BR /&gt;&lt;BR /&gt;Cheers,&lt;BR /&gt;Mikael&lt;BR /&gt;</description>
      <pubDate>Tue, 06 Oct 2009 17:38:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Copy-move-pixels-within-an-Image/m-p/857582#M7391</guid>
      <dc:creator>Mikael_Grev</dc:creator>
      <dc:date>2009-10-06T17:38:53Z</dc:date>
    </item>
  </channel>
</rss>

