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

ipp redist dlls

larisa-basov
Beginner
1,024 Views
Hi,
we are developing with ipp at development pc's , and running our applications on independent pc (with no development tools) and we having 'dlls missing' problems ,inspite of we have installed the redistributables.
On each different configuration pc other ipp dlls is missing.
We are currently have to investigate for each pc which dlls are missing and copy them from redist folder of Composer XE 2011 (from development pc ) to the same folder where the executable file is (at independent pc).
I think, It should be other way of applying applications that uses ipps.Please me help figure that out

Regards,
Larisa
0 Kudos
1 Solution
7 Replies
pvonkaenel
New Contributor III
1,024 Views

Hi Larisa,

I think the redistributable package will only install the DLLs for the target machine's architecture (can someone confirm), so if in code you're forcing IPP toexecutefor aspecific architecture, there may be problems.

I tend to just statically link with IPP, then there are no DLL issues.

Peter

0 Kudos
detlef_stralaudynami
1,024 Views
Hi Larisa,

you have a mix of static / dynamic link. INstall an your development pc dependency walker and you will see which dll / exeis dynamic linked (It will call ippcore.dll).

Best Regards

Detlef
0 Kudos
SergeyKostrov
Valued Contributor II
1,024 Views
...Install an your development pc dependency walker and you will see which dll / exeis dynamic linked (It will call ippcore.dll)...

Unfortunately, the Dependency Walker is not displaying all neededdlls for an IPP application, especiallyfrom an IPP'sWaterfall procedure.
0 Kudos
detlef_stralaudynami
1,024 Views
that's right, but it shows, where the IPPCore is called, so you can see where it is not static linked.
0 Kudos
larisa-basov
Beginner
1,024 Views
How do you make the static linkage?

via code?
0 Kudos
levicki
Valued Contributor I
1,024 Views
You do not want to use static linking because:

1. It can conflict with different runtime library and threading model
2. You do not get automatic benefit from new CPUs
3. You need to recompile for each new version of IPP

IPP is organized as follows:

ippi <-- image processing domain functions

ippi-7.0.dll <-- this is the main DLL with CPU dispatcher, your application is dynamically linked against it

ippiw7-7.0.dll <-- w7 (Pentium IV, SSE2)
ippiv8-7.0.dll <-- v8 (Core 2, SSSE3)
ippis8-7.0.dll <-- s8 (Atom, SSSE3)
ippip8-7.0.dll <-- p8 (Penryn/Nehalem/Westmere, SSE4.1, SSE4.2, AES-NI)
ippig9-7.0.dll <-- g9 (SandyBridge, AVX)

Actual code is in those DLLs and which one is needed depends on which CPU is installed in a target system.

The best way to make sure that you have all DLLs needed for your application to run on a target PC is to copy all of them. Hard disk space is cheap today, and your client may upgrade their hardware which could prevent your application from running if you copied just the DLLs for the currently installed CPU.

Of course, you do not have to copy DLLs for the functional domains you do not use.
0 Kudos
Reply