<?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 Thanks guys for your help. in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954744#M18952</link>
    <description>&lt;P&gt;Thanks guys for your help.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Sergey Kostrov wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;IPP documents in Pdf-format have a great set of different working (!) examples and please take a look. Also, could you provide additional details what was done on your side before you come up to the conclusion that '...results aren't great...'. I'd like to see your test case, please.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;I've gone through the FFT example I did find which were a pretty big help, but they were just simple forward/inverse FFT examples, not quite what I'm doing. If anything I'm just looking for something a little more fleshed out so I can get some idea as to what I may be doing wrong.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Thomas Jensen wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;As far as I know, ippConvolve already internally use FFT/DFT, when the image size is larger than X.&lt;BR /&gt;I have seen this in my own implementation where I do image filtering using ippConvolve, and I see that the computation speed is not increasing when I do increase the kernel size (keeping the image size constant). This is what you would except if it was using DFT/FFT internally instead of a standard convolution operation.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Where is this ippConvolve function? I looked through the documentation pdf's and example source code and I haven't found anything like this.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
    <pubDate>Thu, 09 May 2013 20:56:15 GMT</pubDate>
    <dc:creator>Theo_B_</dc:creator>
    <dc:date>2013-05-09T20:56:15Z</dc:date>
    <item>
      <title>Working FFT convolution example?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954740#M18948</link>
      <description>&lt;P&gt;Would someone happen to have a working example of an FFT convolution using IPP? I'm trying to setup a basic image compare, so far the results aren't great.&lt;/P&gt;</description>
      <pubDate>Wed, 08 May 2013 14:27:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954740#M18948</guid>
      <dc:creator>Theo_B_</dc:creator>
      <dc:date>2013-05-08T14:27:39Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;Would someone happen to</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954741#M18949</link>
      <description>&amp;gt;&amp;gt;Would someone happen to have a working example of an FFT convolution using IPP? I'm trying to setup a basic
&amp;gt;&amp;gt;image compare, so far the results aren't great...

IPP documents in Pdf-format have a great set of different working (!) examples and please take a look. Also, could you provide additional details what was done on your side before you come up to the conclusion that '...results aren't great...'. I'd like to see your test case, please.</description>
      <pubDate>Thu, 09 May 2013 01:54:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954741#M18949</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-09T01:54:54Z</dc:date>
    </item>
    <item>
      <title>As far as I know, ippConvolve</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954742#M18950</link>
      <description>&lt;P&gt;As far as I know, ippConvolve already internally use FFT/DFT, when the image size is larger than X.&lt;BR /&gt;I have seen this in my own implementation where I do image filtering using ippConvolve, and I see that the computation speed is not increasing when I do increase the kernel size (keeping the image size constant). This is what you would except if it was using DFT/FFT internally instead of a standard convolution operation.&lt;/P&gt;</description>
      <pubDate>Thu, 09 May 2013 16:31:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954742#M18950</guid>
      <dc:creator>Thomas_Jensen1</dc:creator>
      <dc:date>2013-05-09T16:31:18Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...As far as I know,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954743#M18951</link>
      <description>&amp;gt;&amp;gt;...As far as I know, ippConvolve already internally use FFT/DFT, when the image size is larger than X...

What do you mean X? You're Not specific ( completely fuzzy ) even if you're claiming '...I do image filtering using ippConvolve...'.</description>
      <pubDate>Thu, 09 May 2013 20:41:48 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954743#M18951</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-09T20:41:48Z</dc:date>
    </item>
    <item>
      <title>Thanks guys for your help.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954744#M18952</link>
      <description>&lt;P&gt;Thanks guys for your help.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Sergey Kostrov wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;IPP documents in Pdf-format have a great set of different working (!) examples and please take a look. Also, could you provide additional details what was done on your side before you come up to the conclusion that '...results aren't great...'. I'd like to see your test case, please.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;I've gone through the FFT example I did find which were a pretty big help, but they were just simple forward/inverse FFT examples, not quite what I'm doing. If anything I'm just looking for something a little more fleshed out so I can get some idea as to what I may be doing wrong.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Thomas Jensen wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;As far as I know, ippConvolve already internally use FFT/DFT, when the image size is larger than X.&lt;BR /&gt;I have seen this in my own implementation where I do image filtering using ippConvolve, and I see that the computation speed is not increasing when I do increase the kernel size (keeping the image size constant). This is what you would except if it was using DFT/FFT internally instead of a standard convolution operation.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Where is this ippConvolve function? I looked through the documentation pdf's and example source code and I haven't found anything like this.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 09 May 2013 20:56:15 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954744#M18952</guid>
      <dc:creator>Theo_B_</dc:creator>
      <dc:date>2013-05-09T20:56:15Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...Where is this</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954745#M18953</link>
      <description>&amp;gt;&amp;gt;...Where is this ippConvolve function?..

