<?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 ippiRotate performance in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796493#M2790</link>
    <description>It would be nice to see a test case. Could you provide it?&lt;BR /&gt;&lt;BR /&gt;I think that performance impact is a combination of the following:&lt;BR /&gt;&lt;BR /&gt;- &lt;STRONG&gt;3&lt;/STRONG&gt; planes of&lt;STRONG&gt;4008x2672&lt;/STRONG&gt; each;&lt;BR /&gt;&lt;BR /&gt;- some impact from performance of '&lt;STRONG&gt;sin&lt;/STRONG&gt;' and '&lt;STRONG&gt;cos&lt;/STRONG&gt;' functions used internallyby &lt;STRONG&gt;IPP&lt;/STRONG&gt;, when angles are not&lt;BR /&gt; &lt;STRONG&gt;90&lt;/STRONG&gt;, &lt;STRONG&gt;180&lt;/STRONG&gt; or &lt;STRONG&gt;270&lt;/STRONG&gt; degrees.You know how a new pixel's position is calculated: wx = x*cosA - y*sinA and&lt;BR /&gt; wy = x*sinA + y*cosA. So, you have 4 multiplicationsand2 adds/subs. In total, there are more than &lt;STRONG&gt;192&lt;/STRONG&gt;&lt;BR /&gt; million of FP operations to rotate an image for5 degrees, for example;&lt;BR /&gt;&lt;BR /&gt;- a performance of aninterpolation algorithm.&lt;BR /&gt;&lt;BR /&gt;I see more and more caseslike yours since sizes of imageshavedramatically increased.&lt;STRONG&gt;Nikon&lt;/STRONG&gt;&lt;BR /&gt;recently announced a &lt;STRONG&gt;36MP&lt;/STRONG&gt; DSLR camera.&lt;STRONG&gt;Nokia&lt;/STRONG&gt; announced a&lt;STRONG&gt;41MP&lt;/STRONG&gt; smartphone. I don't know if &lt;STRONG&gt;Intel&lt;/STRONG&gt;&lt;BR /&gt;Software Engineers evertested &lt;STRONG&gt;IPP&lt;/STRONG&gt; with images like I mentioned above. I'm personally interested in&lt;BR /&gt;processing of&lt;STRONG&gt;32Kx32K&lt;/STRONG&gt; images and larger.&lt;BR /&gt;&lt;BR /&gt;By the way, I saw a singnificantly worse performance from &lt;STRONG&gt;Microsoft&lt;/STRONG&gt;'s ImagingAPI. It is simply impossible&lt;BR /&gt;to use!&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;BR /&gt;</description>
    <pubDate>Tue, 06 Mar 2012 15:51:23 GMT</pubDate>
    <dc:creator>SergeyKostrov</dc:creator>
    <dc:date>2012-03-06T15:51:23Z</dc:date>
    <item>
      <title>ippirotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796490#M2787</link>
      <description>hi,&lt;BR /&gt;&lt;BR /&gt;for some reason, i have to use ippirotate_8uC3R for a 4008 * 2672 RGB image, but this function will take more than 1 second to be processed...it's crazy.....&lt;BR /&gt;&lt;BR /&gt;the CPU we are using is i7-2600, since ippirotate is not threaded, I guess it will run only on one Core.&lt;BR /&gt;&lt;BR /&gt;is there any way to make it faster? or replace itby other functions?&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Tue, 06 Mar 2012 03:11:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796490#M2787</guid>
      <dc:creator>Lamp</dc:creator>
      <dc:date>2012-03-06T03:11:18Z</dc:date>
    </item>
    <item>
      <title>ippirotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796491#M2788</link>
      <description>&lt;P&gt;it looks like differentinterpolation mode will effect the time a lot,&lt;BR /&gt;&lt;BR /&gt;test on my laptop&lt;BR /&gt;&lt;BR /&gt;IPPI_INTER_CUBIC 2.4 s&lt;BR /&gt;IPPI_INTER_LINEAR 0.7 s&lt;BR /&gt;IPPI_INTER_NN0.2 s&lt;BR /&gt;&lt;BR /&gt;is there a big difference for thequality of returned image?&lt;/P&gt;</description>
      <pubDate>Tue, 06 Mar 2012 05:17:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796491#M2788</guid>
      <dc:creator>Lamp</dc:creator>
      <dc:date>2012-03-06T05:17:33Z</dc:date>
    </item>
    <item>
      <title>ippirotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796492#M2789</link>
      <description>Are you doing 90 degree angles, or any angles?&lt;BR /&gt;</description>
      <pubDate>Tue, 06 Mar 2012 10:29:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796492#M2789</guid>
      <dc:creator>Thomas_Jensen1</dc:creator>
      <dc:date>2012-03-06T10:29:57Z</dc:date>
    </item>
    <item>
      <title>ippiRotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796493#M2790</link>
      <description>It would be nice to see a test case. Could you provide it?&lt;BR /&gt;&lt;BR /&gt;I think that performance impact is a combination of the following:&lt;BR /&gt;&lt;BR /&gt;- &lt;STRONG&gt;3&lt;/STRONG&gt; planes of&lt;STRONG&gt;4008x2672&lt;/STRONG&gt; each;&lt;BR /&gt;&lt;BR /&gt;- some impact from performance of '&lt;STRONG&gt;sin&lt;/STRONG&gt;' and '&lt;STRONG&gt;cos&lt;/STRONG&gt;' functions used internallyby &lt;STRONG&gt;IPP&lt;/STRONG&gt;, when angles are not&lt;BR /&gt; &lt;STRONG&gt;90&lt;/STRONG&gt;, &lt;STRONG&gt;180&lt;/STRONG&gt; or &lt;STRONG&gt;270&lt;/STRONG&gt; degrees.You know how a new pixel's position is calculated: wx = x*cosA - y*sinA and&lt;BR /&gt; wy = x*sinA + y*cosA. So, you have 4 multiplicationsand2 adds/subs. In total, there are more than &lt;STRONG&gt;192&lt;/STRONG&gt;&lt;BR /&gt; million of FP operations to rotate an image for5 degrees, for example;&lt;BR /&gt;&lt;BR /&gt;- a performance of aninterpolation algorithm.&lt;BR /&gt;&lt;BR /&gt;I see more and more caseslike yours since sizes of imageshavedramatically increased.&lt;STRONG&gt;Nikon&lt;/STRONG&gt;&lt;BR /&gt;recently announced a &lt;STRONG&gt;36MP&lt;/STRONG&gt; DSLR camera.&lt;STRONG&gt;Nokia&lt;/STRONG&gt; announced a&lt;STRONG&gt;41MP&lt;/STRONG&gt; smartphone. I don't know if &lt;STRONG&gt;Intel&lt;/STRONG&gt;&lt;BR /&gt;Software Engineers evertested &lt;STRONG&gt;IPP&lt;/STRONG&gt; with images like I mentioned above. I'm personally interested in&lt;BR /&gt;processing of&lt;STRONG&gt;32Kx32K&lt;/STRONG&gt; images and larger.&lt;BR /&gt;&lt;BR /&gt;By the way, I saw a singnificantly worse performance from &lt;STRONG&gt;Microsoft&lt;/STRONG&gt;'s ImagingAPI. It is simply impossible&lt;BR /&gt;to use!&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;BR /&gt;</description>
      <pubDate>Tue, 06 Mar 2012 15:51:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796493#M2790</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-03-06T15:51:23Z</dc:date>
    </item>
    <item>
      <title>ippirotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796494#M2791</link>
      <description>any angles, between -1 and 1 for most of cases.</description>
      <pubDate>Wed, 07 Mar 2012 01:19:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796494#M2791</guid>
      <dc:creator>Lamp</dc:creator>
      <dc:date>2012-03-07T01:19:42Z</dc:date>
    </item>
    <item>
      <title>ippiRotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796495#M2792</link>
      <description>The type "Matrix" contais the size of image and a byte array.&lt;BR /&gt;&lt;BR /&gt;[cpp]Matrix&lt;BYTE&gt;^ IppBasicOperator::Rotate(Matrix&lt;BYTE&gt;^ source, double angle)
{
	Matrix&lt;BYTE&gt;^ ans = gcnew Matrix&lt;BYTE&gt;(source-&amp;gt;Size);

	IppiSize size = { source-&amp;gt;Size.Width / source-&amp;gt;PixelSize, source-&amp;gt;Size.Height };
	IppiRect roi = { 0, 0, source-&amp;gt;Size.Width, size.height };

	// Pin the matrix data
    pin_ptr&lt;BYTE&gt; pSource = &amp;amp;(source-&amp;gt;GetBuffer()[0]);
    pin_ptr&lt;BYTE&gt; pDest = &amp;amp;(ans-&amp;gt;GetBuffer()[0]);

	double xCenter = size.width / 2, yCenter = size.height / 2, xShift = 0, yShift = 0;
	ippiGetRotateShift(xCenter, yCenter, angle, &amp;amp;xShift, &amp;amp;yShift);

	int intep;
	if (angle == int::MaxValue)
	{
		// for debug test purpose
		intep = IPPI_INTER_NN;
	}
	else if (angle == int::MinValue)
	{
		// for debug test purpose
		intep = IPPI_INTER_CUBIC;
	}
	else
	{
		intep = IPPI_INTER_LINEAR;
	}

	if (source-&amp;gt;PixelFormat == PixelFormat::Format24bppRgb)
		ippiRotate_8u_C3R(pSource, size, roi.width, roi, pDest, roi.width, roi, angle, xShift, yShift, intep);
	else
		ippiRotate_8u_C1R(pSource, size, size.width, roi, pDest, size.width, roi, angle, xShift, yShift, intep);

	return ans;
}[/cpp]&lt;/BYTE&gt;&lt;/BYTE&gt;&lt;/BYTE&gt;&lt;/BYTE&gt;&lt;/BYTE&gt;&lt;/BYTE&gt;</description>
      <pubDate>Wed, 07 Mar 2012 01:26:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796495#M2792</guid>
      <dc:creator>Lamp</dc:creator>
      <dc:date>2012-03-07T01:26:18Z</dc:date>
    </item>
    <item>
      <title>ippiRotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796496#M2793</link>
      <description>It appears that you do not use IPP memory allocation functions.&lt;BR /&gt;If I'm correct, there is a speed penalty when the image buffer does not start on a 16-byte boundary, and when its scanline width in bytes is not a multiple of 16 (padding at the right).&lt;BR /&gt;&lt;BR /&gt;This is because Ipp uses SSE for most operations.&lt;BR /&gt;&lt;BR /&gt;Use ippiMalloc_8u_C1(w,h,Step) to allocate your source and dest buffers. Step is an output value.&lt;BR /&gt;</description>
      <pubDate>Wed, 07 Mar 2012 09:29:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796496#M2793</guid>
      <dc:creator>Thomas_Jensen1</dc:creator>
      <dc:date>2012-03-07T09:29:09Z</dc:date>
    </item>
    <item>
      <title>ippiRotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796497#M2794</link>
      <description>It is not really required to use FP to rotate any angle. One can use a combination of skewing.&lt;BR /&gt;&lt;BR /&gt;I do not know how Ipp implements rotation though.&lt;BR /&gt;</description>
      <pubDate>Wed, 07 Mar 2012 09:33:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796497#M2794</guid>
      <dc:creator>Thomas_Jensen1</dc:creator>
      <dc:date>2012-03-07T09:33:16Z</dc:date>
    </item>
    <item>
      <title>ippiRotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796498#M2795</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1331163581968="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=479826" href="https://community.intel.com/en-us/profile/479826/" class="basic"&gt;Lamp&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;&lt;SPAN&gt;...&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="comment"&gt; //Pinthematrixdata&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;STRONG&gt;pin_ptr&lt;BYTE&gt;pSource&lt;/BYTE&gt;&lt;/STRONG&gt;=&amp;amp;(source-&amp;gt;GetBuffer()[0]);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;STRONG&gt;pin_ptr&lt;BYTE&gt;pDest&lt;/BYTE&gt;&lt;/STRONG&gt;=&amp;amp;(ans-&amp;gt;GetBuffer()[0]);&lt;BR /&gt;...&lt;BR /&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;BR /&gt;I would look at these two assignments because in both cases &lt;SPAN style="text-decoration: underline;"&gt;smart-pointers&lt;/SPAN&gt; are used.&lt;BR /&gt;&lt;BR /&gt;Could you try something like:&lt;BR /&gt;&lt;BR /&gt; &lt;STRONG&gt;__declspec( align( 16 ) )&lt;/STRONG&gt; Byte *pSource = ...&lt;BR /&gt; &lt;STRONG&gt;__declspec( align( 16 ) )&lt;/STRONG&gt; Byte *pDest = ...&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;/DIV&gt;</description>
      <pubDate>Wed, 07 Mar 2012 23:46:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796498#M2795</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-03-07T23:46:41Z</dc:date>
    </item>
    <item>
      <title>ippiRotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796499#M2796</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1331164324468="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=368858" href="https://community.intel.com/en-us/profile/368858/" class="basic"&gt;Thomas Jensen&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;It appears that you do not use IPP memory allocation functions...&lt;/I&gt;&lt;/DIV&gt;&lt;BR /&gt;They could be called in another method(s) of &lt;STRONG&gt;IppBasicOperator&lt;/STRONG&gt; class.&lt;BR /&gt;&lt;BR /&gt;I alsoagree that alignment of pointers to image datahas to be taken into consideration.&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;/DIV&gt;</description>
      <pubDate>Wed, 07 Mar 2012 23:59:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796499#M2796</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-03-07T23:59:12Z</dc:date>
    </item>
    <item>
      <title>ippiRotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796500#M2797</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1331473937281="59" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=353541" href="https://community.intel.com/en-us/profile/353541/" class="basic"&gt;Sergey Kostrov&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1331473937281="60" jquery1331163581968="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=479826" href="https://community.intel.com/en-us/profile/479826/" class="basic"&gt;Lamp&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;&lt;SPAN&gt;...&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN class="comment"&gt; //Pinthematrixdata&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;STRONG&gt;pin_ptr&lt;BYTE&gt;pSource&lt;/BYTE&gt;&lt;/STRONG&gt;=&amp;amp;(source-&amp;gt;GetBuffer()[0]);&lt;BR /&gt;&lt;/SPAN&gt;&lt;SPAN&gt; &lt;STRONG&gt;pin_ptr&lt;BYTE&gt;pDest&lt;/BYTE&gt;&lt;/STRONG&gt;=&amp;amp;(ans-&amp;gt;GetBuffer()[0]);&lt;BR /&gt;...&lt;BR /&gt;&lt;/SPAN&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;BR /&gt;I would look at these two assignments because in both cases &lt;SPAN style="text-decoration: underline;"&gt;smart-pointers&lt;/SPAN&gt; are used.&lt;BR /&gt;&lt;BR /&gt;Could you try something like:&lt;BR /&gt;&lt;BR /&gt; &lt;STRONG&gt;__declspec( align( 16 ) )&lt;/STRONG&gt; Byte *pSource = ...&lt;BR /&gt; &lt;STRONG&gt;__declspec( align( 16 ) )&lt;/STRONG&gt; Byte *pDest = ...&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;/DIV&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;P&gt;I'll try toalign the data, but i don't know if it's possible... since it's a .NET application, have to pin it so GC will not move it in memory&lt;BR /&gt;&lt;BR /&gt;regards&lt;/P&gt;</description>
      <pubDate>Sun, 11 Mar 2012 14:13:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796500#M2797</guid>
      <dc:creator>Lamp</dc:creator>
      <dc:date>2012-03-11T14:13:03Z</dc:date>
    </item>
    <item>
      <title>ippiRotate performance</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796501#M2798</link>
      <description>&lt;DIV id="tiny_quote"&gt;&lt;DIV style="margin-left: 2px; margin-right: 2px;"&gt;Quoting &lt;A jquery1331490585328="58" rel="/en-us/services/profile/quick_profile.php?is_paid=&amp;amp;user_id=479826" href="https://community.intel.com/en-us/profile/479826/" class="basic"&gt;Lamp&lt;/A&gt;&lt;/DIV&gt;&lt;DIV style="background-color: #e5e5e5; margin-left: 2px; margin-right: 2px; border: 1px inset; padding: 5px;"&gt;&lt;I&gt;...for some reason, i have to use &lt;STRONG&gt;ippirotate_8uC3R&lt;/STRONG&gt; for a 4008 * 2672 RGB image, but this function will take more than 1 second to be processed...&lt;BR /&gt;&lt;/I&gt;&lt;/DIV&gt;&lt;BR /&gt;What software did you use to measure a performance of &lt;STRONG&gt;ippiRotate_8u_C3R&lt;/STRONG&gt; function?&lt;BR /&gt;Did you do this in a &lt;STRONG&gt;Debug&lt;/STRONG&gt; or &lt;STRONG&gt;Release&lt;/STRONG&gt; configuration?&lt;BR /&gt;&lt;BR /&gt;Best regards,&lt;BR /&gt;Sergey&lt;/DIV&gt;</description>
      <pubDate>Sun, 11 Mar 2012 18:32:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippirotate-performance/m-p/796501#M2798</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2012-03-11T18:32:20Z</dc:date>
    </item>
  </channel>
</rss>

