<?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 hi Adriaan van Os, in Intel® Integrated Performance Primitives</title>
    <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108248#M25352</link>
    <description>&lt;P&gt;hi Adriaan van Os,&lt;/P&gt;

&lt;P&gt;could you provide a reproducer?(size of buffers you allocated, how you passed pointers and steps, did you perform your src pointer shift to ROI, etc.)&amp;nbsp;GDB output can't help with understanding the root of your issue. Also it is always better (and recommended) to provide an output from ippiGetLibVersion() in order to understand which optimization, ia32 or x64, static or dynamic, threaded or not, which version was working.&lt;/P&gt;

&lt;P&gt;const IppLibraryVersion* lib;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lib = ippiGetLibVersion();&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%s %s %d.%d.%d.%d\n", lib-&amp;gt;Name, lib-&amp;gt;Version, lib-&amp;gt;major, lib-&amp;gt;minor, lib-&amp;gt;majorBuild, lib-&amp;gt;build);&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
    <pubDate>Wed, 27 Apr 2016 08:47:12 GMT</pubDate>
    <dc:creator>Igor_A_Intel</dc:creator>
    <dc:date>2016-04-27T08:47:12Z</dc:date>
    <item>
      <title>Adventures with ippiFilterWiener (2)</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108247#M25351</link>
      <description>The documentation for ippiFilterWiener says the following about the noise parameter:

If this parameter is not defined (noise = 0), then the function estimates the noise level by averaging
through the image of all local variances σi,j, and stores the corresponding values in the noise for further use.

However, when I pass noise=0.0, ippiFilterWiener crashes (with what looks like a corrupted stack). This is with IPP 9.0.2 on Mac OS X and an Intel 2.5 GHz Core 2 Duo MacBook Pro. It happens with all ippiFilterWiener variants I tried. Below, gdb info for ippiFilterWiener_32f_C1R.

Regards,

Adriaan van Os


(gdb) bt
#0  0x0044a680 in s8_ownippsSum_32fc_Accur ()
#1  0x0044a75f in s8_ownippsSum_32f_Fast ()