Please take a look at &lt;STRONG&gt;ipps.h&lt;/STRONG&gt; header file for a set of functions with &lt;STRONG&gt;ippsConv&lt;/STRONG&gt; prefix. For example,
...
/* /////////////////////////////////////////////////////////////////////////////
//                  &lt;STRONG&gt;Convolution functions&lt;/STRONG&gt;
///////////////////////////////////////////////////////////////////////////// */
/* /////////////////////////////////////////////////////////////////////////////
//  Name:       ippsConv
//  Purpose:    Linear Convolution of 1D signals
//  Parameters:
//      pSrc1                pointer to the first source vector
//      pSrc2                pointer to the second source vector
//      lenSrc1              length of the first source vector
//      lenSrc2              length of the second source vector
//      pDst                 pointer to the destination vector
//  Returns:    IppStatus
//      ippStsNullPtrErr        pointer(s) to the data is NULL
//      ippStsSizeErr           length of the vectors is less or equal zero
//      ippStsMemAllocErr       no memory for internal buffers
//      ippStsNoErr             otherwise
//  Notes:
//          Length of the destination data vector is lenSrc1+lenSrc2-1.
//          The input signal are exchangeable because of
//          commutative convolution property.
//          Some other values may be returned by FFT transform functions
*/

IPPAPI(IppStatus, &lt;STRONG&gt;ippsConv_32f&lt;/STRONG&gt;, ( const Ipp32f* pSrc1, int lenSrc1,
       const Ipp32f* pSrc2, int lenSrc2, Ipp32f* pDst))
IPPAPI(IppStatus, &lt;STRONG&gt;ippsConv_16s_Sfs&lt;/STRONG&gt;, ( const Ipp16s* pSrc1, int lenSrc1,
       const Ipp16s* pSrc2, int lenSrc2, Ipp16s* pDst, int scaleFactor))
IPPAPI( IppStatus, &lt;STRONG&gt;ippsConv_64f&lt;/STRONG&gt;,( const Ipp64f* pSrc1, int lenSrc1,
        const Ipp64f* pSrc2, int lenSrc2, Ipp64f* pDst))
...</description>
      <pubDate>Fri, 10 May 2013 00:03:16 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954745#M18953</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-10T00:03:16Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...As far as I know,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954746#M18954</link>
      <description>&amp;gt;&amp;gt;...As far as I know, &lt;STRONG&gt;ippConvolve&lt;/STRONG&gt; already internally use FFT/DFT...

Thomas,

Could you explain where &lt;STRONG&gt;ippConvolve&lt;/STRONG&gt; name comes from?

I just checked several IPP versions from 7.1 down to 3.0 and IPL ( Image Processing Library ). I see that term &lt;STRONG&gt;Conv&lt;/STRONG&gt; is used all the time and term &lt;STRONG&gt;Convolution&lt;/STRONG&gt; never used in names for functions.

Thanks in advance.</description>
      <pubDate>Fri, 10 May 2013 04:46:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954746#M18954</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-10T04:46:22Z</dc:date>
    </item>
    <item>
      <title>Quote:Sergey Kostrov wrote:</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954747#M18955</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Sergey Kostrov wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;gt;&amp;gt;...Where is this ippConvolve function?..&lt;/P&gt;
