1

I was reading this interessant article about IPP Dispatcher. At some points its written: Dispatching refers to the process of detecting CPU features at run-time and then selecting the Intel IPP optimized library set that corresponds to your CPU. For example, in the \ia32\ipp directory, the ippip8.dll library file contains the 32-bit optimized image processing libraries for processors with Intel® SSE4.2; ‘ippi’ refers to the image processing library, ‘p8’ refers to 32-bit SSE4.2 architecture.

Does it mean that if I release a DLL using ipp.h, when I ship to customers, they also need the DLLs version of the IPP Library? Or are they automatically compiled and linked with the .libs in the final build?

I don't get that DLL example on the document.

markzzz
  • 47,390
  • 120
  • 299
  • 507

1 Answers1

2

You don't have to ship all of them, there is an automatic dispatch that is done at runtime. If a library is "missing", then the runtime will choose the lower compatible runtime (so you should at least have the SSE2 runtime).

Matthieu Brucher
  • 21,634
  • 7
  • 38
  • 62
  • Uhm, its not clear at all the process. This is what I think to have understand: let say I build `MyPlug.dll`, which use `ippsExp_64f`. When I run it on different machines/cpu, by default `ippInit` will automatically catch which CPU is running, and will dispatch to the optimized (overloaded) `ippsExp_64f` function. But all of these overloads are within the program itself or dispatcher will call IPP DLL? (so the user also need them alongside my program)? – markzzz Nov 23 '18 at 08:35
  • In the libraries. – Matthieu Brucher Nov 23 '18 at 08:36
  • What do you mean "In the libraries"? Both .lib and .dll are libraries. But the ones will be included in a final (unique) dll (.lib), while the others need to be sent separately. – markzzz Nov 23 '18 at 08:37
  • The .lib are the definitions for the .dll (if you go for linking against the dll). They don't contain code. – Matthieu Brucher Nov 23 '18 at 08:38
  • Aren't .lib collections of already-compiled object files which will be linked? – markzzz Nov 23 '18 at 08:44
  • Not always, it's the same extension for the definition file for dll that you have to use. If you link against such a .lib, then you get a runtime link against the dll. For pure static libraries, you don't have the additional dll dependency. – Matthieu Brucher Nov 23 '18 at 08:47
  • Let us [continue this discussion in chat](https://chat.stackoverflow.com/rooms/184129/discussion-between-markzzz-and-matthieu-brucher). – markzzz Nov 23 '18 at 08:48