(gdb) info registers all
eax            0x612a9c	6367900
ecx            0x1fe	510
edx            0x44a650	4499024
ebx            0x810	2064
esp            0xbfff8474	0xbfff8474
ebp            0xbfff848c	0xbfff848c
esi            0x62f000	6483968
edi            0xb	11
eip            0x44a680	0x44a680 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;
eflags         0x210216	2163222
cs             0x17	23
ss             0x1f	31
ds             0x1f	31
es             0x1f	31
fs             0x0	0
gs             0x37	55
st0            -nan(0xc000000000000000)	(raw 0xffffc000000000000000)
st1            1.8429914817468991589404685143008851e-37	(raw 0x3f84fadae16000000000)
st2            1.7609456388294814816641033672841063e-37	(raw 0x3f84efb0000000000000)
st3            7.3921886536716230873355441867864221e-38	(raw 0x3f83c93c094000000000)
st4            1.2518971788368537901486625344444118e-37	(raw 0x3f84aa66400000000000)
st5            1.2952924775761875792156629182813672e-38	(raw 0x3f818d0b7c0000000000)
st6            6.9833720180014973328020631173089637e-38	(raw 0x3f83be1b000000000000)
st7            3.6056194214217565132427279466616184e-38	(raw 0x3f82c44f000000000000)
fctrl          0x137f	4991
fstat          0x3863	14435
ftag           0x8000	32768
fiseg          0x17	23
fioff          0x44a6a8	4499112
foseg          0x1f	31
fooff          0x0	0
fop            0x1f7	503
xmm0           {
  v4_float = {0, 0, 0, 0.187211409}, 
  v2_double = {0, 5.1598354856965341e-315}, 
  v16_int8 = '\0' &lt;REPEATS 12="" times=""&gt;, "&amp;gt;?\264Y", 
  v8_int16 = {0, 0, 0, 0, 0, 0, 15935, -19367}, 
  v4_int32 = {0, 0, 0, 1044362329}, 
  v2_int64 = {0, 1044362329}, 
  uint128 = 6463860900704026624
}	(raw 0x59b43f3e000000000000000000000000)
xmm1           {
  v4_float = {0, 0, 0, 0.067506507}, 
  v2_double = {0, 5.1010832593468362e-315}, 
  v16_int8 = '\0' &lt;REPEATS 12="" times=""&gt;, "=\212@\332", 
  v8_int16 = {0, 0, 0, 0, 0, 0, 15754, 16602}, 
  v4_int32 = {0, 0, 0, 1032470746}, 
  v2_int64 = {0, 1032470746}, 
  uint128 = 15726721893375410176
}	(raw 0xda408a3d000000000000000000000000)
xmm2           {
  v4_float = {0, 0, 0, 0.144226447}, 
  v2_double = {0, 5.1455833123493324e-315}, 
  v16_int8 = '\0' &lt;REPEATS 12="" times=""&gt;, "&amp;gt;\023\260\031", 
  v8_int16 = {0, 0, 0, 0, 0, 0, 15891, -20455}, 
  v4_int32 = {0, 0, 0, 1041477657}, 
  v2_int64 = {0, 1041477657}, 
  uint128 = 1851000603858173952
}	(raw 0x19b0133e000000000000000000000000)
xmm3           {
  v4_float = {-0.0061361026, -0.0371395648, 0.222022787, 0.15741688}, 
  v2_double = {-1.0616635290980361e-20, 3.6044674592801975e-08}, 
  v16_int8 = "\273\311\021\\\275\030\037\250&amp;gt;cY\361&amp;gt;!1\344", 
  v8_int16 = {-17463, 4444, -17128, 8104, 15971, 23025, 15905, 12772}, 
  v4_int32 = {-1144450724, -1122492504, 1046698481, 1042362852}, 
  v2_int64 = {-4915378428291047512, 4495535745710240228}, 
  uint128 = 0xbbc9115cbd181fa83e6359f13e2131e4
}	(raw 0xe431213ef159633ea81f18bd5c11c9bb)
xmm4           {
  v4_float = {0, 0, 0.248581812, 0.173564509}, 
  v2_double = {0, 1.1379934465744102e-07}, 
  v16_int8 = "\000\000\000\000\000\000\000\000&amp;gt;~\214;&amp;gt;1\272\345", 
  v8_int16 = {0, 0, 0, 0, 15998, -29637, 15921, -17691}, 
  v4_int32 = {0, 0, 1048480827, 1043446501}, 
  v2_int64 = {0, 4503190863491480293}, 
  uint128 = 16553597523710475838
}	(raw 0xe5ba313e3b8c7e3e0000000000000000)
xmm5           {
  v4_float = {0, -0.0061361026, -0.031003464, 0.00444444502}, 
  v2_double = {1.5565620048787301e-314, -6.6569817986579441e-15}, 
  v16_int8 = "\000\000\000\000\273\311\021\\\274\375\372\372;\221\242\265", 
  v8_int16 = {0, 0, -17463, 4444, -17155, -1286, 15249, -23883}, 
  v4_int32 = {0, -1144450724, -1124205830, 999400117}, 
  v2_int64 = {3150516572, -4828427272823135563}, 
  uint128 = 0x00000000bbc9115cbcfdfafa3b91a2b5
}	(raw 0xb5a2913bfafafdbc5c11c9bb00000000)
xmm6           {
  v4_float = {0.111111112, 0.111111112, 0.111111112, 0.111111112}, 
  v2_double = {1.4228543251986994e-10, 1.4228543251986994e-10}, 
  v16_int8 = "=\343\2169=\343\2169=\343\2169=\343\2169", 
  v8_int16 = {15843, -29127, 15843, -29127, 15843, -29127, 15843, -29127}, 
  v4_int32 = {1038323257, 1038323257, 1038323257, 1038323257}, 
  v2_int64 = {4459564432529526329, 4459564432529526329}, 
  uint128 = 0x3de38e393de38e393de38e393de38e39
}	(raw 0x398ee33d398ee33d398ee33d398ee33d)
xmm7           {
  v4_float = {0, 0, 0, 0}, 
  v2_double = {0, 0}, 
  v16_int8 = '\0' &lt;REPEATS 15="" times=""&gt;, 
  v8_int16 = {0, 0, 0, 0, 0, 0, 0, 0}, 
  v4_int32 = {0, 0, 0, 0}, 
  v2_int64 = {0, 0}, 
  uint128 = 0
}	(raw 0x00000000000000000000000000000000)
mxcsr          0x1faf	8111
mm0            {
  uint64 = -4301219119115534336, 
  v2_int32 = {0, -1001455616}, 
  v4_int16 = {0, 0, 0, -15281}, 
  v8_int8 = "\000\000\000\000\000\000O\304"
}	(raw 0xc44f000000000000)
mm1            {
  uint64 = -4611686018427387904, 
  v2_int32 = {0, -1073741824}, 
  v4_int16 = {0, 0, 0, -16384}, 
  v8_int8 = "\000\000\000\000\000\000\000\300"
}	(raw 0xc000000000000000)
mm2            {
  uint64 = -370736216871534592, 
  v2_int32 = {0, -86318752}, 
  v4_int16 = {0, 0, -7840, -1318}, 
  v8_int8 = "\000\000\000\000`\341\332\372"
}	(raw 0xfadae16000000000)
mm3            {
  uint64 = -1175439502743699456, 
  v2_int32 = {0, -273678336}, 
  v4_int16 = {0, 0, 0, -4176}, 
  v8_int8 = "\000\000\000\000\000\000\260\357"
}	(raw 0xefb0000000000000)
mm4            {
  uint64 = -3946269003000840192, 
  v2_int32 = {0, -918812352}, 
  v4_int16 = {0, 0, 2368, -14020}, 
  v8_int8 = "\000\000\000\000@\t&amp;lt;\311"
}	(raw 0xc93c094000000000)
mm5            {
  uint64 = -6168172270893137920, 
  v2_int32 = {0, -1436139520}, 
  v4_int16 = {0, 0, 16384, -21914}, 
  v8_int8 = "\000\000\000\000\000@f\252"
}	(raw 0xaa66400000000000)
mm6            {
  uint64 = -8283390750176051200, 
  v2_int32 = {0, -1928627200}, 
  v4_int16 = {0, 0, 31744, -29429}, 
  v8_int8 = "\000\000\000\000\000|\v\215"
}	(raw 0x8d0b7c0000000000)
mm7            {
  uint64 = -4748201382132056064, 
  v2_int32 = {0, -1105526784}, 
  v4_int16 = {0, 0, 0, -16869}, 
  v8_int8 = "\000\000\000\000\000\000\033\276"
}	(raw 0xbe1b000000000000)&lt;/REPEATS&gt;&lt;/REPEATS&gt;&lt;/REPEATS&gt;&lt;/REPEATS&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;</description>
      <pubDate>Wed, 27 Apr 2016 08:30:26 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108247#M25351</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-04-27T08:30:26Z</dc:date>
    </item>
    <item>
      <title>hi Adriaan van Os,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108248#M25352</link>
      <description>&lt;P&gt;hi Adriaan van Os,&lt;/P&gt;