&lt;P&gt;Please take a look at &lt;STRONG&gt;ipps.h&lt;/STRONG&gt; header file for a set of functions with &lt;STRONG&gt;ippsConv&lt;/STRONG&gt; prefix. For example,&lt;BR /&gt; ...&lt;BR /&gt; /* /////////////////////////////////////////////////////////////////////////////&lt;BR /&gt; // &lt;STRONG&gt;Convolution functions&lt;/STRONG&gt;&lt;BR /&gt; ///////////////////////////////////////////////////////////////////////////// */&lt;BR /&gt; /* /////////////////////////////////////////////////////////////////////////////&lt;BR /&gt; // Name: ippsConv&lt;BR /&gt; // Purpose: Linear Convolution of 1D signals&lt;BR /&gt; // Parameters:&lt;BR /&gt; // pSrc1 pointer to the first source vector&lt;BR /&gt; // pSrc2 pointer to the second source vector&lt;BR /&gt; // lenSrc1 length of the first source vector&lt;BR /&gt; // lenSrc2 length of the second source vector&lt;BR /&gt; // pDst pointer to the destination vector&lt;BR /&gt; // Returns: IppStatus&lt;BR /&gt; // ippStsNullPtrErr pointer(s) to the data is NULL&lt;BR /&gt; // ippStsSizeErr length of the vectors is less or equal zero&lt;BR /&gt; // ippStsMemAllocErr no memory for internal buffers&lt;BR /&gt; // ippStsNoErr otherwise&lt;BR /&gt; // Notes:&lt;BR /&gt; // Length of the destination data vector is lenSrc1+lenSrc2-1.&lt;BR /&gt; // The input signal are exchangeable because of&lt;BR /&gt; // commutative convolution property.&lt;BR /&gt; // Some other values may be returned by FFT transform functions&lt;BR /&gt; */&lt;/P&gt;
&lt;P&gt;IPPAPI(IppStatus, &lt;STRONG&gt;ippsConv_32f&lt;/STRONG&gt;, ( const Ipp32f* pSrc1, int lenSrc1,&lt;BR /&gt; const Ipp32f* pSrc2, int lenSrc2, Ipp32f* pDst))&lt;BR /&gt; IPPAPI(IppStatus, &lt;STRONG&gt;ippsConv_16s_Sfs&lt;/STRONG&gt;, ( const Ipp16s* pSrc1, int lenSrc1,&lt;BR /&gt; const Ipp16s* pSrc2, int lenSrc2, Ipp16s* pDst, int scaleFactor))&lt;BR /&gt; IPPAPI( IppStatus, &lt;STRONG&gt;ippsConv_64f&lt;/STRONG&gt;,( const Ipp64f* pSrc1, int lenSrc1,&lt;BR /&gt; const Ipp64f* pSrc2, int lenSrc2, Ipp64f* pDst))&lt;BR /&gt; ...&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Alright, I'll take a look. Thanks.&lt;/P&gt;</description>
      <pubDate>Fri, 10 May 2013 21:25:44 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954747#M18955</guid>
      <dc:creator>Theo_B_</dc:creator>
      <dc:date>2013-05-10T21:25:44Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;Would someone happen to</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954748#M18956</link>
      <description>&amp;gt;&amp;gt;Would someone happen to have a working example of an FFT convolution using IPP?...

Theo, Let me know if you are interested in these two test cases. Here are short descriptions:
...
// Sub-Test 13 - &lt;STRONG&gt;Problem with ippsFIR_Direct_32f and ippsConv_64f functions&lt;/STRONG&gt;
...
// Sub-Test 14 - &lt;STRONG&gt;Performance Evaluation of ippsFIR_Direct_32f and ippsConv_64f functions&lt;/STRONG&gt;
...
If Yes, I'll provide sources &lt;STRONG&gt;As Is&lt;/STRONG&gt; and you will need to do all the rest clean ups.</description>
      <pubDate>Sat, 11 May 2013 02:03:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954748#M18956</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-11T02:03:39Z</dc:date>
    </item>
    <item>
      <title>Quote:Sergey Kostrov wrote:</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954749#M18957</link>
      <description>&lt;P&gt;&lt;/P&gt;&lt;BLOCKQUOTE&gt;Sergey Kostrov wrote:&lt;BR /&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&amp;gt;&amp;gt;Would someone happen to have a working example of an FFT convolution using IPP?...&lt;/P&gt;
