The static link libraries provide flexibility in CPU dispatch and benefit of small code size. However, if multiple applications are using the same Intel IPP functions, code is duplicated in memory. The graphic on this page illustrates the relationship between different static libraries.
Static linking relates to establishing a "fixed" link to the library version corresponding to the specific CPU. It means that when linked statically, you can use the function versions for the chosen processor only.
In the static link case, all versions of functions of the same domain are merged into one library and the Intel IPP function names are prefixed by the processor abbreviation. For example, ippsmerged.lib (libippsmerged.a for Linux*) contains px_ippsCopy_8u, a6_ippsCopy_8, and w7_ippsCopy_8u.
Note that the code optimized for the Intel® Itanium® processor -- not annotated -- is in a separate library because the library is in a different binary format.
The merged libraries (such as
ippsmerged.lib) contain all
processor-specific implementations. Each function entry point is prefixed
by processor abbreviation. The merged library entries can be directly
called from application code, if necessary.
There are obvious restrictions in the case of static linking. For example, if your application is linked statically to the Intel® Pentium® III processor, your application is very likely to crash on systems based on the Intel® Pentium® II processor. On the other hand, if you upgrade your system to the Intel® Pentium® 4 processor, the application performance may be significantly slower than if you use the Pentium 4 processor-optimized code.