<?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 ippiWTInv Maximum Image Size? in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939189#M17508</link>
    <description>&lt;P&gt;I am trying to use ippiWTFwd and ippiWTInv to compute the haar transform of an image. &amp;nbsp;The image is already in a size that is powers of 2, so I don't have to worry about replication or extending the image border. &amp;nbsp;When I call my function on a 256x256 image up to a 1024x1024 image it doesn't cause a problem. &amp;nbsp;If I try an image that is 2048x2048 or larger, my function will crash in ippiWTInv and return a read access violation at 0x0.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Here is the function I am using, which I pass the image data and the image width/height.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;[cpp]&lt;/P&gt;
&lt;P&gt;Ipp32f* haarIppi(Ipp32f* inputBuffer, int width, int height)&lt;BR /&gt;{&lt;BR /&gt; IppiWTFwdSpec_32f_C1R* pSpec;&lt;BR /&gt; IppiWTInvSpec_32f_C1R* pSpecInv;&lt;BR /&gt; Ipp32f pTapsLow[2] = {0.7071067811865475f,0.7071067811865475f};&lt;BR /&gt; Ipp32f pTapsHigh[2] = {0.7071067811865475f,-0.7071067811865475f};&lt;BR /&gt; int lenLow = 2;&lt;BR /&gt; int anchorLow = 1;&lt;BR /&gt; int lenHigh = 2;&lt;BR /&gt; int anchorHigh = 1;&lt;/P&gt;
&lt;P&gt;int srcStep = width*sizeof(Ipp32f);&lt;BR /&gt; Ipp32f* pDetailXDst = new Ipp32f[width*height/4];&lt;BR /&gt; Ipp32f* pDetailYDst= new Ipp32f[width*height/4];&lt;BR /&gt; Ipp32f* pDetailXYDst = new Ipp32f[width*height/4];&lt;BR /&gt; Ipp32f* pApproxDst = new Ipp32f[width*height/4];&lt;BR /&gt; IppiSize dstRoiSize = {width/2, height/2};&lt;BR /&gt; int bufSize, bufSizeInv;&lt;BR /&gt; Ipp8u* pBuffer;&lt;BR /&gt; Ipp8u* pBufferInv;&lt;BR /&gt; Ipp32f* pDstInv = new Ipp32f[width*height];&lt;/P&gt;
&lt;P&gt;IppiSize roiInvSize = {width/2, height/2};&lt;BR /&gt; int stepDstInv = width*sizeof(Ipp32f);&lt;BR /&gt; int approxStep, detailXStep, detailYStep, detailXYStep;&lt;BR /&gt; approxStep = detailXStep = detailYStep = detailXYStep = width/2*sizeof(Ipp32f);&lt;/P&gt;
&lt;P&gt;//perform forward wavelet transform&lt;BR /&gt; ippiWTFwdInitAlloc_32f_C1R ( &amp;amp;pSpec, pTapsLow, lenLow, anchorLow, pTapsHigh, lenHigh, anchorHigh);&lt;BR /&gt; ippiWTFwdGetBufSize_C1R(pSpec, &amp;amp;bufSize);&lt;BR /&gt; pBuffer = ippsMalloc_8u(bufSize);&lt;BR /&gt; IppStatus forward = ippiWTFwd_32f_C1R (inputBuffer, srcStep, pApproxDst, approxStep, pDetailXDst,&lt;BR /&gt; detailXStep, pDetailYDst, detailYStep, pDetailXYDst, detailXYStep,&lt;BR /&gt; dstRoiSize, pSpec, pBuffer);&lt;BR /&gt; if(forward!=0)&lt;BR /&gt; qDebug() &amp;lt;&amp;lt; "something failed in forward Xform";&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt; //initialize inverse specs&lt;BR /&gt; ippiWTInvInitAlloc_32f_C1R (&amp;amp;pSpecInv, pTapsLow, lenLow, anchorLow, pTapsHigh, lenHigh, anchorHigh);&lt;BR /&gt; ippiWTInvGetBufSize_C1R(pSpecInv, &amp;amp;bufSizeInv);&lt;BR /&gt; pBufferInv = ippsMalloc_8u(bufSizeInv);&lt;/P&gt;
&lt;P&gt;//perform inverse wavelet transform&lt;BR /&gt; ippiWTInv_32f_C1R( pApproxDst, approxStep, pDetailXDst, detailXStep, pDetailYDst, detailYStep, pDetailXYDst,&lt;BR /&gt; detailXYStep, roiInvSize, pDstInv, stepDstInv, pSpecInv, pBufferInv);&lt;BR /&gt; ippiWTInvFree_32f_C1R (pSpecInv);&lt;BR /&gt; ippiWTFwdFree_32f_C1R (pSpec);&lt;/P&gt;
&lt;P&gt;return pDstInv;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;[/cpp]&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 22 Apr 2013 17:34:48 GMT</pubDate>
    <dc:creator>Joshua_K_</dc:creator>
    <dc:date>2013-04-22T17:34:48Z</dc:date>
    <item>
      <title>ippiWTInv Maximum Image Size?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939189#M17508</link>
      <description>&lt;P&gt;I am trying to use ippiWTFwd and ippiWTInv to compute the haar transform of an image. &amp;nbsp;The image is already in a size that is powers of 2, so I don't have to worry about replication or extending the image border. &amp;nbsp;When I call my function on a 256x256 image up to a 1024x1024 image it doesn't cause a problem. &amp;nbsp;If I try an image that is 2048x2048 or larger, my function will crash in ippiWTInv and return a read access violation at 0x0.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Here is the function I am using, which I pass the image data and the image width/height.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;[cpp]&lt;/P&gt;
&lt;P&gt;Ipp32f* haarIppi(Ipp32f* inputBuffer, int width, int height)&lt;BR /&gt;{&lt;BR /&gt; IppiWTFwdSpec_32f_C1R* pSpec;&lt;BR /&gt; IppiWTInvSpec_32f_C1R* pSpecInv;&lt;BR /&gt; Ipp32f pTapsLow[2] = {0.7071067811865475f,0.7071067811865475f};&lt;BR /&gt; Ipp32f pTapsHigh[2] = {0.7071067811865475f,-0.7071067811865475f};&lt;BR /&gt; int lenLow = 2;&lt;BR /&gt; int anchorLow = 1;&lt;BR /&gt; int lenHigh = 2;&lt;BR /&gt; int anchorHigh = 1;&lt;/P&gt;
&lt;P&gt;int srcStep = width*sizeof(Ipp32f);&lt;BR /&gt; Ipp32f* pDetailXDst = new Ipp32f[width*height/4];&lt;BR /&gt; Ipp32f* pDetailYDst= new Ipp32f[width*height/4];&lt;BR /&gt; Ipp32f* pDetailXYDst = new Ipp32f[width*height/4];&lt;BR /&gt; Ipp32f* pApproxDst = new Ipp32f[width*height/4];&lt;BR /&gt; IppiSize dstRoiSize = {width/2, height/2};&lt;BR /&gt; int bufSize, bufSizeInv;&lt;BR /&gt; Ipp8u* pBuffer;&lt;BR /&gt; Ipp8u* pBufferInv;&lt;BR /&gt; Ipp32f* pDstInv = new Ipp32f[width*height];&lt;/P&gt;
&lt;P&gt;IppiSize roiInvSize = {width/2, height/2};&lt;BR /&gt; int stepDstInv = width*sizeof(Ipp32f);&lt;BR /&gt; int approxStep, detailXStep, detailYStep, detailXYStep;&lt;BR /&gt; approxStep = detailXStep = detailYStep = detailXYStep = width/2*sizeof(Ipp32f);&lt;/P&gt;
&lt;P&gt;//perform forward wavelet transform&lt;BR /&gt; ippiWTFwdInitAlloc_32f_C1R ( &amp;amp;pSpec, pTapsLow, lenLow, anchorLow, pTapsHigh, lenHigh, anchorHigh);&lt;BR /&gt; ippiWTFwdGetBufSize_C1R(pSpec, &amp;amp;bufSize);&lt;BR /&gt; pBuffer = ippsMalloc_8u(bufSize);&lt;BR /&gt; IppStatus forward = ippiWTFwd_32f_C1R (inputBuffer, srcStep, pApproxDst, approxStep, pDetailXDst,&lt;BR /&gt; detailXStep, pDetailYDst, detailYStep, pDetailXYDst, detailXYStep,&lt;BR /&gt; dstRoiSize, pSpec, pBuffer);&lt;BR /&gt; if(forward!=0)&lt;BR /&gt; qDebug() &amp;lt;&amp;lt; "something failed in forward Xform";&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt; //initialize inverse specs&lt;BR /&gt; ippiWTInvInitAlloc_32f_C1R (&amp;amp;pSpecInv, pTapsLow, lenLow, anchorLow, pTapsHigh, lenHigh, anchorHigh);&lt;BR /&gt; ippiWTInvGetBufSize_C1R(pSpecInv, &amp;amp;bufSizeInv);&lt;BR /&gt; pBufferInv = ippsMalloc_8u(bufSizeInv);&lt;/P&gt;
&lt;P&gt;//perform inverse wavelet transform&lt;BR /&gt; ippiWTInv_32f_C1R( pApproxDst, approxStep, pDetailXDst, detailXStep, pDetailYDst, detailYStep, pDetailXYDst,&lt;BR /&gt; detailXYStep, roiInvSize, pDstInv, stepDstInv, pSpecInv, pBufferInv);&lt;BR /&gt; ippiWTInvFree_32f_C1R (pSpecInv);&lt;BR /&gt; ippiWTFwdFree_32f_C1R (pSpec);&lt;/P&gt;
&lt;P&gt;return pDstInv;&lt;BR /&gt;}&lt;/P&gt;
&lt;P&gt;[/cpp]&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 22 Apr 2013 17:34:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939189#M17508</guid>
      <dc:creator>Joshua_K_</dc:creator>
      <dc:date>2013-04-22T17:34:48Z</dc:date>
    </item>
    <item>
      <title>I want to note that it only</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939190#M17509</link>
      <description>&lt;P&gt;I want to note that it only seems to crash when the image width &amp;gt; 1024. &amp;nbsp;I can run the code on images which are 8192x1024 etc., but if I try something like 2048x2048 or 1024x8192, it will get an invalid acess error in the inverse function.&lt;/P&gt;</description>
      <pubDate>Mon, 22 Apr 2013 19:46:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939190#M17509</guid>
      <dc:creator>Joshua_K_</dc:creator>
      <dc:date>2013-04-22T19:46:33Z</dc:date>
    </item>
    <item>
      <title>Joshua, Thank you for the</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939191#M17510</link>
      <description>Joshua, Thank you for the test case.

Now, could you take a look how much memory is allocated on your platform just before the crash happens? ( look at the Task Manager if you're using Windows, or another memory viewing utility if on Non WIndows ).

I would like to know &lt;STRONG&gt;Memory Usage&lt;/STRONG&gt; ( physical ) and &lt;STRONG&gt;VM Size&lt;/STRONG&gt; ( virtual ) numbers when the image size is greater than 2048 by 2048 ( 16MB ).</description>
      <pubDate>Tue, 23 Apr 2013 04:52:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939191#M17510</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-04-23T04:52:41Z</dc:date>
    </item>
    <item>
      <title>It looks like the process</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939192#M17511</link>
      <description>&lt;P&gt;It looks like the process uses ~70MB of memory when running on a 1024x1024 image, ~130MB when (crashing) to use a 2048x2048 image and ~300MB for a 8196x1024 image which does not crash. &amp;nbsp;I attached the task manager memory details for each scenario. &amp;nbsp;If there is a hidden buffer limit with the inverse WT function, then I may just split my large image &amp;nbsp;into smaller sections for processing.&lt;/P&gt;</description>
      <pubDate>Tue, 23 Apr 2013 07:01:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939192#M17511</guid>
      <dc:creator>Joshua_K_</dc:creator>
      <dc:date>2013-04-23T07:01:12Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;... If there is a hidden</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939193#M17512</link>
      <description>&amp;gt;&amp;gt;... If there is a hidden buffer limit...

There are two more memory related things:

- Stack Reserve and Commit values ( look at Linker Settings )
- Virtual Memory Min and Max values ( look at System applet in Control Panel )</description>
      <pubDate>Tue, 23 Apr 2013 12:09:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939193#M17512</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-04-23T12:09:32Z</dc:date>
    </item>
    <item>
      <title>For virtual memory Min and</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939194#M17513</link>
      <description>&lt;P&gt;For virtual memory Min and Max, I have Min as 16MB and Max as 6135MB.&lt;/P&gt;
&lt;P&gt;I am unsure about the stack reserve/commit, but I am using qMake with QT Creator to do the linking and I believe the default stack size is set with /Zm200.&lt;/P&gt;</description>
      <pubDate>Wed, 24 Apr 2013 13:51:34 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939194#M17513</guid>
      <dc:creator>Joshua_K_</dc:creator>
      <dc:date>2013-04-24T13:51:34Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;For virtual memory Min and</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939195#M17514</link>
      <description>&amp;gt;&amp;gt;For virtual memory Min and Max, I have Min as 16MB and Max as 6135MB...

Min value is too low. Could you try to set:

Initial size (MB): 2048 ( that is 2GB )
Maximum size (MB): 8192 ( that is 8GB )

in System applet.

&amp;gt;&amp;gt;...I am unsure about the stack reserve/commit, but I am using qMake with QT Creator to do the linking and
&amp;gt;&amp;gt;I believe the default stack size is set with /Zm200.

What C++ compiler ( or IDE ) do you use?</description>
      <pubDate>Thu, 25 Apr 2013 01:17:33 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/ippiWTInv-Maximum-Image-Size/m-p/939195#M17514</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-04-25T01:17:33Z</dc:date>
    </item>
  </channel>
</rss>