&lt;P&gt;Theo, Let me know if you are interested in these two test cases. Here are short descriptions:&lt;BR /&gt; ...&lt;BR /&gt; // Sub-Test 13 - &lt;STRONG&gt;Problem with ippsFIR_Direct_32f and ippsConv_64f functions&lt;/STRONG&gt;&lt;BR /&gt; ...&lt;BR /&gt; // Sub-Test 14 - &lt;STRONG&gt;Performance Evaluation of ippsFIR_Direct_32f and ippsConv_64f functions&lt;/STRONG&gt;&lt;BR /&gt; ...&lt;BR /&gt; If Yes, I'll provide sources &lt;STRONG&gt;As Is&lt;/STRONG&gt; and you will need to do all the rest clean ups.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;&lt;P&gt;&lt;/P&gt;
&lt;P&gt;Sure! It may be helpful. Thanks.&lt;/P&gt;</description>
      <pubDate>Sat, 11 May 2013 17:25:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954749#M18957</guid>
      <dc:creator>Theo_B_</dc:creator>
      <dc:date>2013-05-11T17:25:27Z</dc:date>
    </item>
    <item>
      <title>// Sub-Test 13 - Problem with</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954750#M18958</link>
      <description>// Sub-Test 13 - &lt;STRONG&gt;Problem with ippsFIR_Direct_32f and ippsConv_64f functions&lt;/STRONG&gt;
	{
	/*
		CrtPrintf( RTU("Sub-Test 13\n") );

		// Test-Case 1
		{
			const RTint N = 7;
			const RTint M = 11;

			Ipp32f pSrc&lt;N&gt;;
			Ipp32f pDstC[N+M-1];
			Ipp32f pDstF[N+M-1];
			Ipp32f pTaps&lt;M&gt;;
			Ipp32f pDlyLine[2*M];

			RTint iDlyLineIndex;
			RTint iTapsPos;

			RTint i;
			RTint j;
			RTint k;

			for( i = 0; i &amp;lt; N; i++ )							// Initialization
				pSrc&lt;I&gt;= ( RTfloat )i;

			for( j = 0; j &amp;lt; ( N+M-1 ); j++ )
			{
				pDstC&lt;J&gt; = 0.0f;
				pDstF&lt;J&gt; = 0.0f;
			}

			for( j = 0; j &amp;lt; M; j++ )
				pTaps&lt;J&gt; = 0.0f;

			for( j = 0; j &amp;lt; ( 2*M ); j++ )
				pDlyLine&lt;J&gt; = 0.0f;

			iTapsPos = 0;
			CrtPrintf( RTU("Taps Position: %ld\n\n"), iTapsPos );

			pTaps[ iTapsPos ] = 1.0f;							// pTaps[ (M/2)-1 ] = 1.0L;
			iDlyLineIndex = 0;									// iDlyLineIndex = ( M-1 );
																// Processing with [ ippsConv_32f       ]
			CrtPrintf( RTU("Calling IPP [ ippsConv_32f       ] function\n") );
			st = ::&lt;STRONG&gt;ippsConv_32f&lt;/STRONG&gt;( pSrc, N, pTaps, M, pDstC );
			if( st == ippStsNoErr )
				CrtPrintf( RTU("Successful: Status = %ld\n"), ( RTint )st );
			else
				CrtPrintf( RTU("Error     : Status = %ld\n"), ( RTint )st );

		//	[ ippsFIR_Direct_32f ]		[ ippsFIR_Direct_64f ]			Directly filters a block of samples through a single-rate
		//																FIR filter
		//		const Ipp32f* pSrc			const Ipp64f* pSrc			- pointer to the input array
		//		Ipp32f* pDst				Ipp64f* pDst				- pointer to the output array
		//		int numIters				int numIters				- number of samples in the input array
		//		const Ipp32f* pTaps			const Ipp64f* pTaps			- pointer to the array containing the taps values,
		//																  the number of elements in the array is tapsLen
		//		int tapsLen					int tapsLen					- number of elements in the array containing the taps values
		//		Ipp32f* pDlyLine			Ipp64f* pDlyLine			- pointer to the array containing the delay line values
		//																  the number of elements in the array is 2*tapsLen
		//		int* pDlyLineIndex			int* pDlyLineIndex			- pointer to the current delay line index

																// Processing with [ ippsFIR_Direct_32f ]
			CrtPrintf( RTU("Calling IPP [ ippsFIR_Direct_32f ] function\n") );
			st = ::&lt;STRONG&gt;ippsFIR_Direct_32f&lt;/STRONG&gt;( pSrc, pDstF, N+iTapsPos, pTaps, M, pDlyLine, &amp;amp;iDlyLineIndex );
			if( st == ippStsNoErr )
				CrtPrintf( RTU("Successful: Status = %ld\n"), ( RTint )st );
			else
				CrtPrintf( RTU("Error     : Status = %ld\n"), ( RTint )st );

			CrtPrintf( RTU("\n") );								// Displaying results
			CrtPrintf( RTU("Displaying Convolution and FIR results:\n") );
			for( k = 0; k &amp;lt; ( N+M-1 ); k++ )
			{
					CrtPrintf( RTU("\tIndex %4ld [ CONV = %f           FIR = %f ]\t\tDIFF = %.16f\n"),
							   ( RTint )k, pDstC&lt;K&gt;, pDstF&lt;K&gt;, ( pDstC&lt;K&gt; - pDstF&lt;K&gt; ) );
			}

			RTbool bOk = RTfalse;

			CrtPrintf( RTU("\n") );
			CrtPrintf( RTU("Comparison of Convolution and FIR results:\n") );
			for( k = 0; k &amp;lt; ( N+M-1 ); k++ )
			{
				// Regular Verification
		//		if( pDstC&lt;K&gt; != pDstF&lt;K&gt; )
		//		{
		//			bOk = RTtrue;
		//			CrtPrintf( RTU("\tIndex %4ld [ CONV = %f Not Equal FIR = %f ]\t\tDIFF = %.24f\n"),
		//					   ( int )k, pDstC&lt;K&gt;, pDstF&lt;K&gt;, ( pDstC&lt;K&gt; - pDstF&lt;K&gt; ) );
		//		}

				// Verification if a difference is greater than an Eplsilon for
				// the Single-Precision Floating-Point type
				if( CrtFabs( pDstC&lt;K&gt; - pDstF&lt;K&gt; ) &amp;gt; IPP_EPS23 )
				{
					bOk = RTtrue;
					CrtPrintf( RTU("\tIndex %4ld [ CONV = %f Not Equal FIR = %f ]\t\tDIFF = %.24f\n"),
							   ( RTint )k, pDstC&lt;K&gt;, pDstF&lt;K&gt;, ( pDstC&lt;K&gt; - pDstF&lt;K&gt; ) );
				}
			}

			if( bOk == RTfalse )
				CrtPrintf( RTU("\tConvolution and FIR results are Identical\n") );
		}
	*/
	}&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/K&gt;&lt;/J&gt;&lt;/J&gt;&lt;/J&gt;&lt;/J&gt;&lt;/I&gt;&lt;/M&gt;&lt;/N&gt;</description>
      <pubDate>Sun, 12 May 2013 03:50:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954750#M18958</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-12T03:50:27Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...// Sub-Test 13 - Problem</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954751#M18959</link>
      <description>&amp;gt;&amp;gt;...// Sub-Test 13 - &lt;STRONG&gt;Problem with ippsFIR_Direct_32f and ippsConv_64f functions&lt;/STRONG&gt;

