I need a help.
I try to using ippsAndC_16u_I function on IPP 8.0 on my projects.
When I have tested on windows 7, the result is speed up. But on XP is not only lower than windows 7 but also lower than normal case.
I try to find out solution to fix it. And I have read release notes of IPP 8.0
I see "Intel® IPP static libraries are not compatible with Microsoft Windows Driver Development Kit* 2003. "
That is the reason, my project does't speed up ?
IPP library is OS-independent. I guess your application is not a driver or kernel mode app, so I think that the note on incompatibility with driver development kit is not related to your app. IPP dispatcher works based on CPU features - so if CPU supports SSE2 instruction set - it dispatches SSE2 library code, SSSE3 - SSSE3, etc. Could you provide information on which CPUs are used on Win-7 and Win-XP machines? which versions of OSes are used - ia32 or x64? The best way is to provide us an output from ippsGetLibVersion function from Win-7 and Win-XP runs.
Hi Igor Astakhov,
Thank for you answer.
Presently, my PC using Intel Core i5, 3470 with 32 bit environment set up for both Win-7 and Win-XP.
If my os XP 32 bit is not installed a driver or kernel mode, how can I resolved it ?
Thank and Best Regards,
Ok, clear now,
Win-XP doesn't support AVX (your CPU is IVB that supports AVX instruction set), while Win-7 - does, this is why you see difference in performance. OS must care about saving/restoring AVX state during task switching - at XP era nobody knew about AVX - so XP can't execute AVX code and IPP dispatches SSE4.x code under XP, while Win-7 with SP-1 supports AVX state and IPP dispatches there AVX code. Take a look at "Operating system support" at http://en.wikipedia.org/wiki/Advanced_Vector_Extensions
In this case, which is IPP version I should use on Win-XP 32 bit with Intel Core i5 ?
Because my products is using Win-XP 32 bit ,I don't want to upgrade os to Win-7. If I don't use os Win 7, which is the best solution I can use ?
there are no any special IPP versions for Win-XP or Win-7, to a greater extent IPP library is OS independent. IPP libraries are "fat" binaries - so they contain inside ALL versions of code for different CPU generations and IPP dispatcher dispatches the most appropriate code version based on features that are supported by your CPU and OS. So you should use standard IPP library for Windows. If you don't want to upgrade from Win-XP - you'll never get the benefit from AVX optimization (see my messages above).
I 've already do a simple sample follow this thread. But when I run in Win 7. the result are nearly same same.
my sample with count = 16000000
// standard sample : ~40ms
for (int i = 0; i < count; i ++)
x &= value
// Ipp code: ~40 ~41ms
ippsAndC_16u_I(value, x, count)
Here is my config:
Code generation: AVX
Floating point: fast
Use IPP static link (also try with dynamic link)
Environment is the same with thread owner. Am I missing anything ?