<?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 ippiPyramidLayerDown, ippiPyramidLayerUp Slow in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiPyramidLayerDown-ippiPyramidLayerUp-Slow/m-p/980722#M21346</link>
    <description>&lt;P&gt;Previously I was using IPP 6.0 and doing pyramid construction. I did this using the ippConvolveValid functions, 2:1 integral decimation (c++ code), 1:2 expansion (c++ code), and the ippSub function. Using IPP 8.0 I performed the same tasks, and obtained identical results using the new ippiPyramid functions as described in the example in the documentation. My code is now very similar to the example.&lt;/P&gt;

&lt;P&gt;However, the new methods are much slower than the previous methods (about 7x slower). &amp;nbsp;I am wondering if the reason is that the new methods are more generic allowing for bilinear sampling? Can we force integer 2:1 sampling? Can it be optimized further?&lt;/P&gt;

&lt;P&gt;While the new code is much simpler, I can't use the new functions due to their speed.&lt;/P&gt;

&lt;P&gt;I am doing a 4 level laplacian pyramid with symmetrical filter of length 5.&lt;/P&gt;

&lt;P&gt;Happy to provide any other information if this helps.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 10 Feb 2014 19:02:39 GMT</pubDate>
    <dc:creator>C_W_</dc:creator>
    <dc:date>2014-02-10T19:02:39Z</dc:date>
    <item>
      <title>ippiPyramidLayerDown, ippiPyramidLayerUp Slow</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiPyramidLayerDown-ippiPyramidLayerUp-Slow/m-p/980722#M21346</link>
      <description>&lt;P&gt;Previously I was using IPP 6.0 and doing pyramid construction. I did this using the ippConvolveValid functions, 2:1 integral decimation (c++ code), 1:2 expansion (c++ code), and the ippSub function. Using IPP 8.0 I performed the same tasks, and obtained identical results using the new ippiPyramid functions as described in the example in the documentation. My code is now very similar to the example.&lt;/P&gt;

&lt;P&gt;However, the new methods are much slower than the previous methods (about 7x slower). &amp;nbsp;I am wondering if the reason is that the new methods are more generic allowing for bilinear sampling? Can we force integer 2:1 sampling? Can it be optimized further?&lt;/P&gt;

&lt;P&gt;While the new code is much simpler, I can't use the new functions due to their speed.&lt;/P&gt;

&lt;P&gt;I am doing a 4 level laplacian pyramid with symmetrical filter of length 5.&lt;/P&gt;

&lt;P&gt;Happy to provide any other information if this helps.&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 10 Feb 2014 19:02:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiPyramidLayerDown-ippiPyramidLayerUp-Slow/m-p/980722#M21346</guid>
      <dc:creator>C_W_</dc:creator>
      <dc:date>2014-02-10T19:02:39Z</dc:date>
    </item>
    <item>
      <title>7x slower!!!  </title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiPyramidLayerDown-ippiPyramidLayerUp-Slow/m-p/980723#M21347</link>
      <description>&lt;P&gt;7x slower!!! &amp;nbsp;&lt;/P&gt;

&lt;P&gt;Can you give more details: OS, 32 or 64 bit code .. serial or threaded versions of IPP have been linked?&lt;/P&gt;

&lt;P&gt;regard to example - do you mean this example: &amp;nbsp;&lt;/P&gt;

&lt;H2 style="color: rgb(8, 96, 168); font-weight: lighter; margin-top: 5pt; font-size: 13pt; font-family: Verdana, Arial, sans-serif; line-height: normal;"&gt;Example&lt;/H2&gt;

&lt;PRE style="background-color: rgb(238, 238, 238); font-size: 13.600000381469727px; font-family: 'Courier New', Courier, monospace; line-height: 14.666666030883789px; margin-bottom: 10px; margin-top: 0px; color: rgb(51, 51, 51);"&gt;
void UsePyramids(Ipp32f *pSrc, IppiSize srcRoi, int srcStep, Ipp32f *pkernel, int kerSize) {&lt;/PRE&gt;

&lt;PRE style="background-color: rgb(238, 238, 238); font-size: 13.600000381469727px; font-family: 'Courier New', Courier, monospace; line-height: 14.666666030883789px; margin-bottom: 10px; margin-top: 0px; color: rgb(51, 51, 51);"&gt;
 float rate = 2.0f;&lt;/PRE&gt;

&lt;P&gt;and etc ................&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 11 Feb 2014 14:28:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiPyramidLayerDown-ippiPyramidLayerUp-Slow/m-p/980723#M21347</guid>
      <dc:creator>Gennady_F_Intel</dc:creator>
      <dc:date>2014-02-11T14:28:37Z</dc:date>
    </item>
    <item>
      <title>(I have a stand alone</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiPyramidLayerDown-ippiPyramidLayerUp-Slow/m-p/980724#M21348</link>
      <description>&lt;P&gt;(I have a stand alone application can be uploaded for independent observation)&lt;/P&gt;

&lt;P&gt;Windows 7, 32 bit,serial libraries. Test sizes are, for example, 1024x1024 input f32. Here are some snippets to show what setup is being used. All&amp;nbsp;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;memory is aligned. Note I am using ROI's so the actual size is 1028x1028.&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;I did more testing and the issue seems to be in the expand operation: compare the two below:&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;OLD (faster): 2:1 expansion and scale followed by ippiConv operation, ippiSub&lt;/SPAN&gt;&lt;/P&gt;

&lt;P&gt;&lt;SPAN style="font-size: 1em; line-height: 1.5;"&gt;NEW (slower):&amp;nbsp;&lt;/SPAN&gt;ippiPyramidLayerUp_32f_C1R, ippiSub&lt;/P&gt;

&lt;P&gt;When ippiPyramidLayerUp_32f_C1R is done on the higher order sizes it becomes exponentially slower: Compare these times:&lt;/P&gt;

&lt;P&gt;OLD Reduce1 (1024x1024) = 4.194673 ms&lt;BR /&gt;
	OLD Reduce2 (512x512) = 0.773031 ms&lt;BR /&gt;
	OLD Reduce3 (256x256) = 0.177771 ms&lt;BR /&gt;
	OLD Expand1 (128x128) = 5.021219 ms&lt;BR /&gt;
	OLD Expand2 (256x256) = 0.972062 ms&lt;BR /&gt;
	OLD Expand3 (512x512) = &lt;STRONG&gt;0.259510 ms&lt;/STRONG&gt;&lt;/P&gt;

&lt;P&gt;&lt;BR /&gt;
	NEW Reduce1 (1024x1024) = 2.311395 ms&lt;BR /&gt;
	NEW Reduce2 (512x512) = 0.608821 ms&lt;BR /&gt;
	NEW Reduce3 (256x256) = 0.151381 ms&lt;BR /&gt;
	NEW Expand1 (128x128) = 2.354647 ms&lt;BR /&gt;
	NEW Expand2 (256x256) = 11.155984 ms&lt;BR /&gt;
	NEW Expand3 (512x512) =&lt;STRONG&gt; 55.821337 ms&lt;/STRONG&gt;&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, 11 Feb 2014 16:13:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiPyramidLayerDown-ippiPyramidLayerUp-Slow/m-p/980724#M21348</guid>
      <dc:creator>C_W_</dc:creator>
      <dc:date>2014-02-11T16:13:08Z</dc:date>
    </item>
  </channel>
</rss>

