<?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 Re: What am I doing wrong? in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915421#M15039</link>
    <description>Vladimir's code preforms the calculation in rows. So the next thing is to try the calculation in rows, but without all the clever pointer arithmetic:&lt;BR /&gt;&lt;PRE&gt; for(ii=0;ii&lt;LINES&gt; for( i = 0; i &amp;lt; YDIM; i++ ){&lt;BR /&gt;  ippsSub_16u_Sfs(&amp;amp;subtractM[i*XDIM],&amp;amp;data[(ii%LINES)*YDIM*XDIM+i*XDIM],&amp;amp;tmpInt[i*XDIM], &lt;BR /&gt;   XDIM, 0 );&lt;BR /&gt;  ippsConvert_16u32f( &amp;amp;tmpInt[i*XDIM], &amp;amp;tmpFlt[i*XDIM], XDIM );&lt;BR /&gt;  ippsMul_32f_I( &amp;amp;multiplyM[i*XDIM], &amp;amp;tmpFlt[i*XDIM], XDIM );&lt;BR /&gt;  ippsConvert_32f16u_Sfs( &amp;amp;tmpFlt[i*XDIM], &amp;amp;outData2[(ii%LINES)*YDIM*XDIM+i*XDIM],&lt;BR /&gt;   XDIM, ippRndZero, 0 );&lt;BR /&gt; }&lt;/LINES&gt;&lt;/PRE&gt;This is actually &lt;I&gt;slower&lt;/I&gt;:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames): 1.694970 (s)&lt;BR /&gt;Time for one frame: 0.002119 (s)&lt;BR /&gt;Frequency: 471.984726&lt;BR /&gt;============================&lt;BR /&gt;ippit7-5.2.dll 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames): 1.077069 (s)&lt;BR /&gt;Time for one frame: 0.001346 (s)&lt;BR /&gt;IPP Frequency: 742.756803&lt;BR /&gt;maxError: 1&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
    <pubDate>Thu, 02 Aug 2007 18:02:29 GMT</pubDate>
    <dc:creator>manimal</dc:creator>
    <dc:date>2007-08-02T18:02:29Z</dc:date>
    <item>
      <title>What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915415#M15033</link>
      <description>Hello all!  I have some code that subtracts and multiplies some images, and the hand-coded calculation is faster than the IPP one.  The code is listed below. I am using VS 2005 (I think the code should work in linux, but I haven't tried it), and the output I get is:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames): 1.689512 (s)&lt;BR /&gt;Time for one frame: 0.002112 (s)&lt;BR /&gt;Frequency: 473.509565&lt;BR /&gt;============================&lt;BR /&gt;ippit7-5.2.dll 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames): 1.929452 (s)&lt;BR /&gt;Time for one frame: 0.002412 (s)&lt;BR /&gt;IPP Frequency: 414.625492&lt;BR /&gt;maxError: 1&lt;/PRE&gt;Thank you for any help you can give.&lt;BR /&gt;&lt;BR /&gt;Eric&lt;BR /&gt;&lt;BR /&gt;&lt;PRE&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#ifdef&lt;/FONT&gt;&lt;FONT size="2"&gt; WIN32&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#include&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;&lt;WINDOWS.H&gt;&lt;/WINDOWS.H&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;P&gt;#else&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&lt;P&gt;#include &lt;SYS&gt;&lt;/SYS&gt;&lt;/P&gt;&lt;P&gt;#include &lt;TIME.H&gt;&lt;/TIME.H&gt;&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#endif&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#include&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;&lt;STDLIB.H&gt;&lt;/STDLIB.H&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#include&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;&lt;STDIO.H&gt;&lt;/STDIO.H&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#include&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;&lt;STRING.H&gt;&lt;/STRING.H&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#include&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;&lt;IPP.H&gt;&lt;/IPP.H&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#define&lt;/FONT&gt;&lt;FONT size="2"&gt; YDIM 1280&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#define&lt;/FONT&gt;&lt;FONT size="2"&gt; XDIM 150&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#define&lt;/FONT&gt;&lt;FONT size="2"&gt; LINES 80&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#define&lt;/FONT&gt;&lt;FONT size="2"&gt; MAX_USHORT 65535&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#define&lt;/FONT&gt;&lt;FONT size="2"&gt; TIMING 10&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#define&lt;/FONT&gt;&lt;FONT size="2"&gt; MAX(a,b) (((a)&amp;lt;(b))?(b):(a))&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#define&lt;/FONT&gt;&lt;FONT size="2"&gt; MIN(a,b) (((a)&amp;gt;(b))?(b):(a))&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;double&lt;/FONT&gt;&lt;FONT size="2"&gt; randomu();&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;double&lt;/FONT&gt;&lt;FONT size="2"&gt; GetTimeOfDay(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;void&lt;/FONT&gt;&lt;FONT size="2"&gt;);&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;void&lt;/FONT&gt;&lt;FONT size="2"&gt; libinfo(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;void&lt;/FONT&gt;&lt;FONT size="2"&gt;) {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;const&lt;/FONT&gt;&lt;FONT size="2"&gt; IppLibraryVersion* lib = ippiGetLibVersion();&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"============================
"&lt;/FONT&gt;&lt;FONT size="2"&gt;);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"%s %s %d.%d.%d.%d
"&lt;/FONT&gt;&lt;FONT size="2"&gt;, lib-&amp;gt;Name, lib-&amp;gt;Version,&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;lib-&amp;gt;major, lib-&amp;gt;minor, lib-&amp;gt;majorBuild, lib-&amp;gt;build);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"============================
"&lt;/FONT&gt;&lt;FONT size="2"&gt;);}&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;int&lt;/FONT&gt;&lt;FONT size="2"&gt; main(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;int&lt;/FONT&gt;&lt;FONT size="2"&gt; argc, &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;char&lt;/FONT&gt;&lt;FONT size="2"&gt; *argv[]) {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;int&lt;/FONT&gt;&lt;FONT size="2"&gt; ii,jj;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;unsigned&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt; *outData1,*outData2,*data,*subtractM;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;static&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;int&lt;/FONT&gt;&lt;FONT size="2"&gt; tmpVal;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;float&lt;/FONT&gt;&lt;FONT size="2"&gt; *multiplyM;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;double&lt;/FONT&gt;&lt;FONT size="2"&gt; start,stop;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Ipp16u *tmpInt,*tmpSub;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;Ipp32f *tmpFlt,*tmpMult;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;int&lt;/FONT&gt;&lt;FONT size="2"&gt; intStep,fltStep,subStep,multStep;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;IppiSize roi={XDIM,YDIM};&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;int&lt;/FONT&gt;&lt;FONT size="2"&gt; maxError=0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;data=malloc(YDIM*LINES*XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;unsigned&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;outData1=malloc(YDIM*LINES*XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;unsigned&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;outData2=malloc(YDIM*LINES*XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;unsigned&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;subtractM=malloc(YDIM*XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;unsigned&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;multiplyM=malloc(YDIM*XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;float&lt;/FONT&gt;&lt;FONT size="2"&gt;));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;//Generate random data&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2
"&gt;for&lt;/FONT&gt;&lt;FONT size="2"&gt;(ii=0;ii&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;data[ii]=(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;unsigned&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;)(10000.0 + (2.0*randomu()-1.0)*2500.0);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;for&lt;/FONT&gt;&lt;FONT size="2"&gt;(ii=0;ii&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;subtractM[ii]=(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;unsigned&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;)(1000.0 + (2.0*randomu()-1.0)*200.0);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;for&lt;/FONT&gt;&lt;FONT size="2"&gt;(ii=0;ii&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;multiplyM[ii]=(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;float&lt;/FONT&gt;&lt;FONT size="2"&gt;)(1.0 + (2.0*randomu()-1.0)*0.2);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;/////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;// Do the calculation&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;/////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;start=GetTimeOfDay();&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;for&lt;/FONT&gt;&lt;FONT size="2"&gt;(ii=0;ii&lt;LINES&gt;&lt;/LINES&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;for&lt;/FONT&gt;&lt;FONT size="2"&gt;(jj=0;jj&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;// Subtract and multiply&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;tmpVal=(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;int&lt;/FONT&gt;&lt;FONT size="2"&gt;)((data[(ii%LINES)*YDIM*XDIM+jj]-subtractM[jj])*multiplyM[jj]);&lt;/FONT&gt;&lt;FONT color="#008000" size="2"&gt;//+0.5;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;// Data checks to make sure the data is still in range.&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;if&lt;/FONT&gt;&lt;FONT size="2"&gt; ((tmpVal &amp;lt; 0) || (tmpVal &amp;gt; MAX_USHORT)) {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;const&lt;/FONT&gt;&lt;FONT size="2"&gt; &lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;int&lt;/FONT&gt;&lt;FONT size="2"&gt; a=tmpVal;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;tmpVal=MAX(0,a);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;tmpVal=MIN(MAX_USHORT,a);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;// Implicit conversion to short&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;outData1[(ii%LINES)*YDIM*XDIM+jj]=tmpVal;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;stop=GetTimeOfDay();&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;/////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;// End calculation&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;/////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"Time for calculation (%i frames):	%f (s)
"&lt;/FONT&gt;&lt;FONT size="2"&gt;,TIMING*LINES, stop-start);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"Time for one frame:			%f (s)
"&lt;/FONT&gt;&lt;FONT size="2"&gt;,(stop-start)/(TIMING*LINES));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"Frequency:				%f
"&lt;/FONT&gt;&lt;FONT size="2"&gt;,(LINES*TIMING)/(stop-start));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;/////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;// Do th
e calculation with IPP&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;/////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;libinfo();&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;tmpInt=ippiMalloc_16s_C1(XDIM,YDIM,&amp;amp;intStep);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;tmpFlt=ippiMalloc_32f_C1(XDIM,YDIM,&amp;amp;fltStep);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;tmpSub=ippiMalloc_16u_C1(XDIM,YDIM,&amp;amp;subStep);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;tmpMult=ippiMalloc_32f_C1(XDIM,YDIM,&amp;amp;multStep);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiCopy_16u_C1R(subtractM,XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;),tmpSub,subStep,roi);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiCopy_32f_C1R(multiplyM,XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;float&lt;/FONT&gt;&lt;FONT size="2"&gt;),tmpMult,multStep,roi);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;start=GetTimeOfDay();&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;for&lt;/FONT&gt;&lt;FONT size="2"&gt;(ii=0;ii&lt;LINES&gt;&lt;/LINES&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;//Subtract&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiSub_16u_C1RSfs(tmpSub,subStep,&amp;amp;data[(ii%LINES)*YDIM*XDIM],XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;),tmpInt,intStep,roi,0);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;//Convert data to floats&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiConvert_16s32f_C1R(tmpInt,intStep,tmpFlt,fltStep,roi);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;//Multiply&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiMul_32f_C1IR(tmpMult,multStep,tmpFlt,fltStep,roi);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;//Threshold for converting back to shorts&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiThreshold_GTVal_32f_C1IR(tmpFlt,fltStep,roi,MAX_USHORT-1,MAX_USHORT-1);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiThreshold_LTVal_32f_C1IR(tmpFlt,fltStep,roi,0,0);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;//Convert back to shorts&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiConvert_32f16u_C1R(tmpFlt,fltStep,&amp;amp;outData2[(ii%LINES)*YDIM*XDIM],&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;XDIM*&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;sizeof&lt;/FONT&gt;&lt;FONT size="2"&gt;(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;short&lt;/FONT&gt;&lt;FONT size="2"&gt;),roi,ippRndZero);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;stop=GetTimeOfDay();&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiFree(tmpInt);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiFree(tmpMult);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiFree(tmpSub);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;ippiFree(tmpFlt);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;/////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;// End calculation&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#008000" size="2"&gt;/////////////////////////////////////////////////////&lt;/FONT&gt;&lt;/P&gt;&lt;FONT size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"Time for IPP calculation (%i frames):	%f (s)
"&lt;/FONT&gt;&lt;FONT size="2"&gt;,TIMING*LINES, stop-start);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"Time for one frame:			%f (s)
"&lt;/FONT&gt;&lt;FONT size="2"&gt;,(stop-start)/(TIMING*LINES));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"IPP Frequency:	
t		%f
"&lt;/FONT&gt;&lt;FONT size="2"&gt;,(LINES*TIMING)/(stop-start));&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;for&lt;/FONT&gt;&lt;FONT size="2"&gt;(jj=0;jj&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;if&lt;/FONT&gt;&lt;FONT size="2"&gt; (abs(outData1[jj]-outData2[jj]) &amp;gt; maxError)&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;maxError=abs(outData1[jj]-outData2[jj]);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;printf(&lt;/FONT&gt;&lt;FONT color="#a31515" size="2"&gt;"maxError: %i
"&lt;/FONT&gt;&lt;FONT size="2"&gt;,maxError);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;free(subtractM);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;free(multiplyM);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;free(data);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;free(outData1);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;free(outData2);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;return&lt;/FONT&gt;&lt;FONT size="2"&gt; 0;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;double&lt;/FONT&gt;&lt;FONT size="2"&gt; randomu() {&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;return&lt;/FONT&gt;&lt;FONT size="2"&gt; (&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;double&lt;/FONT&gt;&lt;FONT size="2"&gt;)rand()/(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;double&lt;/FONT&gt;&lt;FONT size="2"&gt;)RAND_MAX;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;}&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;double&lt;/FONT&gt;&lt;FONT size="2"&gt; GetTimeOfDay(&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;void&lt;/FONT&gt;&lt;FONT size="2"&gt;) {&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;/FONT&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;#ifdef&lt;/FONT&gt;&lt;FONT size="2"&gt; WIN32&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;static&lt;/FONT&gt;&lt;FONT size="2"&gt; LARGE_INTEGER freq; LARGE_INTEGER time;&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;if&lt;/FONT&gt;&lt;FONT size="2"&gt;(freq.QuadPart==0) QueryPerformanceFrequency(&amp;amp;freq);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT size="2"&gt;QueryPerformanceCounter(&amp;amp;time);&lt;/FONT&gt;&lt;/P&gt;&lt;P&gt;&lt;FONT color="#0000ff" size="2"&gt;return&lt;/FONT&gt;&lt;FONT size="2"&gt; (&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;double&lt;/FONT&gt;&lt;FONT size="2"&gt;)time.QuadPart/freq.QuadPart;&lt;/FONT&gt;&lt;/P&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;P&gt;#else&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#808080" size="2"&gt;&lt;P&gt;struct timeval currTime;&lt;/P&gt;&lt;P&gt;gettimeofday(&amp;amp;currTime,NULL);&lt;/P&gt;&lt;P&gt;return((double)((double)currTime.tv_sec+&lt;/P&gt;&lt;P&gt;(double)currTime.tv_usec/1000000.0));&lt;/P&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" size="2"&gt;&lt;P&gt;#endif&lt;/P&gt;&lt;/FONT&gt;&lt;FONT size="2"&gt;&lt;P&gt;}&lt;/P&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 27 Jul 2007 16:10:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915415#M15033</guid>
      <dc:creator>manimal</dc:creator>
      <dc:date>2007-07-27T16:10:29Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915416#M15034</link>
      <description>Wow, that formatting is really bad. Sorry about that.&lt;BR /&gt;&lt;BR /&gt;Eric&lt;BR /&gt;</description>
      <pubDate>Fri, 27 Jul 2007 16:14:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915416#M15034</guid>
      <dc:creator>manimal</dc:creator>
      <dc:date>2007-07-27T16:14:47Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915417#M15035</link>
      <description>Here's some more timing info. using 64-bit linux. With GCC:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames): 0.776799 (s)&lt;BR /&gt;Time for one frame: 0.000971 (s)&lt;BR /&gt;Frequency: 1029.867492&lt;BR /&gt;============================&lt;BR /&gt;libippim7.so.5.2 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames): 2.083939 (s)&lt;BR /&gt;Time for one frame: 0.002605 (s)&lt;BR /&gt;IPP Frequency: 383.888382&lt;BR /&gt;maxError: 0&lt;BR /&gt;&lt;BR /&gt;&lt;/PRE&gt;With Intel's compiler:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames): 1.013748 (s)&lt;BR /&gt;Time for one frame: 0.001267 (s)&lt;BR /&gt;Frequency: 789.150809&lt;BR /&gt;============================&lt;BR /&gt;libippim7.so.5.2 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames): 2.038634 (s)&lt;BR /&gt;Time for one frame: 0.002548 (s)&lt;BR /&gt;IPP Frequency: 392.419664&lt;BR /&gt;maxError: 0&lt;/PRE&gt;&lt;BR /&gt;The only notable compiler option I am using is -O2.&lt;BR /&gt;</description>
      <pubDate>Mon, 30 Jul 2007 18:22:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915417#M15035</guid>
      <dc:creator>manimal</dc:creator>
      <dc:date>2007-07-30T18:22:32Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915418#M15036</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;