History is as follows: Some time in 2012 a problem with results returned by these IPP functions ( results did not match ) was detected and that is why investigation was done.

Note: Please try to verify if everything is correct with your current version of IPP.</description>
      <pubDate>Sun, 12 May 2013 03:54:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954751#M18959</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-12T03:54:00Z</dc:date>
    </item>
    <item>
      <title>Sorry that I was unclear, I</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954752#M18960</link>
      <description>&lt;P&gt;Sorry that I was unclear, I was writing from memory. With ippConvolve I meant ippiConvFull...&lt;/P&gt;
&lt;P&gt;With X, I dont know, since X is determined by IPP internally, and I'm just a user. However, I sure IPP does use fourier internally in ippiConvFull/Valid, when kernel size is larger than X.&lt;/P&gt;
&lt;P&gt;I did a quick search for more information about this, but couldn't find it...&lt;/P&gt;
&lt;P&gt;Test: Using IPL (very old IPP), I was using image sharpening using convolution of the image and a smaller kernel with a sharpening setup. My sharpening was configurable with three parameters. One parameter affected the kernel size. When interactively sharpening an image, and modifying that one parameter, I see that the convolution speed being directly propertional to the kernel size. Larger kernel, longer processing time. This is expected for a simple implementation of a convolution function.&lt;/P&gt;
&lt;P&gt;Later, in IPP 6, I reimplemented my sharpening filter using ippiConvFull. I did implement threading, so the new implementation was faster anyway, but I also noticed that the processing time was no longer dependent on the kernel size. Small kernel = 0.1s, large kernel = 0.1s.&lt;BR /&gt;Later, I posted a question about this in the IPP forum, and I learned from an Intel person that IPP internally use fourier transforms to implemenent convolution.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 13 May 2013 08:27:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954752#M18960</guid>
      <dc:creator>Thomas_Jensen1</dc:creator>
      <dc:date>2013-05-13T08:27:35Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...I was writing from</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954753#M18961</link>
      <description>&amp;gt;&amp;gt;...I was writing from memory. With ippConvolve I meant ippiConvFull...

