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

Question on static linking with dispatching (ippsemerged.lib)

Kaan_Gök
Beginner
381 Views
Hi;
I'm currently using the image processing domain, by static dispatching.
I'm including these libs for my linker:

ippcorel.lib
ippiemerged.lib
ippimerged.lib
ippsmerged.lib

Everything was fine until I noticed a phrase on the documentation:

"To use the static linking libraries, you need link to ipp*emerged.lib, ipp*merged.lib,
ippsemerged.lib, ippsmerged.lib, and ippcorel.lib."

Please note that I'm not including the ippsemerged library. But I'm not getting linker errors either.

There are two possibilities:
1) The image processing domain processor specific functions directly call the appropriate processor specific signal processing functions, therefore ippsemerged.lib is not required, and documentation is somewhat misleading.
2) Image processing functions call the generic versions of signal domain funcs, and I'm getting unoptimized code. (I did not measure the performance actually, because image processing is not the primary focus of my application, but realisting rendering will be in a couple of months)

Which case is correct? Should I include the ippsemerged.lib library even everything seems to run fine?
TIA
0 Kudos
5 Replies
elhefe38
Beginner
381 Views
Which case is correct? Should I include the ippsemerged.lib library even everything seems to run fine?
TIA

"If it ain't broken, why fix it ?" ;)
Should you miss a function, you are likely to be warned by the compiler !

Regards




0 Kudos
pvonkaenel
New Contributor III
381 Views

The ipps library is for signal processing routines. If you have limited yourself to the image processing calls (ippi), then you might not be calling anything in ipps. Try removing the ipps library from your link statement and see if it still works.

Peter

0 Kudos
Kaan_Gök
Beginner
381 Views
Quoting - pvonkaenel

The ipps library is for signal processing routines. If you have limited yourself to the image processing calls (ippi), then you might not be calling anything in ipps. Try removing the ipps library from your link statement and see if it still works.

Peter


Image processing library itself uses the signal processing domain. I get linker errors without ippsmerged.lib, that's OK.
What confuses me is that the documentation also tells that ippsemerged.lib should also be included in the linking process. I wonder if excluding that specific library has any side effects? (Program compiles and runs fine, but as I said I'm too lazy to measure performance). Just hoping that someone from the IPP teamclears the issue. (Mr Dudnik?).
I don't want to include ippsemerged.lib if it's not absolutely required.
0 Kudos
elhefe38
Beginner
381 Views

Image processing library itself uses the signal processing domain. I get linker errors without ippsmerged.lib, that's OK.
What confuses me is that the documentation also tells that ippsemerged.lib should also be included in the linking process. I wonder if excluding that specific library has any side effects? (Program compiles and runs fine, but as I said I'm too lazy to measure performance). Just hoping that someone from the IPP teamclears the issue. (Mr Dudnik?).
I don't want to include ippsemerged.lib if it's not absolutely required.

I guess ippimerged.lib functions call ipps functions. However, they will directly call the specifically processor-optimized functions, hence the need for only ippsmerged and not ippsemerged (which will take only care of dispatching).
So (again this is a guess), that would explain that you do not need ippsemerged but only ippsmerged.

regards
0 Kudos
Vladimir_Dudnik
Employee
381 Views
Hello,

when you miss ipp*emerged library but link with ipp*merged library you will get not optimized functions. Note, ipp*emerged library is IPP static dispatcher which have to be initialised by ippStaticInit call.

There is an option to link with ipp*merged libraries only when you want to run particular optimized code. All functions in ipp*merged library are prefixed with px_, w7_ and so on, so you can call for example v8_ippsCopy_8u to call Intel Core2 optimized version of ippsCopy function. I would recommend you to read IPP Linkage Models article on Knowledge Base pages for details on IPP linkage options available.

Regards,
Vladimir
0 Kudos
Reply