&lt;P&gt;could you provide a reproducer?(size of buffers you allocated, how you passed pointers and steps, did you perform your src pointer shift to ROI, etc.)&amp;nbsp;GDB output can't help with understanding the root of your issue. Also it is always better (and recommended) to provide an output from ippiGetLibVersion() in order to understand which optimization, ia32 or x64, static or dynamic, threaded or not, which version was working.&lt;/P&gt;

&lt;P&gt;const IppLibraryVersion* lib;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; lib = ippiGetLibVersion();&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; printf("%s %s %d.%d.%d.%d\n", lib-&amp;gt;Name, lib-&amp;gt;Version, lib-&amp;gt;major, lib-&amp;gt;minor, lib-&amp;gt;majorBuild, lib-&amp;gt;build);&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Wed, 27 Apr 2016 08:47:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108248#M25352</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2016-04-27T08:47:12Z</dc:date>
    </item>
    <item>
      <title>Thanks for looking into this.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108249#M25353</link>
      <description>Thanks for looking into this.

The iipiLibVersion is

ippIP Atom (s8 threaded) 9.0.2 (r49912)Dec 28 2015 9.0.2.49912

IPP is statically linked into the application executablewith ld, namely

libippcore.a
libippi.a
libippcv.a
libippcc.a
libipps.a
libiomp5.a

