Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.
6956 Discussions

Statically linking MKL libary and IPP library in same project

rohitspandey
Beginner
505 Views

Hi,

I am developing an application which uses both IPP and MKL. Till now i was using MKL ( mkl_rt.lib)and IPP (ippcorel.lib ippsemerged.lib ippsmerged.lib ippvmemerged.lib ippvmmerged.lib ippsremerged.lib ippsrmerged.lib) for developing appliation. Now I have to move to static linking of the project as per document (http://software.intel.com/sites/products/documentation/doclib/mkl_sa/11/mkl_userguide_win/mkl_userguide_win.pdf  Page 29) i am using  IA-32 architecture, static linking :: mkl_intel_c.lib mkl_intel_ thread.lib mkl_core.lib libiomp5md.lib (for MKL.)

IPP : ippcorel.lib ippsemerged.lib ippsmerged.lib ippvmemerged.lib ippvmmerged.lib ippsremerged.lib ippsrmerged.lib

If I try to build this project then i get >65K  redifition  warnings and the build fails. Kindly let me know 

how to build the a project with both IPP and MKL staticatlly linked and used?

 

Regards

Rohit

 

 

 

 

0 Kudos
12 Replies
TimP
Honored Contributor III
505 Views
libiomp5md.lib is a dynamic library; there is no static counterpart in the latest releases, so that's normal, and probably advisable when using MKL and IPP together. If your application is too large for static linking on 32-bit architecture, you may have to revise your constraints.
0 Kudos
Gennady_F_Intel
Moderator
505 Views
Which version of MKL and IPP you are using? some versions ago, MKL reused some of IPP functions internally. you can try to evaluate the latest versions where such problems were resolved.
0 Kudos
rohitspandey
Beginner
505 Views
Hi, We are using IPP version: 7.0 update 6 MKL 10.3 update 11. In our application project we are using both IPP and MKL. We would like to statically include both of them. Kindly let us know is there any documentation to use it. We are using folllowing IPP libarary IPP : ippcorel.lib ippsemerged.lib ippsmerged.lib ippvmemerged.lib ippvmmerged.lib ippsremerged.lib ippsrmerged.lib and folllowing MKL mkl_blas95 mkl_core mkl_lapack95. Our apllication uses matrix and vector operation from MKL and Signal processing function from IPP. Let us know whihc version of IPP and mkl shall be used. Regards Rohit
0 Kudos
Gennady_F_Intel
Moderator
505 Views
I am not aware that you use IPP 7.0 because of you point ipp*merged.libs which has been renamed and redesigned in 7.0. these names were used in 6.1 version the last time.
0 Kudos
rohitspandey
Beginner
505 Views
Correcting the names ipps_l.lib ippcore_l.lib ippvm_l.lib these are from the ippsremerged.lib ippsrmerged.lib 6.1 as the SR lib are discontinued in 6.1. So we have been using it from previous release.
0 Kudos
gregannarbor
Beginner
505 Views
Are their any updates on this issue? I am following this because I have a similar issue with statically linking both IPP (7.1) and MKL (11.0). Everything worked until I began calls to ippsFIR_32f, and then I started getting link errors, e.g. ipps_l.lib(pscopye9as_e9.obj) : error LNK2005: e9_ownsSet_32s_E9 already defined in mkl_core.lib(pscopye9as_20101122.obj) There are 2 threads on this forum already about static linking problems, and I would like to know if there is progress before starting a third.
0 Kudos
Ying_H_Intel
Employee
505 Views
Hi gregannarbor, MKL internally used a few IPP functions, and added a few IPP symbols into the MKL libraries. The possible workaround is to link one of libraries (IPP or MKL) with dynamic libs or customer DLLs. The internal symbols is not expected to expose with dynamic libraries. would you like to try build one custom dll based on the mkl function you are using. The tools for build MKL custom dll, which is avaiable in MKL install directory for example, C:\Program Files (x86)\Intel\Composer XE 2013\mkl\tools\builder. Best Regards, Ying
0 Kudos
emfriedmann
Beginner
505 Views
I am in a similar situation (statically linking MKL and IPP), and do not want to distribute our libraries with dynamic libs. I sincerely hope Intel recognizes this as an issue and is working to address it quickly.
0 Kudos
Gennady_F_Intel
Moderator
505 Views
the issue is esclated. here is the number DPD200304564 for your reference. we will let all of you know when the problem would be updated.
0 Kudos
rohitspandey
Beginner
505 Views

HI any updat on this issue ( DPD200304564 ). Any likely  updated release date.


Regards

Rohit

0 Kudos
Gennady_F_Intel
Moderator
505 Views

Hi, there are no updates at this moment. sorry about that. Gennady

0 Kudos
Gennady_F_Intel
Moderator
505 Views

Rohit,

as a temporarily workaround for windows, can you try to change the order of libraries while linkig: ipp's then mkl's. it works on my side. Pls see the results for 32 and 64 bit cases 

IA32, windows
ippcore_l.lib;ippi_l.lib;ipps_l.lib; mkl_intel_c.lib;mkl_intel_thread.lib;mkl_core.lib;libiomp5md.lib;%(AdditionalDependencies)

Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========


Intel64, windows
the link line:
ipps_l.lib;ippi_l.lib;ippcore_l.lib; mkl_intel_lp64.lib;mkl_intel_thread.lib;mkl_core.lib; libiomp5md.lib

========== Rebuild All: 1 succeeded, 0 failed, 0 skipped ==========

0 Kudos
Reply