Community
cancel
Showing results for 
Search instead for 
Did you mean: 
alienpenguin
Beginner
72 Views

deploying an IPP based app

Hello, just a clarification
i wrote an app using IPP 7.0 using SC module (Speech Coding) now i found that i have to redistribute all the following files:

libiomp5.so
libippcore.so
libipps.so
libippsc.so
libippscw7.so (minimum SSE implementation)
libippsw7.so (minimum SSE implementation)

and also

libimf.so
libirc.so
libsvml.so

that seem to be required by libippscw7.so

is that right? 9 libraries?

with 6.1 i nedeed the first 6 (i was using the generic px libraries then)

thanks
0 Kudos
3 Replies
Vladimir_Dudnik
Employee
72 Views

Hello, Intel compiler may insert calls to some specific optimized functions (like for example sin()) when optimization is turned on at build stage. IPP optimized libraries were definetely built with optimization turned on. So you may need these libraries for your IPP based application.

Please also note that in order to be able to use the IPP optimization for the latest Intel processors you many need to add other cpu-specific ippSC libraries (IPP dispatcher will automatically detect processor capabilities and load most optimial cpu-specific library).

Additionally, if you want to reduce binary size of libraries redistributed with your application I would recommend you to consider IPP custom DLL option (you may find more details in IPP knowledge base on this).

Regards,
Vladimir

alienpenguin
Beginner
72 Views

Thanks for the reply Vladimir, i'll look into custom build then.
I don't get your advice about addir more cpu-specific libraries though. If i distribure the libippsc(w7) i will have the widest range of supported CPUs right? (all those supporting SSE2) since px is no more available in IPP7 w7 is the next big range. right?
Vladimir_Dudnik
Employee
72 Views

You are right, SSE2 optimized libraries will work on the most of modern cpu. But they will run SSE2 code onthose processorswhile it might be possible to automaticallyget an advantage of SSSE3 instruction set on Core2/Atom processor's family or SSE4.x on Nehalem/Westmere or AVX on Sandy Bridge. You just need to add S8, V8, P8 or G9 for IA32 (N8, U8, Y8 or E9 on Intel64) libraries (dispatcher will look for them in waterfall order, starting from the best suitable cpu-specific library and graciously falling back to lower instruction set if appropriate library not found).

And that is when custom DLL advantage starts to play its role. When your application only use relatively small subset of IPP functions you may build custom DLL from IPP static libraries which will include only those functions which your application need and as a result will have less binary size. Note, with custom DLL technique it is also possible to selectively choose what cpu-specific code you want to include into your DLL. For example, if you knowthat your application is targeted for Atom processors only you may choose only S8 on IA32 (N8 for Intel64) specific code.

Vladimir
Reply