I do offset the ROI and the data pointers with the border radius to keep ippiWiener filter inside the image. Also, I do call ippiFilterWienerGetBufferSize and ippMalloc to allocate the buffer. The filter works fine with any value for noise between (but not including) 0.0 and 1.0. This makes it unlikely that this is an application errror.

Regards,

Adriaan van Os</description>
      <pubDate>Wed, 27 Apr 2016 09:38:12 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108249#M25353</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-04-27T09:38:12Z</dc:date>
    </item>
    <item>
      <title>Could you try the same (noise</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108250#M25354</link>
      <description>&lt;P&gt;Could you try the same (noise==0) with the single-threaded libraries? I'll try to create some reproducer at my side - but there is no any guarantee that my test code will also crash. If you can't provide any reproducer - could you at least provide the full function name and size parameters - width, height, kernel size, step in bytes - in order guaranteed to be on the same page. (otherwise it looks like for looking for a black cat in a dark room,&amp;nbsp;when nobody knows is this cat in this room or not...)&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Wed, 27 Apr 2016 11:50:42 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108250#M25354</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2016-04-27T11:50:42Z</dc:date>
    </item>
    <item>
      <title>Would it help if I send you</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108251#M25355</link>
      <description>Would it help if I send you (by private email) a Mac OS X GUI app that reproduces the crash and links to dynamic libraries ? Then, you can use you own source-debuggable libraries and a debugger, to see all parameters, etcetera.

What must be the path to the dynamic libraries ?</description>
      <pubDate>Wed, 27 Apr 2016 12:34:28 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108251#M25355</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-04-27T12:34:28Z</dc:date>
    </item>
    <item>
      <title>Tried it, but single-threaded</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108252#M25356</link>
      <description>Tried it, but single-threaded crashes too. Oh, I forgot to mention, this is IA-32.

Regards,

Adriaan van Os</description>
      <pubDate>Wed, 27 Apr 2016 12:45:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108252#M25356</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-04-27T12:45:18Z</dc:date>
    </item>
    <item>
      <title>Ok, I've taken a look at the</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108253#M25357</link>
      <description>&lt;P&gt;Ok, I've taken a look at the sources - there is no internal threading for C1R Wiener functions as well as for ippsMean_32f that is used internally, therefore doesn't matter threaded or not libraries are used (C3, C4, AC4 - have OMP implementation). I don't think that sharing of your GUI code will not&amp;nbsp;help - guess we'll spend more time to build it and make workable at our side. I'll make a small cmd line reproducer and share with you.&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Wed, 27 Apr 2016 13:10:10 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108253#M25357</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2016-04-27T13:10:10Z</dc:date>
    </item>
    <item>
      <title>I meant a GUI executable, not</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108254#M25358</link>
      <description>I meant a GUI executable, not its sources, so no need to build anything. On Mac OS X it is easy to debug a dynamic lib, even when you have access to the sources of the library only. So, that would still be an option if your command-line executable doesn't reproduce it. Thanks for looking into this.

Regards,

Adriaan van Os</description>
      <pubDate>Wed, 27 Apr 2016 14:09:04 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108254#M25358</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-04-27T14:09:04Z</dc:date>
    </item>
    <item>
      <title>Having your GUI executable I</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108255#M25359</link>
      <description>&lt;P&gt;Having your GUI executable I can't see how you use FilterWiener and parameters - I don't think there is any issue in the library - this is too old function that has not been changed for years, it (as all other IPP functions) has several types of tests that are executed with different seeds on the regular basis: algorithmic (of course for all ranges of sizes for roi, mask and noise zero/non-zero), bad-arg, misalignment, mem-bound, thread-safe, special conditions, performance, - on all OSes we support and on all HW we support. Please try the reproducer code below - if you can make this code crash with some legal parameters - please report me back these parameters:&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;#include&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&amp;lt;stdio.h&amp;gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;#include&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"ipp.h"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;static&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; libInfo( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;void&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; ){&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;const&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;IppLibraryVersion&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; *lib;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;lib = ippiGetLibVersion();&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"Intel(R) Integrated Performance Primitives\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"Wiener filter demo\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"Library IppIP\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"CPU : %s\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;, lib-&amp;gt;targetCpu );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"Name : %s\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;, lib-&amp;gt;Name );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"Version : %s\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;, lib-&amp;gt;Version );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"Build date: %s\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;, lib-&amp;gt;BuildDate );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;#define&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;MASK&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; 5&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;#define&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;WIDTH&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; (640+&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;MASK&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;-1)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;#define&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;HEIGHT&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; (480+&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;MASK&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;-1)&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; main( ){&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;int&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; bufSize, srcStep, dstStep, seed = 0;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;float&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; noise = 0.0f;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;IppStatus&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; status = ippStsNoErr;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;IppiSize&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; roi, mask, image = {&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;WIDTH&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;,&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;HEIGHT&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;};&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;IppiPoint&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; anchor;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;Ipp32f&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; *pSrc, *pDst, *pImage;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;Ipp8u&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; *pBuf;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;ippInit();&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;ippSetCpuFeatures( 0x3F ); &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#008000" face="Consolas" size="2"&gt;&lt;FONT color="#008000" face="Consolas" size="2"&gt;&lt;FONT color="#008000" face="Consolas" size="2"&gt;/* Atom - S8 code */&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;mask.width = mask.height = &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;MASK&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;anchor.x = mask.width &amp;gt;&amp;gt; 1;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;anchor.y = mask.height &amp;gt;&amp;gt; 1;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;roi.width = &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;WIDTH&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; - mask.width + 1;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;roi.height = &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;HEIGHT&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; - mask.height + 1;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;pImage = ippiMalloc_32f_C1( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;WIDTH&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;, &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;&lt;FONT color="#6f008a" face="Consolas" size="2"&gt;HEIGHT&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;, &amp;amp;srcStep );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;pDst = ippiMalloc_32f_C1( roi.width, roi.height, &amp;amp;dstStep );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;pSrc = (&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;Ipp32f&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;*)((&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;Ipp8u&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;*)pImage + ( mask.height - anchor.y - 1 ) * srcStep + &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;sizeof&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;&lt;FONT color="#2b91af" face="Consolas" size="2"&gt;Ipp32f&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;) * ( mask.width - anchor.x - 1 ));&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;libInfo();&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;ippiImageJaehne_32f_C1R( pImage, srcStep, image );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;ippiAddRandUniform_32f_C1IR( pImage, srcStep, image, 0.0f, 0.1f, &amp;amp;seed );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;ippiFilterWienerGetBufferSize( roi, mask, 1, &amp;amp;bufSize );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;pBuf = ippsMalloc_8u( bufSize );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;status = ippiFilterWiener_32f_C1R( pSrc, srcStep, pDst, dstStep, roi, mask, anchor, &amp;amp;noise, pBuf );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;if&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;( status != ippStsNoErr ){&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf( &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"\nippiWiener function return error status:\n %s\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;, ippGetStatusString( status ));&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;} &lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;else&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; {&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;printf(&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;&lt;FONT color="#a31515" face="Consolas" size="2"&gt;"\nippiWiener detected noise = %f\n"&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;, noise );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;ippiFree( pImage );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;ippiFree( pDst );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;ippsFree( pBuf );&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;&lt;FONT color="#0000ff" face="Consolas" size="2"&gt;return&lt;/FONT&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt; 0;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;}&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;&lt;FONT face="Consolas" size="2"&gt;&lt;FONT face="Consolas" size="2"&gt;how to build: copy this source and ipp headers + ipp static 32-bit libs to some folder:&lt;/FONT&gt;&lt;/FONT&gt;&lt;/P&gt;

&lt;P&gt;:wiener iastakh$ gcc -m32 -c wiener_tst.c -o wien.o&lt;/P&gt;

&lt;P&gt;:wiener iastakh$ gcc -m32 wien.o&amp;nbsp; libippi.a libipps.a libippvm.a libippcore.a -o wien&lt;/P&gt;

&lt;P&gt;:wiener iastakh$ ./wien&lt;BR /&gt;
	Intel(R) Integrated Performance Primitives&lt;BR /&gt;
	Wiener filter demo&lt;BR /&gt;
	Library IppIP&lt;BR /&gt;
	CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : s8&lt;BR /&gt;
	Name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; : ippIP Atom (s8)&lt;BR /&gt;
	Version&amp;nbsp;&amp;nbsp; : 9.0.2 (r49912)&lt;BR /&gt;
	Build date: Dec 28 2015&lt;/P&gt;

&lt;P&gt;ippiWiener detected noise = 0.092751&lt;/P&gt;

&lt;P&gt;uname -a&lt;/P&gt;

&lt;P&gt;Darwin&amp;nbsp;xxxxxxxxxx 13.4.0 Darwin Kernel Version 13.4.0: Sun Aug 17 19:50:11 PDT 2014; root:xnu-2422.115.4~1/RELEASE_X86_64 x86_64&lt;/P&gt;

&lt;P&gt;regards, Igor&lt;/P&gt;</description>
      <pubDate>Wed, 27 Apr 2016 15:14:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108255#M25359</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2016-04-27T15:14:00Z</dc:date>
    </item>
    <item>
      <title>&gt; Having your GUI executable</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108256#M25360</link>
      <description>&amp;gt; Having your GUI executable I can't see how you use FilterWiener and parameters 

With all due respect, this is not true. If you debug a dynamic library on Mac OS X, you can see all calls with the values of all parameters used, It is really as simple as it could be - and a very powerful tool.

Regards,

Adriaan van Os</description>
      <pubDate>Wed, 27 Apr 2016 16:06:23 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108256#M25360</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-04-27T16:06:23Z</dc:date>
    </item>
    <item>
      <title>I found out that the crash</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108257#M25361</link>
      <description>I found out that the crash has to do with smart-linking. That is, without ld being passed -dead_strip -no_dead_strip_inits_and_terms it doesn't crash. So, there must be some hidden init code somewhere. Must some compiler glue be referenced at startup, so that ld links it in ?

I noticed that there are a lot op NOPs above the instruction where it crashes. Is this intended or modified at runtime ?

0x0044a633 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	jmp    0x44a640 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;
0x0044a635 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a636 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a637 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a638 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a639 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a63a &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a63b &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a63c &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a63d &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a63e &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
0x0044a63f &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	nop    
crashes here ----&amp;gt; 0x0044a640 &lt;S8_OWNIPPSSUM_32FC_ACCUR&gt;:	fadds  (%esi)&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;&lt;/S8_OWNIPPSSUM_32FC_ACCUR&gt;</description>
      <pubDate>Thu, 28 Apr 2016 17:05:56 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108257#M25361</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-04-28T17:05:56Z</dc:date>
    </item>
    <item>
      <title>I did some more debugging and</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108258#M25362</link>
      <description>&lt;P&gt;I did some more debugging and found the following. The crash disappears when adding dummy references to the following calls (or by instructing ld not to dead-strip those calls)&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco"&gt;ippsSum_32s_Sfs,&amp;nbsp;ippsSum_32f,&amp;nbsp;ippsSum_32fc,&amp;nbsp;ippsSum_64f and&amp;nbsp;ippsSum_64fc&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco"&gt;So, the bug is that ippFilterWiener is calling variants (or internal code) of those functions (when the noise level is 0.0) in a way that is not compatible with ld's&amp;nbsp;-dead_strip linker option. I assume&amp;nbsp;ippFilterWiener is using a nasty trick to call ownippsSum, otherwise ld would recognize the call. Anyway, as of the Xcode&amp;nbsp;June 2004 release, library code must be compatible with&amp;nbsp;-dead_strip.&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco"&gt;Regards,&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco"&gt;Adriaan van Os&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Monaco"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 14 May 2016 16:00:31 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108258#M25362</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-05-14T16:00:31Z</dc:date>
    </item>
    <item>
      <title>Since nobody seems interested</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108259#M25363</link>
      <description>&lt;P&gt;Since nobody seems interested in fixing bugs, I will no longer spend time debugging and reporting them.&lt;/P&gt;

&lt;P&gt;Regards,&lt;/P&gt;

&lt;P&gt;Adriaan van Os&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Jun 2016 06:18:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108259#M25363</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-06-01T06:18:59Z</dc:date>
    </item>
    <item>
      <title>Hi Adriaan van Os,</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108260#M25364</link>
      <description>&lt;P&gt;Hi Adriaan van Os,&lt;/P&gt;

&lt;P&gt;IPP works correctly in all other environments - different kinds of Linux, Yocto, QNX, VxWorks, Android, Windows, etc. Therefore I guess that it is XCode ld's&amp;nbsp;-dead_strip linker option bug, not IPPs one. There are no any tricks in calling internal functions. For these particular calls:&lt;/P&gt;

&lt;P&gt;IPPFUN( IppStatus, ippiFilterWiener_32f_C1R,( const Ipp32f* pSrc, int srcStep,&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; Ipp32f* pDst, int dstStep, IppiSize dstRoiSize, IppiSize maskSize,&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; IppiPoint anchor, Ipp32f noise[1], Ipp8u* pBuffer ))&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp; OWN_WIENER_BADARG_TST1( pSrc, srcStep, pDst, dstStep, dstRoiSize, maskSize,&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;&amp;nbsp;&amp;nbsp;&amp;nbsp; anchor, noise, pBuffer )&lt;BR /&gt;
	&amp;nbsp; {&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int width = dstRoiSize.width, height = dstRoiSize.height;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int mw = maskSize.width, mh = maskSize.height, bufStep, h;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp32f shum, *pBuf = NULL, *pLocMean, *pLocVar;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp32f *pV, *pM, min, max;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp32f mpy = 1.f / ( mw * mh ), tmp;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp32f *pS, *pD, *strtSrc, *pS1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; Ipp64f variance = 0;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IppiSize tmpRoi;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; int&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize;&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; strtSrc = (Ipp32f*)( (Ipp8u*)pSrc - ( mh - anchor.y - 1 ) * srcStep -&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; sizeof(Ipp32f) * ( mw - anchor.x - 1 ));&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; tmpRoi.width = width + mw - 1; tmpRoi.height = height + mh - 1;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ippiMinMax_32f_C1R( strtSrc, srcStep, tmpRoi, &amp;amp;min, &amp;amp;max );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; max = max - min; max *= max;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize = ALIGN_ON_4_FLOAT( dstRoiSize.width + BUF_JUNK + maskSize.width );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; bufSize = bufSize * 4 * sizeof(Ipp32f) + ALIGN_MAGIC;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; ippsZero_8u( pBuffer, bufSize );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; pBuf = (Ipp32f*)ALIGN_PTR( pBuffer );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; bufStep = ALIGN_ON_4_FLOAT( width + mw + BUF_JUNK ) * sizeof(Ipp32f);&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; pLocMean = pBuf;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; pLocVar = (Ipp32f*)( (Ipp8u*)pBuf + 2 * bufStep );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; if( wabs( noise[0] ) &amp;lt; IPP_EPS_32F ){/* if the noise variance is not given */&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; pM = pLocMean; pV = pLocVar;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; for( h = 0; h &amp;lt; height; h++ ){&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; pS = (Ipp32f*)( (Ipp8u*)strtSrc + h * srcStep );&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; owniLocalVarMean_32f_C1L( pS, srcStep, maskSize, pM, pV,&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; bufStep, dstRoiSize, h, mpy, 0.f );&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; ippsMean_32f( pV, width, &amp;amp;tmp, ippAlgHintFast );&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; pV = (Ipp32f*)( (Ipp8u*)pV + bufStep );&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; pM = (Ipp32f*)( (Ipp8u*)pM + bufStep );&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; variance += tmp;&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; bufStep = -bufStep;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if( bufStep &amp;lt; 0 ) bufStep = - bufStep;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; shum = (Ipp32f)( variance / height );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; noise[0] = shum * mpy / max;&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; } else {.................&lt;/P&gt;

&lt;P&gt;where Sum functions are called from ippsMean:&lt;/P&gt;

&lt;P&gt;Ipp32f ownippsMean_32f( const Ipp32f *pSrc, int len, IppHintAlgorithm hint )&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return (Ipp32f)( ownippsSum_32f( pSrc, len, hint ) / (Ipp64f)len );&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;IPPFUN(IppStatus,ippsMean_32f,(const Ipp32f* __RESTRICT pSrc,int len,Ipp32f* __RESTRICT pMean,&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; IppHintAlgorithm hint))&lt;BR /&gt;
	{&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; IPP_BAD_PTR2_RET(pSrc,pMean)&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; IPP_BAD_SIZE_RET(len)&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; *pMean = ownippsMean_32f( pSrc, len, hint );&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return ippStsNoErr;&lt;BR /&gt;
	}&lt;/P&gt;

&lt;P&gt;Regards, Igor&lt;/P&gt;

&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 01 Jun 2016 07:55:32 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108260#M25364</guid>
      <dc:creator>Igor_A_Intel</dc:creator>
      <dc:date>2016-06-01T07:55:32Z</dc:date>
    </item>
    <item>
      <title>Thanks for you reply.</title>
      <link>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108261#M25365</link>
      <description>&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Thanks for you reply.&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;So, we are looking at what seems to be a linker, assembler or compiler bug (in order of increasing probability). I bet it has to do with the compiler trying to inline&amp;nbsp;Ipp32f ownippsMean_32f&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&amp;nbsp;&lt;/P&gt;

&lt;DIV&gt;&lt;SPAN style="line-height: 18px; font-size: 12px; "&gt;Ipp32f ownippsMean_32f( const Ipp32f *pSrc, int len, IppHintAlgorithm hint )&lt;BR /&gt;
	{&lt;BR /&gt;
	&amp;nbsp;&amp;nbsp;&amp;nbsp; return (Ipp32f)( ownippsSum_32f( pSrc, len, hint ) / (Ipp64f)len );&lt;BR /&gt;
	}&lt;/SPAN&gt;&lt;/DIV&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;which can checked by adding __attribute__ ((noinline)) to it.&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Regards,&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;&amp;nbsp;&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica"&gt;Adriaan van Os&lt;/P&gt;

&lt;P style="margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px"&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 18 Jun 2016 08:28:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Integrated-Performance/Adventures-with-ippiFilterWiener-2/m-p/1108261#M25365</guid>
      <dc:creator>Adriaan_van_Os</dc:creator>
      <dc:date>2016-06-18T08:28:43Z</dc:date>
    </item>
  </channel>
</rss>