&lt;P&gt;an IPP expert recommend you to change code in the following way (to optimize memory access):&lt;/P&gt;&lt;PRE&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#ifdef&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; WIN32&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#include&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;WINDOWS.H&gt;&lt;P&gt;&lt;/P&gt;&lt;/WINDOWS.H&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#else&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#include&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;SYS&gt;&lt;P&gt;&lt;/P&gt;&lt;/SYS&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#include&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;TIME.H&gt;&lt;P&gt;&lt;/P&gt;&lt;/TIME.H&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#endif&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#include&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;STDLIB.H&gt;&lt;P&gt;&lt;/P&gt;&lt;/STDLIB.H&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#include&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;STDIO.H&gt;&lt;P&gt;&lt;/P&gt;&lt;/STDIO.H&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#include&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;STRING.H&gt;&lt;P&gt;&lt;/P&gt;&lt;/STRING.H&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#include&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;IPP.H&gt;&lt;P&gt;&lt;/P&gt;&lt;/IPP.H&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#define&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; YDIM 1280&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#define&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; XDIM 150&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#define&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Cou
rier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; LINES 80&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#define&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; MAX_USHORT 65535&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#define&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; TIMING 10&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#define&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; MAX(a,b) (((a)&amp;lt;(b))?(b):(a))&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#define&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; MIN(a,b) (((a)&amp;gt;(b))?(b):(a))&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; randomu();&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; GetTimeOfDay(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;/FONT&gt;);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;void&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; libinfo(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;/FONT&gt;) {&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;const&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; IppLibraryVersion* lib = ippiGetLibVersion();&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("============================
");&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("%s %s %d.%d.%d.%d
", lib-&amp;gt;Name, lib-&amp;gt;Version,&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;lib-&amp;gt;major, lib-&amp;gt;minor, lib-&amp;gt;majorBuild, lib-&amp;gt;build);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("============================
");}&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;int&lt;/SPAN&gt;&lt;/FONT&gt;&lt;F ont="" face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; main(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;/FONT&gt; argc, &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;char&lt;/SPAN&gt;&lt;/FONT&gt; *argv[]) {&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/F&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;int&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; ii,jj, i;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;unsigned&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;short&lt;/SPAN&gt;&lt;/FONT&gt; *outData1,*outData2,*data,*subtractM;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;static&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;/FONT&gt; tmpVal;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;float&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; *multiplyM;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; start,stop;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;Ipp16u *tmpInt,*tmpSub;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;Ipp32f *tmpFlt,*tmpMult;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;int&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; intStep,fltStep,subStep,multStep;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;IppiSize roi={XDIM,YDIM};&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;int&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; maxError=0;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;data=malloc(YDIM*LINES*XDIM*&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;sizeof&lt;/SPAN&gt;&lt;/FONT&gt;(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;unsigned&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;short&lt;/SPAN&gt;&lt;/FONT&gt;));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;outData1=malloc(YDIM*LINES*XDIM*&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;sizeof&lt;/SPAN&gt;&lt;/FONT&gt;(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blu
e"&gt;unsigned&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;short&lt;/SPAN&gt;&lt;/FONT&gt;));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;outData2=malloc(YDIM*LINES*XDIM*&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;sizeof&lt;/SPAN&gt;&lt;/FONT&gt;(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;unsigned&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;short&lt;/SPAN&gt;&lt;/FONT&gt;));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;subtractM=malloc(YDIM*XDIM*&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;sizeof&lt;/SPAN&gt;&lt;/FONT&gt;(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;unsigned&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;short&lt;/SPAN&gt;&lt;/FONT&gt;));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;multiplyM=malloc(YDIM*XDIM*&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;sizeof&lt;/SPAN&gt;&lt;/FONT&gt;(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;float&lt;/SPAN&gt;&lt;/FONT&gt;));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;//Generate random data&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;for&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;(ii=0;ii&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; data[ii]=(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;unsigned&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;short&lt;/SPAN&gt;&lt;/FONT&gt;)(10000.0 + (2.0*randomu()-1.0)*2500.0);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;for&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;(ii=0;ii&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; subtractM[ii]=(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;unsigned&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;short&lt;/SPAN&gt;&lt;/FONT&gt;)(1000.0 + (2.0*randomu()-1.0)*200.0);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;for&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;(ii=0;ii&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; multiplyM[ii]=(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;float&lt;/SPAN&gt;&lt;/FONT&gt;)(1.0 + (2.0*randomu()-1.0)*0.2);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;/////////////////////////////////////////////////////&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Cou
rier New'"&gt;// Do the calculation&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;/////////////////////////////////////////////////////&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;start=GetTimeOfDay();&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;for&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;(ii=0;ii&lt;LINES&gt;&lt;/LINES&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt;&lt;/FONT&gt;(jj=0;jj&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;// Subtract and multiply&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; tmpVal=(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;/FONT&gt;)((data[(ii%LINES)*YDIM*XDIM+jj]-subtractM[jj])*multiplyM[jj]);&lt;FONT color="green"&gt;&lt;SPAN style="COLOR: green"&gt;//+0.5;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;// Data checks to make sure the data is still in range.&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;if&lt;/SPAN&gt;&lt;/FONT&gt; ((tmpVal &amp;lt; 0) || (tmpVal &amp;gt; MAX_USHORT)) {&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;const&lt;/SPAN&gt;&lt;/FONT&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;int&lt;/SPAN&gt;&lt;/FONT&gt; a=tmpVal;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; tmpVal=MAX(0,a);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; tmpVal=MIN(MAX_USHORT,a);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; }&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;// Implicit conversion to short&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; outData1[(ii%LINES)*YDIM*XDIM+jj]=tmpVal;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPA n="" style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; }&lt;P&gt;&lt;/P&gt;&lt;/SPA&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;stop=GetTimeOfDay();&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;/////////////////////////////////////////////////////&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;// End calculation&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;/////////////////////////////////////////////////////&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("Time for calculation (%i frames):	%f (s)
",TIMING*LINES, stop-start);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("Time for one frame:			%f (s)
",(stop-start)/(TIMING*LINES));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("Frequency:				%f
",(LINES*TIMING)/(stop-start));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;/////////////////////////////////////////////////////&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;// Do the calculation with IPP&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;/////////////////////////////////////////////////////&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;libinfo();&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;tmpInt=ippiMalloc_16u_C1(XDIM,YDIM,&amp;amp;intStep);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;tmpFlt=ippiMalloc_32f_C1(XDIM,YDIM,&amp;amp;fltStep);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;tmpSub=ippiMalloc_16u_C1(XDIM,YDIM,&amp;amp;subStep);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;tmpMult=ippiMalloc_32f_C1(XDIM,YDIM,&amp;amp;multStep);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;ippiCopy_16u_C1R(subtractM,XDIM*&lt;FONT color="blue"&gt;&lt;SPA n="" style="COLOR: blue"&gt;sizeof&lt;/SPA&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;short&lt;/SPAN&gt;&lt;/FONT&gt;),tmpSub,subStep,roi);&lt;P&gt;&lt;/P&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;ippiCopy_32f_C1R(multiplyM,XDIM*&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;sizeof&lt;/SPAN&gt;&lt;/FONT&gt;(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;float&lt;/SPAN&gt;&lt;/FONT&gt;),tmpMult,multStep,roi);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;start=GetTimeOfDay();&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;for&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;(ii=0;ii&lt;LINES&gt;&lt;/LINES&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;for&lt;/SPAN&gt;&lt;/FONT&gt;( i = 0; i &amp;lt; YDIM; i++ ){&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; Ipp16u *tmpin = &amp;amp;data[(ii%LINES)*YDIM*XDIM] + i * XDIM;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;Ipp16u *tmpint = (Ipp16u*)((Ipp8u*)tmpInt + intStep * i );&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; Ipp16u *tmpins = (Ipp16u*)((Ipp8u*)tmpSub + subStep * i );&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; Ipp32f *tmpflt = tmpFlt;&lt;FONT color="green"&gt;&lt;SPAN style="COLOR: green"&gt;//(Ipp32f*)((Ipp8u*)tmpFlt + fltStep * i );&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;Ipp32f *tmpmul = (Ipp32f*)((Ipp8u*)tmpMult + multStep * i );&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; Ipp16u *tmpout = &amp;amp;outData2[(ii%LINES)*YDIM*XDIM] + i * XDIM;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; ippsSub_16u_Sfs( tmpins, tmpin, tmpint, XDIM, 0 );&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;ippsConvert_16u32f( tmpint, tmpflt, XDIM );&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: '
Courier New'"&gt; &lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;ippsMul_32f_I( tmpmul, tmpflt, XDIM );&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; ippsConvert_32f16u_Sfs( tmpflt, tmpout, XDIM, ippRndZero, 0 );&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; }&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;stop=GetTimeOfDay();&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;ippiFree(tmpInt);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;ippiFree(tmpMult);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;ippiFree(tmpSub);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;ippiFree(tmpFlt);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;/////////////////////////////////////////////////////&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;// End calculation&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;/////////////////////////////////////////////////////&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="green" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: green; FONT-FAMILY: 'Courier New'"&gt;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("Time for IPP calculation (%i frames):	%f (s)
",TIMING*LINES, stop-start);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("Time for one frame:			%f (s)
",(stop-start)/(TIMING*LINES));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("IPP Frequency:				%f
",(LINES*TIMING)/(stop-start));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;for&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;(jj=0;jj&lt;YDIM&gt;&lt;/YDIM&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;if&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; (abs(outData1[jj]-outData2[jj]) &amp;gt; maxError)&lt; p=""&gt;&lt;/&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;maxError=abs(outData1[jj]-outData2[jj]);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;printf("maxError: %i
",maxError);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;free(subtractM);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;free(multiplyM);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;free(data);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;free(outData1);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;free(outData2);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;return&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; 0;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; randomu() {&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;return&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; (&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;)rand()/(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;)RAND_MAX;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; GetTimeOfDay(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;void&lt;/SPAN&gt;&lt;/FONT&gt;) {&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#ifdef&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; WIN32&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;static&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; LARGE_INTEGER freq; LARGE_INTEGER time;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT f="" ace="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;if&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;(freq.QuadPart==0) QueryPerformanceFrequency(&amp;amp;freq);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;QueryPerformanceCounter(&amp;amp;time);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;return&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; (&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;)time.QuadPart/freq.QuadPart;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#else&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;struct&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt; timeval currTime;&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;gettimeofday(&amp;amp;currTime,NULL);&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;return&lt;/SPAN&gt;&lt;/FONT&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;((&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;)((&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;)currTime.tv_sec+&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;(&lt;FONT color="blue"&gt;&lt;SPAN style="COLOR: blue"&gt;double&lt;/SPAN&gt;&lt;/FONT&gt;)currTime.tv_usec/1000000.0));&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" color="blue" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: 'Courier New'"&gt;#endif&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;P class="MsoNormal"&gt;&lt;FONT face="Courier New" size="2"&gt;&lt;SPAN style="FONT-SIZE: 10pt; FONT-FAMILY: 'Courier New'"&gt;}&lt;P&gt;&lt;/P&gt;&lt;/SPAN&gt;&lt;/FONT&gt;&lt;/P&gt;&lt;/PRE&gt;
&lt;P&gt;Regards,&lt;BR /&gt; Vladimir&lt;/P&gt;</description>
      <pubDate>Wed, 01 Aug 2007 12:57:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915418#M15036</guid>
      <dc:creator>Vladimir_Dudnik</dc:creator>
      <dc:date>2007-08-01T12:57:50Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915419#M15037</link>
      <description>Holy Cow! That much better! Here's the timing now:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames): 1.738825 (s)&lt;BR /&gt;Time for one frame: 0.002174 (s)&lt;BR /&gt;Frequency: 460.080812&lt;BR /&gt;============================&lt;BR /&gt;ippit7-5.2.dll 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames): 0.699127 (s)&lt;BR /&gt;Time for one frame: 0.000874 (s)&lt;BR /&gt;IPP Frequency: 1144.284661&lt;BR /&gt;maxError: 1&lt;/PRE&gt;Thanks Vladimir, and let your engineer know I am grateful!&lt;BR /&gt;</description>
      <pubDate>Thu, 02 Aug 2007 17:32:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915419#M15037</guid>
      <dc:creator>manimal</dc:creator>
      <dc:date>2007-08-02T17:32:28Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915420#M15038</link>
      <description>Okay, I'm trying to figure out where the speed improvements are coming from. First, I've tried to replace my original code with the signal processing calls that Vladimir suggested but without all the clever pointers:&lt;BR /&gt;&lt;PRE&gt; tmpInt=malloc(XDIM*YDIM*sizeof(short));&lt;BR /&gt; tmpFlt=malloc(XDIM*YDIM*sizeof(float));&lt;BR /&gt;&lt;BR /&gt; start=GetTimeOfDay();&lt;BR /&gt;&lt;BR /&gt; for(ii=0;ii&lt;LINES&gt;&lt;BR /&gt; ippsSub_16u_Sfs(subtractM,&amp;amp;data[(ii%LINES)*YDIM*XDIM],tmpInt, &lt;BR /&gt; XDIM*YDIM, 0 );&lt;BR /&gt; ippsConvert_16u32f( tmpInt, tmpFlt, XDIM*YDIM );&lt;BR /&gt; ippsMul_32f_I( multiplyM, tmpFlt, XDIM*YDIM );&lt;BR /&gt; ippsConvert_32f16u_Sfs( tmpFlt, &amp;amp;outData2[(ii%LINES)*YDIM*XDIM],&lt;BR /&gt; XDIM*YDIM, ippRndZero, 0 );&lt;BR /&gt; }&lt;/LINES&gt;&lt;/PRE&gt;This does pretty good too, but not as good as Vladimir's:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames):      1.700834 (s)&lt;BR /&gt;Time for one frame:                     0.002126 (s)&lt;BR /&gt;Frequency:                              470.357378&lt;BR /&gt;============================&lt;BR /&gt;ippit7-5.2.dll 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames):  0.815084 (s)&lt;BR /&gt;Time for one frame:                     0.001019 (s)&lt;BR /&gt;IPP Frequency:                          981.493513&lt;BR /&gt;maxError: 1&lt;BR /&gt;&lt;/PRE&gt;So, I think the lesson is, &lt;B&gt;use the signal processing calls if you can&lt;/B&gt;.&lt;BR /&gt;</description>
      <pubDate>Thu, 02 Aug 2007 17:44:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915420#M15038</guid>
      <dc:creator>manimal</dc:creator>
      <dc:date>2007-08-02T17:44:43Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915421#M15039</link>
      <description>Vladimir's code preforms the calculation in rows. So the next thing is to try the calculation in rows, but without all the clever pointer arithmetic:&lt;BR /&gt;&lt;PRE&gt; for(ii=0;ii&lt;LINES&gt; for( i = 0; i &amp;lt; YDIM; i++ ){&lt;BR /&gt;  ippsSub_16u_Sfs(&amp;amp;subtractM[i*XDIM],&amp;amp;data[(ii%LINES)*YDIM*XDIM+i*XDIM],&amp;amp;tmpInt[i*XDIM], &lt;BR /&gt;   XDIM, 0 );&lt;BR /&gt;  ippsConvert_16u32f( &amp;amp;tmpInt[i*XDIM], &amp;amp;tmpFlt[i*XDIM], XDIM );&lt;BR /&gt;  ippsMul_32f_I( &amp;amp;multiplyM[i*XDIM], &amp;amp;tmpFlt[i*XDIM], XDIM );&lt;BR /&gt;  ippsConvert_32f16u_Sfs( &amp;amp;tmpFlt[i*XDIM], &amp;amp;outData2[(ii%LINES)*YDIM*XDIM+i*XDIM],&lt;BR /&gt;   XDIM, ippRndZero, 0 );&lt;BR /&gt; }&lt;/LINES&gt;&lt;/PRE&gt;This is actually &lt;I&gt;slower&lt;/I&gt;:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames): 1.694970 (s)&lt;BR /&gt;Time for one frame: 0.002119 (s)&lt;BR /&gt;Frequency: 471.984726&lt;BR /&gt;============================&lt;BR /&gt;ippit7-5.2.dll 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames): 1.077069 (s)&lt;BR /&gt;Time for one frame: 0.001346 (s)&lt;BR /&gt;IPP Frequency: 742.756803&lt;BR /&gt;maxError: 1&lt;/PRE&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Thu, 02 Aug 2007 18:02:29 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915421#M15039</guid>
      <dc:creator>manimal</dc:creator>
      <dc:date>2007-08-02T18:02:29Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915422#M15040</link>
      <description>Now, try the same thing as above, but with clever pointers (thought not as clever a Vladimir's) :&lt;BR /&gt;&lt;PRE&gt;for(ii=0;ii&lt;LINES&gt; for( i = 0; i &amp;lt; YDIM; i++ ){&lt;BR /&gt; unsigned short *tmpin = &amp;amp;data[(ii%LINES)*YDIM*XDIM + i * XDIM];&lt;BR /&gt; unsigned short *tmpint = &amp;amp;tmpInt[XDIM * i];&lt;BR /&gt; unsigned short *tmpins = &amp;amp;subtractM[XDIM * i];&lt;BR /&gt; float *tmpflt = tmpFlt;&lt;BR /&gt;  float *tmpmul = &amp;amp;multiplyM[XDIM * i];&lt;BR /&gt; unsigned short *tmpout = &amp;amp;outData2[(ii%LINES)*YDIM*XDIM + i * XDIM];&lt;BR /&gt;&lt;BR /&gt;  ippsSub_16u_Sfs( tmpins, tmpin, tmpint, XDIM, 0 );&lt;BR /&gt; ippsConvert_16u32f( tmpint, tmpflt, XDIM );&lt;BR /&gt; ippsMul_32f_I( tmpmul, tmpflt, XDIM );&lt;BR /&gt; ippsConvert_32f16u_Sfs( tmpflt, tmpout, XDIM, ippRndZero, 0 );&lt;BR /&gt;&lt;BR /&gt; }&lt;BR /&gt;&lt;/LINES&gt;&lt;/PRE&gt;This code is just about as fast as Vladimir's code:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames):      1.692036 (s)&lt;BR /&gt;Time for one frame:                     0.002115 (s)&lt;BR /&gt;Frequency:                              472.803299&lt;BR /&gt;============================&lt;BR /&gt;ippit7-5.2.dll 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames):  0.696450 (s)&lt;BR /&gt;Time for one frame:                     0.000871 (s)&lt;BR /&gt;IPP Frequency:                          1148.682410&lt;BR /&gt;maxError: 1&lt;/PRE&gt;So &lt;B&gt;try not to do pointer arithmetic in IPP functions&lt;/B&gt;.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Thu, 02 Aug 2007 18:24:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915422#M15040</guid>
      <dc:creator>manimal</dc:creator>
      <dc:date>2007-08-02T18:24:14Z</dc:date>
    </item>
    <item>
      <title>Re: What am I doing wrong?</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915423#M15041</link>
      <description>Since,&lt;FONT face="Courier New"&gt; tmpFlt&lt;/FONT&gt; and &lt;FONT face="Courier New"&gt;tmpInt&lt;/FONT&gt; are just being used to store rows now, only allocate a row and skip the pointer arithmetic entirely:&lt;BR /&gt; &lt;PRE&gt;tmpInt=malloc(XDIM*sizeof(short));&lt;BR /&gt; tmpFlt=malloc(XDIM*sizeof(float));&lt;BR /&gt;&lt;BR /&gt; start=GetTimeOfDay();&lt;BR /&gt;&lt;BR /&gt; for(ii=0;ii&lt;LINES&gt; for( i = 0; i &amp;lt; YDIM; i++ ){&lt;BR /&gt; unsigned short *tmpin = &amp;amp;data[(ii%LINES)*YDIM*XDIM + i * XDIM];&lt;BR /&gt; unsigned short *tmpins = &amp;amp;subtractM[XDIM * i ];&lt;BR /&gt;  float *tmpmul = &amp;amp;multiplyM[XDIM* i ];&lt;BR /&gt; unsigned short *tmpout = &amp;amp;outData2[(ii%LINES)*YDIM*XDIM + i * XDIM];&lt;BR /&gt;&lt;BR /&gt;  ippsSub_16u_Sfs( tmpins, tmpin, tmpInt, XDIM, 0 );&lt;BR /&gt; ippsConvert_16u32f( tmpInt, tmpFlt, XDIM );&lt;BR /&gt; ippsMul_32f_I( tmpmul, tmpFlt, XDIM );&lt;BR /&gt; ippsConvert_32f16u_Sfs( tmpFlt, tmpout, XDIM, ippRndZero, 0 );&lt;BR /&gt;&lt;BR /&gt; }&lt;/LINES&gt;&lt;/PRE&gt;This is pretty fast now:&lt;BR /&gt;&lt;PRE&gt;Time for calculation (800 frames): 1.702078 (s)&lt;BR /&gt;Time for one frame: 0.002128 (s)&lt;BR /&gt;Frequency: 470.013800&lt;BR /&gt;============================&lt;BR /&gt;ippit7-5.2.dll 5.2 5.2.108.410&lt;BR /&gt;============================&lt;BR /&gt;Time for IPP calculation (800 frames): 0.499302 (s)&lt;BR /&gt;Time for one frame: 0.000624 (s)&lt;BR /&gt;IPP Frequency: 1602.236225&lt;BR /&gt;maxError: 1&lt;/PRE&gt;I think this is where I am going to quit. Here's my summary:&lt;BR /&gt;&lt;OL&gt;&lt;LI&gt;Use the IPPS library instead of IPPI wherever you can.&lt;/LI&gt;&lt;LI&gt;Do calculation with small chunks of data (rows in this case), rather than all at once. (I guess? Maybe? I'm not sure about this one.)&lt;BR /&gt;&lt;/LI&gt;&lt;LI&gt;Do pointer math, but not in IPP functions (and don't do extra pointer math).&lt;/LI&gt;&lt;/OL&gt;</description>
      <pubDate>Thu, 02 Aug 2007 18:53:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/What-am-I-doing-wrong/m-p/915423#M15041</guid>
      <dc:creator>manimal</dc:creator>
      <dc:date>2007-08-02T18:53:51Z</dc:date>
    </item>
  </channel>
</rss>