Thanks for clarification, Thomas.

&amp;gt;&amp;gt;...Later, in IPP 6, I reimplemented my sharpening filter using ippiConvFull. I did implement threading, so the new
&amp;gt;&amp;gt;implementation was faster anyway, but I also noticed that the processing time was no longer dependent on the kernel
&amp;gt;&amp;gt;size. Small kernel = 0.1s, large kernel = 0.1s...

Theo, please take into account that internal threading of IPP functions won't be used in future versions of IPP. That was discussed many times already on the forum.</description>
      <pubDate>Mon, 13 May 2013 13:15:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954753#M18961</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-13T13:15:59Z</dc:date>
    </item>
    <item>
      <title>Great, thanks for the sample</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954754#M18962</link>
      <description>&lt;P&gt;Great, thanks for the sample code and help you guys.&lt;/P&gt;
&lt;P&gt;By the way, just looking through ippi.h and I found what Thomas mentioned about ippiConvFull using FFT when kernel size &amp;gt; X which states:&lt;/P&gt;
&lt;P&gt;"If the resulting IppiSize &amp;gt; CRITERION, then convolution is done using 2D FFT."&lt;/P&gt;</description>
      <pubDate>Mon, 13 May 2013 13:24:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954754#M18962</guid>
      <dc:creator>Theo_B_</dc:creator>
      <dc:date>2013-05-13T13:24:00Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;..."If the resulting</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954755#M18963</link>
      <description>&amp;gt;&amp;gt;..."If the resulting IppiSize &amp;gt; CRITERION, then convolution is done using 2D FFT."...

I found two references to a word &lt;STRONG&gt;CRITERION&lt;/STRONG&gt; and I would be glad to know its value as well.

&lt;STRONG&gt;PS:&lt;/STRONG&gt; Even 11-year old &lt;STRONG&gt;ippi.h&lt;/STRONG&gt; from IPP v3.0 has these two references! Just verified.</description>
      <pubDate>Tue, 14 May 2013 02:00:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954755#M18963</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-14T02:00:09Z</dc:date>
    </item>
    <item>
      <title>Hi All,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954756#M18964</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;
