Statically linking MKL libary and IPP library in same project

Statically linking MKL libary and IPP library in same project

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

 

 

 

 

13 帖子 / 0 全新
最新文章
如需更全面地了解编译器优化,请参阅优化注意事项

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.

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.

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

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.

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.

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.

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

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.

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.

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

Regards

Rohit

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

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 ==========

发表评论

登录添加评论。还不是成员?立即加入