Question: performance is different on Win 2008 (x64) vs Win 2012 (x64), by using same code, same src, and same CPU.
CPU : Intel Xeon X5650 @ 2.67GHz (2 processors)
Using IPP 7.0, we run G.723 encoder and input same voice source. On Windows 2008 is faster than on Windows 2012 by double times.
Library version shows: IPPSC library used: 7.0.205 Build 1072, name ippscw7_l.lib
IPP shows: CPU type (0x45), feature (0x0CDF). All information on Win 2008 is identical to Win 2012.
However, encoder is much faster on Win2008. Processing time on Win2012 takes longer by 2 times.
First of all, "ippscw7" is improper library for this CPU. It should be "ippsy8" at least (SSE4.2 on Intel(R) 64). Please, make sure you have IPP library properly initialized with call to ippStaticInit(), ippInit(), whatever, prior to further IPP calls.
May be after that the performance of 2008/2012 will be more or less similar. If not, please reply.
Using ippStaticInit() or ippInit(), we get IPPSC library used: 7.0.205 Build 1072, name ippscp8_l.lib+
It doesn't have improvement by loading ippscp8_l.lib+ or ippscw7_l.lib
Below pictures: the first one is CPU driver in Win2008, the other is in Win2012.
Execute encoder in Win2012 still takes longer than Win2008 by 2 times.
Please advise. Thanks.
Let's do the next step)). Libraries "p8+" and "w7" are 32-bit IPP libraries taken from $(IPPROOT)\lib\ia32. In your original message you have written about VS2008(x64) and VS2012(x64). Is the 64-bit platform in your project essential? If yes, you need to link 64-bit IPP libraries from $(IPPROOT)\lib\intel64.
What compilers do you use in your experiments? Microsoft's in both cases?
Do you have code profiler? Intel VTune Amplifier or Microsoft's in the Studio? It would be interesting to compare the list of top CPU-hungry functions in both cases.
Since the list of IPP functions used in your code is the same (they are binaries, so no external SDKs - 2008 or 2012 - matter), there should be another function from external run-time library, which makes 2012 RTL perform worse.
Then, compare compiler options in both cases, they should provide the same level of optimization.
Then, what does it mean "Compiler is Visual Studio 2008"? Do you mean that Microsoft C/C++ compiler is used for both Visual Studios (VS2008 in the first case and VS2012 in the second)? Or, I miss something?
My encoder with IPP is compiled in Microsoft Visual Studio 2008.
Then, run on OS Windows 2008 and Windows 2012, respectively.
We found the performance different on Windows 2008 and Windows 2012.
The encoder running on OS Windows 2008 is faster than on OS Windows 2012.
So you meant Windows Server 2008 and Windows Server 2012? Oops, I was thinking about VS2008/VS2012...sorry about that.
OK, in this case you can use performance tests from IPP installation from $IPPROOT/tools/ia32/perfsys. Copy ps_ippsc.exe to a directory with write permissions, start "ps_ippsc.exe" on both OSes with command line "ps_ippsc.exe -B -o -r". "sc" means speech coding.
You'll get ps_ippsc.csv file with header, describing CPU, OS and IPP library used, and Excel-ready CSV data. You may be interested in functions with "*723*" in the name and column "Clocks", which is CPU clocks used to process one element of input data. In general, "Clocks" must be the same for the same CPU regardless of OS. Compare the results for both OSes.
The best option is to use VTune for code level profiling on both machines.I was thinking about the architectural or environmental changes between those two OS's that could cause the code to run slower.Another option to consider is checking CPU load and overall performance of the Win 2012 machine.
We found Microsoft CPU usage in Win 2008 and Win 2012 seems to be different, not consistent on CPU calculation.
IPP library performs OK in Win 2008 or 2012, not too much degradation.