&lt;P&gt;these criterions are rather complex - I think it's clear that criterion should depend on data type, on kernel size, on image size, on CPU architecture; for "valid" case there also should be the second criterion (stop FFT use) - when output size is rather small because kernel and image have near the same sizes. in current IPP for SSE2 code criterion is the next:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; #define _CONVFULL_32F_START_FFTUSE 63 * 47. In the new API that will be introduced in IPP 8.0 all Conv/Corr functions have got one more parameter - algType - that can be "direct", "FFT" and "auto" - so anyone will have more flexibility to choose the most suitable one.&lt;/P&gt;
&lt;P&gt;Regards, Igor&lt;/P&gt;</description>
      <pubDate>Tue, 14 May 2013 10:29:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954756#M18964</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2013-05-14T10:29:53Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...these criterions are</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954757#M18965</link>
      <description>&amp;gt;&amp;gt;...these criterions are rather complex...

It doesn't matter how complex they are. Our point is that we would like to know some numbers, or we want to see some examples, and all that stuff have to be clearly explained in IPP documentation. Any fuzzy statements do not help in real cases.</description>
      <pubDate>Tue, 14 May 2013 13:07:24 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954757#M18965</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-14T13:07:24Z</dc:date>
    </item>
    <item>
      <title>&gt;&gt;...I think it's clear that</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954758#M18966</link>
      <description>&amp;gt;&amp;gt;...I think it's clear that criterion should depend on data type, on kernel size, on image size, on CPU architecture; for "valid" case there
&amp;gt;&amp;gt;also should be the second criterion (stop FFT use)...

This is how it looks like in &lt;STRONG&gt;ippi.h&lt;/STRONG&gt; header file:

...
//           If the resulting &lt;STRONG&gt;IppiSize &amp;gt; CRITERION&lt;/STRONG&gt;, then convolution is done
//           using 2D FFT.
...

In overall, I see that it depends just one one parameter &lt;STRONG&gt;IppiSize&lt;/STRONG&gt; and it doesn't depend on anything else unless that comment in &lt;STRONG&gt;ippi.h&lt;/STRONG&gt; header is wrong.</description>
      <pubDate>Tue, 14 May 2013 13:16:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954758#M18966</guid>
      <dc:creator>SergeyKostrov</dc:creator>
      <dc:date>2013-05-14T13:16:32Z</dc:date>
    </item>
    <item>
      <title>Sergey, you are "eating</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954759#M18967</link>
      <description>&lt;P&gt;Sergey, you are "eating letters" - ok, we'll correct this comment to something look like "if input parameters satisfy some complex conditions - convolution is done with 2D FFT". Or you would like to see the next criterion description with specific numbers for all supported architectures:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if(((( dstSize.width &amp;lt;= CROSSCORRVALID_FFT_CRITERION_OUTSIZE )||\&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( tplRoiSize.width &amp;lt;= CROSSCORRVALID_FFT_CRITERION_TPLSIZE )||\&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( srcRoiSize.width &amp;lt;= CROSSCORRVALID_FFT_CRITERION_SRCSIZE )))&amp;amp;&amp;amp;\&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( dstSize.width &amp;lt;= MAX_DIRECT_DIMENSION_SIZE )&amp;amp;&amp;amp;\&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; ( tplRoiSize.width * tplRoiSize.height &amp;lt; CROSSCORRVALID_MAX_DIRECT_TPL_SIZE )){\&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; return owniCrossCorrValid_NormLevel_##fType( pSrc, srcStep, srcRoiSize, pTpl,\&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tplStep, tplRoiSize, pDst, dstStep );\&lt;/P&gt;
&lt;P&gt;All IPP functions, that have low level optimized code, have a lot of different branches for different cases - for example the most simple function - ippsCopy_8u - has 47 code branches based on internal criterions. All such criterions are library internals and our IP.&lt;/P&gt;
&lt;P&gt;Regards, Igor&lt;/P&gt;</description>
      <pubDate>Wed, 15 May 2013 16:52:27 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Working-FFT-convolution-example/m-p/954759#M18967</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2013-05-15T16:52:27Z</dc:date>
    </item>
  </channel>
</rss>

