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

Can you use different versions of IPP in the same application?

Andrew_Rice
Beginner
307 Views

Hi,

We have a large application with different parts that use IPP. Some are using version 6.1, some 7.0 and some 7.1. Is this going to cause us any problems?

Does it make a difference if the the different versions are used in different procesess or does it depend on how we link to IPP?

I have heard of problems with OpenMP conflicts but I get the impression OpenMP isn't used in 7.1 so would these problems go away?

Thanks very much,

Andy

0 Kudos
3 Replies
SergeyKostrov
Valued Contributor II
307 Views
>>We have a large application with different parts that use IPP. Some are using version 6.1, some 7.0 and some 7.1. Is this going to >>cause us any problems? It is Not clear how you link import libraries of different IPP versions in the same application. In overall, you could use in an application any number of different versions of IPP library and Runtime Binding needs to be used instead of linking of import libraries. When Runtime Binding is used IPP DLLs need to be loaded with Win32 API functions LoadLibrary or LoadLibraryEx and then GetProcAddress needs to be called for all IPP functions used in the application. It is working and I don't have any issues or problems. Of course, some issues or problems are possible but I can not verify my approach with all IPP functions.
0 Kudos
Andrew_Rice
Beginner
307 Views

One version is statically linked. Others are dynamically linked to the same IPP .dll.

I'm hoping to upgrade one of the libraries that uses IPP to use 7.1 but don't want to affect/change all the other libraries that use IPP. That's why I was wondering if it's OK to mix versions.

0 Kudos
SergeyKostrov
Valued Contributor II
307 Views
>>...I'm hoping to upgrade one of the libraries that uses IPP to use 7.1 but don't want to affect/change all the other >>libraries that use IPP. That's why I was wondering if it's OK to mix versions... This is what I've expected to see in your case and it is very common. The following versions, IPL 2.5, IPP 3.x, 5.x and 7.x are used in the same application and static linking is Not used. All DLLs are loaded and IPP functions are used through pointers initialized with GetProcAddress Win32 API function as I've already described.
0 Kudos
Reply