<?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 FFT in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/FFT/m-p/768437#M507</link>
    <description>Hello Eran,&lt;BR /&gt;&lt;BR /&gt;what data type do you use? As you can see below - everything is OK for 32f:&lt;BR /&gt;&lt;BR /&gt;&lt;P&gt;#include &lt;STDIO.H&gt;&lt;/STDIO.H&gt;&lt;/P&gt;&lt;P&gt;#include "ipps.h"&lt;/P&gt;&lt;P&gt;#include "ippi.h"&lt;/P&gt;&lt;P&gt;#define ORDER 3&lt;/P&gt;&lt;P&gt;#define SIZE 8&lt;/P&gt;&lt;P&gt;int main(){&lt;/P&gt;&lt;P&gt;Ipp32f cross[SIZE * SIZE] = &lt;/P&gt;&lt;P&gt;{ 0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;1, 1, 1, 1, 1, 1, 1, 1,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0 };&lt;/P&gt;&lt;P&gt;Ipp32f crossFFT_FWD[SIZE * SIZE], crossFFT_INV[SIZE * SIZE];&lt;/P&gt;&lt;P&gt;IppiFFTSpec_R_32f *ctxFft = NULL;&lt;/P&gt;&lt;P&gt;int FftBufSize, i, j;&lt;/P&gt;&lt;P&gt;Ipp8u* pMemBuf;&lt;/P&gt;&lt;P&gt;IppStatus status;&lt;/P&gt;&lt;P&gt;status = ippiFFTInitAlloc_R_32f( &amp;amp;ctxFft, ORDER, ORDER, IPP_FFT_DIV_INV_BY_N, ippAlgHintNone);&lt;/P&gt;&lt;P&gt;status = ippiFFTGetBufSize_R_32f( ctxFft, &amp;amp;FftBufSize );&lt;/P&gt;&lt;P&gt;pMemBuf = ippsMalloc_8u( FftBufSize );&lt;/P&gt;&lt;P&gt;status = ippiFFTFwd_RToPack_32f_C1R( cross, SIZE*sizeof(Ipp32f), crossFFT_FWD, SIZE*sizeof(Ipp32f), ctxFft, pMemBuf );&lt;/P&gt;&lt;P&gt;status = ippiFFTInv_PackToR_32f_C1R( crossFFT_FWD, SIZE*sizeof(Ipp32f), crossFFT_INV, SIZE*sizeof(Ipp32f), ctxFft, pMemBuf );&lt;/P&gt;&lt;P&gt;for( j = 0; j &amp;lt; SIZE; j++ ){&lt;/P&gt;&lt;P&gt;for( i = 0; i &amp;lt; SIZE; i++ ){&lt;/P&gt;&lt;P&gt;printf( " %.1f", crossFFT_INV[j * SIZE + i] );&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;printf("\n");&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;return 0;&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Output:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;Press any key to continue . . .&lt;BR /&gt;&lt;BR /&gt;Regards ,&lt;BR /&gt;Igor&lt;/P&gt;</description>
    <pubDate>Thu, 07 Apr 2011 08:59:39 GMT</pubDate>
    <dc:creator>igorastakhov</dc:creator>
    <dc:date>2011-04-07T08:59:39Z</dc:date>
    <item>
      <title>FFT</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/FFT/m-p/768436#M506</link>
      <description>Hello&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I have two matrixs:&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;1- 8*8 block with a cross:&lt;/DIV&gt;&lt;DIV&gt;&lt;DIV id="_mcePaste"&gt;0	0	0	1	0	0	0	0&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;0	0	0	1	0	0	0	0&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;0	0	0	1	0	0	0	0&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;1	1	1	1	1	1	1	1&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;0	0	0	1	0	0	0	0&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;0	0	0	1	0	0	0	0&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;0	0	0	1	0	0	0	0&lt;/DIV&gt;&lt;DIV id="_mcePaste"&gt;0	0	0	1	0	0	0	0&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;2- bigger BW image, assume dims = 200*300 pixels.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;On matlab I'm using the line:&lt;/DIV&gt;&lt;DIV&gt;output = real(ifft2(fft2(BWimg) .* fft2(Block,200,300)));&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;I wish to apply it with IPP.&lt;/DIV&gt;&lt;DIV&gt;When I used ippiFFTFwd_RToPack and ippiFFTInv_PackToR for the big BW image the output is like input (this is OK) &lt;B&gt;so the FFT and inverse FFT did the job&lt;/B&gt;.&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;When Iused ippiFFTFwd_RToPack and ippiFFTInv_PackToR for the small block (8*8) or even when I put the cross on bigger 200*300 image, &lt;B&gt;the output is zeros.&lt;/B&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Any suggestions?&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;Thanks,&lt;/DIV&gt;&lt;DIV&gt;Eran&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;&lt;DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Wed, 06 Apr 2011 11:46:55 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/FFT/m-p/768436#M506</guid>
      <dc:creator>erano111</dc:creator>
      <dc:date>2011-04-06T11:46:55Z</dc:date>
    </item>
    <item>
      <title>FFT</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/FFT/m-p/768437#M507</link>
      <description>Hello Eran,&lt;BR /&gt;&lt;BR /&gt;what data type do you use? As you can see below - everything is OK for 32f:&lt;BR /&gt;&lt;BR /&gt;&lt;P&gt;#include &lt;STDIO.H&gt;&lt;/STDIO.H&gt;&lt;/P&gt;&lt;P&gt;#include "ipps.h"&lt;/P&gt;&lt;P&gt;#include "ippi.h"&lt;/P&gt;&lt;P&gt;#define ORDER 3&lt;/P&gt;&lt;P&gt;#define SIZE 8&lt;/P&gt;&lt;P&gt;int main(){&lt;/P&gt;&lt;P&gt;Ipp32f cross[SIZE * SIZE] = &lt;/P&gt;&lt;P&gt;{ 0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;1, 1, 1, 1, 1, 1, 1, 1,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0,&lt;/P&gt;&lt;P&gt;0, 0, 0, 1, 0, 0, 0, 0 };&lt;/P&gt;&lt;P&gt;Ipp32f crossFFT_FWD[SIZE * SIZE], crossFFT_INV[SIZE * SIZE];&lt;/P&gt;&lt;P&gt;IppiFFTSpec_R_32f *ctxFft = NULL;&lt;/P&gt;&lt;P&gt;int FftBufSize, i, j;&lt;/P&gt;&lt;P&gt;Ipp8u* pMemBuf;&lt;/P&gt;&lt;P&gt;IppStatus status;&lt;/P&gt;&lt;P&gt;status = ippiFFTInitAlloc_R_32f( &amp;amp;ctxFft, ORDER, ORDER, IPP_FFT_DIV_INV_BY_N, ippAlgHintNone);&lt;/P&gt;&lt;P&gt;status = ippiFFTGetBufSize_R_32f( ctxFft, &amp;amp;FftBufSize );&lt;/P&gt;&lt;P&gt;pMemBuf = ippsMalloc_8u( FftBufSize );&lt;/P&gt;&lt;P&gt;status = ippiFFTFwd_RToPack_32f_C1R( cross, SIZE*sizeof(Ipp32f), crossFFT_FWD, SIZE*sizeof(Ipp32f), ctxFft, pMemBuf );&lt;/P&gt;&lt;P&gt;status = ippiFFTInv_PackToR_32f_C1R( crossFFT_FWD, SIZE*sizeof(Ipp32f), crossFFT_INV, SIZE*sizeof(Ipp32f), ctxFft, pMemBuf );&lt;/P&gt;&lt;P&gt;for( j = 0; j &amp;lt; SIZE; j++ ){&lt;/P&gt;&lt;P&gt;for( i = 0; i &amp;lt; SIZE; i++ ){&lt;/P&gt;&lt;P&gt;printf( " %.1f", crossFFT_INV[j * SIZE + i] );&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;printf("\n");&lt;/P&gt;&lt;P&gt;}&lt;/P&gt;&lt;P&gt;return 0;&lt;/P&gt;&lt;P&gt;}&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;Output:&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;0.0 0.0 0.0 1.0 0.0 0.0 0.0 0.0&lt;/P&gt;&lt;P&gt;Press any key to continue . . .&lt;BR /&gt;&lt;BR /&gt;Regards ,&lt;BR /&gt;Igor&lt;/P&gt;</description>
      <pubDate>Thu, 07 Apr 2011 08:59:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/FFT/m-p/768437#M507</guid>
      <dc:creator>igorastakhov</dc:creator>
      <dc:date>2011-04-07T08:59:39Z</dc:date>
    </item>
  </channel>
</rss>

