Intel® Integrated Performance Primitives
Deliberate problems developing high-performance vision, signal, security, and storage applications.

Using IPP on Windows 2008 and Windows 2012

Lu__Peter
Beginner
681 Views

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.

0 Kudos
10 Replies
Sergey_K_Intel
Employee
681 Views

Hi Peter,

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.

0 Kudos
Lu__Peter
Beginner
681 Views

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.

 

Win2008_CPU.jpgWin2012_CPU.jpg

0 Kudos
Sergey_K_Intel
Employee
681 Views

Peter,

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?

0 Kudos
Lu__Peter
Beginner
681 Views

Hi, Sergey

Our encoder is an 32-bit application, running on 64-bit OS.

So, linker must use 32-bit library.

Compiler is Visual Studio 2008.

0 Kudos
Sergey_K_Intel
Employee
681 Views

Peter,

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?

0 Kudos
Lu__Peter
Beginner
681 Views

Thanks.

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.

0 Kudos
Sergey_K_Intel
Employee
681 Views

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.

0 Kudos
Bernard
Valued Contributor I
681 Views

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.

0 Kudos
Roman_T_
New Contributor I
681 Views

Hi, Peter!

Have you finished with ps_ippsc.exe tests?

Are test results identical (for Windows Server 2008 and Windows Server 2012) ?

Best regards,
Roman

0 Kudos
Lu__Peter
Beginner
681 Views

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.

0 Kudos
Reply