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

What libs do I need to link and redistribute MKL?

xian-zhong_guous_cd-
2,486 Views
I use mkl blas/lapack/pardiso and try to clean up the libs to reduce the size of download for my colleages. Can someone tell me what mkl libs do I need keep?

Thanks,
Sam
0 Kudos
9 Replies
ArturGuzik
Valued Contributor I
2,486 Views
Hi,

if you want to make it easy to handle for installing and downloading, you can give a try Building Custom DLL (see Section 5 in the User's Guide). This will make the download smaller and in a single file.

A.
0 Kudos
xian-zhong_guous_cd-
2,486 Views
When using custom build, I got undefined:
/u/xeons03/people/xian/dev/star/battery/src/sundials/src/ida/ida_superlu.c:21: undefined reference to `MKL_Set_Num_Threads'
/u/xeons03/people/xian/dev/superlu/4.1/linux/libsuperlu.a(dgstrs.o): In function `dgstrs':
dgstrs.c:(.text+0x904): undefined reference to `dtrsm_'
dgstrs.c:(.text+0x992): undefined reference to `dtrsm_'
dgstrs.c:(.text+0xa1b): undefined reference to `dgemm_'
/u/xeons03/people/xian/dev/superlu/4.1/linux/libsuperlu.a(dsnode_bmod.o): In function `dsnode_bmod':
dsnode_bmod.c:(.text+0x186): undefined reference to `dtrsv_'
dsnode_bmod.c:(.text+0x1e7): undefined reference to `dgemv_'
/u/xeons03/people/xian/dev/superlu/4.1/linux/libsuperlu.a(dpanel_bmod.o): In function `dpanel_bmod':
dpanel_bmod.c:(.text+0x863): undefined reference to `dtrsv_'
dpanel_bmod.c:(.text+0x8f7): undefined reference to `dgemv_'
dpanel_bmod.c:(.text+0xb03): undefined reference to `dtrsv_'
dpanel_bmod.c:(.text+0xdf9): undefined reference to `dgemv_'
/u/xeons03/people/xian/dev/superlu/4.1/linux/libsuperlu.a(dcolumn_bmod.o): In function `dcolumn_bmod':
dcolumn_bmod.c:(.text+0x531): undefined reference to `dtrsv_'
dcolumn_bmod.c:(.text+0x5bb): undefined reference to `dgemv_'
dcolumn_bmod.c:(.text+0x8c0): undefined reference to `dtrsv_'
dcolumn_bmod.c:(.text+0x94e): undefined reference to `dgemv_'
/u/xeons03/people/xian/dev/superlu/4.1/linux/libsuperlu.a(dsp_blas2.o): In function `sp_dtrsv':
dsp_blas2.c:(.text+0x92a): undefined reference to `dtrsv_'
dsp_blas2.c:(.text+0x9a6): undefined reference to `dgemv_'
dsp_blas2.c:(.text+0xc21): undefined reference to `dtrsv_'
dsp_blas2.c:(.text+0xe17): undefined reference to `dtrsv_'
dsp_blas2.c:(.text+0xfd1): undefined reference to `dtrsv_'
collect2: ld returned 1 exit status
make: *** [/u/xeons03/people/xian/dev/star/lib/linux-x86_64-2.5/gnu4.5-g/lib/libSundials.so] Error 1

Here is how to build my_custom.so:
xeons03 335> make libintel64 export=my_func_list.txt MKLROOT=/u/xeons03/people/xian/dev/intel_7_1_2011/10.3.1/linux/composerxe-2011.1.107/mkl
export LIBRARY_PATH=/u/xeons03/people/xian/intel/composerxe-2011.1.107/mkl/lib/intel64:/u/xeons03/people/xian/intel/composerxe-2011.1.107/mkl/lib/intel64:/u/xeons03/people/xian/intel/composerxe-2011.1.107/mkl/../compiler/lib/intel64; \
gcc -shared -Bdynamic \
-u caxpy_ -u caxpyi_ -u ccopy_ -u cdotc_ -u cdotci_ -u cdotu_ -u cdotui_ -u cgbmv_ -u cgemm_ -u cgemv_ -u cgerc_ -u cgeru_ -u cgthr_ -u cgthrz_ -u chbmv_ -u chemm_ -u chemv_ -u cher_ -u cher2_ -u cher2k_ -u cherk_ -u chpmv_ -u chpr_ -u chpr2_ -u crotg_ -u cscal_ -u csctr_ -u csrot_ -u csscal_ -u cswap_ -u csymm_ -u csyr2k_ -u csyrk_ -u ctbmv_ -u ctbsv_ -u ctpmv_ -u ctpsv_ -u ctrmm_ -u ctrmv_ -u ctrsm_ -u ctrsv_ -u dasum_ -u daxpy_ -u daxpyi_ -u dcopy_ -u ddot_ -u ddoti_ -u dgbmv_ -u dgemm_ -u dgemv_ -u dger_ -u dgthr_ -u dgthrz_ -u dnrm2_ -u drot_ -u drotg_ -u droti_ -u drotm_ -u drotmg_ -u dsbmv_ -u dscal_ -u dsctr_ -u dsdot_ -u dspmv_ -u dspr_ -u dspr2_ -u dswap_ -u dsymm_ -u dsymv_ -u dsyr_ -u dsyr2_ -u dsyr2k_ -u dsyrk_ -u dtbmv_ -u dtbsv_ -u dtpmv_ -u dtpsv_ -u dtrmm_ -u dtrmv_ -u dtrsm_ -u dtrsv_ -u dzasum_ -u dznrm2_ -u icamax_ -u icamin_ -u idamax_ -u idamin_ -u isamax_ -u isamin_ -u izamax_ -u izamin_ -u sasum_ -u saxpy_ -u saxpyi_ -u scasum_ -u scnrm2_ -u scopy_ -u sdot_ -u sdoti_ -u sdsdot_ -u sgbmv_ -u sgemm_ -u sgemv_ -u sger_ -u sgthr_ -u sgthrz_ -u snrm2_ -u srot_ -u srotg_ -u sroti_ -u srotm_ -u srotmg_ -u ssbmv_ -u sscal_ -u ssctr_ -u sspmv_ -u sspr_ -u sspr2_ -u sswap_ -u ssymm_ -u ssymv_ -u ssyr_ -u ssyr2_ -u ssyr2k_ -u ssyrk_ -u stbmv_ -u stbsv_ -u stpmv_ -u stpsv_ -u strmm_ -u strmv_ -u strsm_ -u strsv_ -u zaxpy_ -u zaxpyi_ -u zcopy_ -u zdotc_ -u zdotci_ -u zdotu_ -u zdotui_ -u zdrot_ -u zdscal_ -u zgbmv_ -u zgemm_ -u zgemv_ -u zgerc_ -u zgeru_ -u zgthr_ -u zgthrz_ -u zhbmv_ -u zhemm_ -u zhemv_ -u zher_ -u zher2_ -u zher2k_ -u zherk_ -u zhpmv_ -u zhpr_ -u zhpr2_ -u zrotg_ -u zscal_ -u zsctr_ -u zswap_ -u zsymm_ -u zsyr2k_ -u zsyrk_ -u ztbmv_ -u ztbsv_ -u ztpmv_ -u ztpsv_ -u ztrmm_ -u ztrmv_ -u ztrsm_ -u ztrsv_ -u cbdsqr_ -u cgbbrd_ -u cgbcon_ -u cgbequ_ -u cgbrfs_ -u cgbsv_ -u cgbsvx_ -u cgbtf2_ -u cgbtrf_ -u cgbtrs_ -u cgebak_ -u cgebal_ -u cgebd2_ -u cgebrd_ -u cgecon_ -u cgeequ_ -u cgees_ -u cgeesx_ -u cgeev_ -u cgeevx_ -u cgegs_ -u cgegv_ -u cgehd2_ -u cgehrd_ -u cgelq2_ -u cgelqf_ -u cgels_ -u cgelsd_ -u cgelss_ -u cgelsx_ -u cgelsy_ -u cgeql2_ -u cgeqlf_ -u cgeqp3_ -u cgeqpf_ -u cgeqr2_ -u cgeqrf_ -u cgerfs_ -u cgerq2_ -u cgerqf_ -u cgesc2_ -u cgesdd_ -u cgesv_ -u cgesvd_ -u cgesvx_ -u cgetc2_ -u cgetf2_ -u cgetrf_ -u cgetri_ -u cgetrs_ -u cggbak_ -u cggbal_ -u cgges_ -u cggesx_ -u cggev_ -u cggevx_ -u cggglm_ -u cgghrd_ -u cgglse_ -u cggqrf_ -u cggrqf_ -u cggsvd_ -u cggsvp_ -u cgtcon_ -u cgtrfs_ -u cgtsv_ -u cgtsvx_ -u cgttrf_ -u cgttrs_ -u cgtts2_ -u chbev_ -u chbevd_ -u chbevx_ -u chbgst_ -u chbgv_ -u chbgvd_ -u chbgvx_ -u chbtrd_ -u checon_ -u cheev_ -u cheevd_ -u cheevr_ -u cheevx_ -u chegs2_ -u chegst_ -u chegv_ -u chegvd_ -u chegvx_ -u cherfs_ -u chesv_ -u chesvx_ -u chetd2_ -u chetf2_ -u chetrd_ -u chetrf_ -u chetri_ -u chetrs_ -u chgeqz_ -u chpcon_ -u chpev_ -u chpevd_ -u chpevx_ -u chpgst_ -u chpgv_ -u chpgvd_ -u chpgvx_ -u chprfs_ -u chpsv_ -u chpsvx_ -u chptrd_ -u chptrf_ -u chptri_ -u chptrs_ -u chsein_ -u chseqr_ -u clabrd_ -u clacgv_ -u clacon_ -u clacp2_ -u clacpy_ -u clacrm_ -u clacrt_ -u cladiv_ -u claed0_ -u claed7_ -u claed8_ -u claein_ -u claesy_ -u claev2_ -u clags2_ -u clagtm_ -u clahef_ -u clahqr_ -u clahrd_ -u claic1_ -u clals0_ -u clalsa_ -u clalsd_ -u clangb_ -u clange_ -u clangt_ -u clanhb_ -u clanhe_ -u clanhp_ -u clanhs_ -u clanht_ -u clansb_ -u clansp_ -u clansy_ -u clantb_ -u clantp_ -u clantr_ -u clapll_ -u clapmt_ -u claqgb_ -u claqge_ -u claqhb_ -u claqhe_ -u claqhp_ -u claqp2_ -u claqps_ -u claqsb_ -u claqsp_ -u claqsy_ -u clar1v_ -u clar2v_ -u clarcm_ -u clarf_ -u clarfb_ -u clarfg_ -u clarft_ -u clarfx_ -u clargv_ -u clarnv_ -u clarrv_ -u clartg_ -u clartv_ -u clarz_ -u clarzb_ -u clarzt_ -u clascl_ -u claset_ -u clasr_ -u classq_ -u claswp_ -u clasyf_ -u clatbs_ -u clatdf_ -u clatps_ -u clatrd_ -u clatrs_ -u clatrz_ -u clatzm_ -u clauu2_ -u clauum_ -u cpbcon_ -u cpbequ_ -u cpbrfs_ -u cpbstf_ -u cpbsv_ -u cpbsvx_ -u cpbtf2_ -u cpbtrf_ -u cpbtrs_ -u cpocon_ -u cpoequ_ -u cporfs_ -u cposv_ -u cposvx_ -u cpotf2_ -u cpotrf_ -u cpotri_ -u cpotrs_ -u cppcon_ -u cppequ_ -u cpprfs_ -u cppsv_ -u cppsvx_ -u cpptrf_ -u cpptri_ -u cpptrs_ -u cptcon_ -u cpteqr_ -u cptrfs_ -u cptsv_ -u cptsvx_ -u cpttrf_ -u cpttrs_ -u cptts2_ -u crot_ -u cspcon_ -u cspmv_ -u cspr_ -u csprfs_ -u cspsv_ -u cspsvx_ -u csptrf_ -u csptri_ -u csptrs_ -u csrscl_ -u cstedc_ -u cstegr_ -u cstein_ -u csteqr_ -u csycon_ -u csymv_ -u csyr_ -u csyrfs_ -u csysv_ -u csysvx_ -u csytf2_ -u csytrf_ -u csytri_ -u csytrs_ -u ctbcon_ -u ctbrfs_ -u ctbtrs_ -u ctgevc_ -u ctgex2_ -u ctgexc_ -u ctgsen_ -u ctgsja_ -u ctgsna_ -u ctgsy2_ -u ctgsyl_ -u ctpcon_ -u ctprfs_ -u ctptri_ -u ctptrs_ -u ctrcon_ -u ctrevc_ -u ctrexc_ -u ctrrfs_ -u ctrsen_ -u ctrsna_ -u ctrsyl_ -u ctrti2_ -u ctrtri_ -u ctrtrs_ -u ctzrqf_ -u ctzrzf_ -u cung2l_ -u cung2r_ -u cungbr_ -u cunghr_ -u cungl2_ -u cunglq_ -u cungql_ -u cungqr_ -u cungr2_ -u cungrq_ -u cungtr_ -u cunm2l_ -u cunm2r_ -u cunmbr_ -u cunmhr_ -u cunml2_ -u cunmlq_ -u cunmql_ -u cunmqr_ -u cunmr2_ -u cunmr3_ -u cunmrq_ -u cunmrz_ -u cunmtr_ -u cupgtr_ -u cupmtr_ -u dbdsdc_ -u dbdsqr_ -u ddisna_ -u dgbbrd_ -u dgbcon_ -u dgbequ_ -u dgbrfs_ -u dgbsv_ -u dgbsvx_ -u dgbtf2_ -u dgbtrf_ -u dgbtrs_ -u dgebak_ -u dgebal_ -u dgebd2_ -u dgebrd_ -u dgecon_ -u dgeequ_ -u dgees_ -u dgeesx_ -u dgeev_ -u dgeevx_ -u dgegs_ -u dgegv_ -u dgehd2_ -u dgehrd_ -u dgelq2_ -u dgelqf_ -u dgels_ -u dgelsd_ -u dgelss_ -u dgelsx_ -u dgelsy_ -u dgeql2_ -u dgeqlf_ -u dgeqp3_ -u dgeqpf_ -u dgeqr2_ -u dgeqrf_ -u dgerfs_ -u dgerq2_ -u dgerqf_ -u dgesc2_ -u dgesdd_ -u dgesv_ -u dgesvd_ -u dgesvx_ -u dgetc2_ -u dgetf2_ -u dgetrf_ -u dgetri_ -u dgetrs_ -u dggbak_ -u dggbal_ -u dgges_ -u dggesx_ -u dggev_ -u dggevx_ -u dggglm_ -u dgghrd_ -u dgglse_ -u dggqrf_ -u dggrqf_ -u dggsvd_ -u dggsvp_ -u dgtcon_ -u dgtrfs_ -u dgtsv_ -u dgtsvx_ -u dgttrf_ -u dgttrs_ -u dgtts2_ -u dhgeqz_ -u dhsein_ -u dhseqr_ -u dlabad_ -u dlabrd_ -u dlacon_ -u dlacpy_ -u dladiv_ -u dlae2_ -u dlaebz_ -u dlaed0_ -u dlaed1_ -u dlaed2_ -u dlaed3_ -u dlaed4_ -u dlaed5_ -u dlaed6_ -u dlaed7_ -u dlaed8_ -u dlaed9_ -u dlaeda_ -u dlaein_ -u dlaev2_ -u dlaexc_ -u dlag2_ -u dlags2_ -u dlagtf_ -u dlagtm_ -u dlagts_ -u dlagv2_ -u dlahqr_ -u dlahrd_ -u dlaic1_ -u dlaln2_ -u dlals0_ -u dlalsa_ -u dlalsd_ -u dlamc3_ -u dlamch_ -u dlamrg_ -u dlangb_ -u dlange_ -u dlangt_ -u dlanhs_ -u dlansb_ -u dlansp_ -u dlanst_ -u dlansy_ -u dlantb_ -u dlantp_ -u dlantr_ -u dlanv2_ -u dlapll_ -u dlapmt_ -u dlapy2_ -u dlapy3_ -u dlaqgb_ -u dlaqge_ -u dlaqp2_ -u dlaqps_ -u dlaqsb_ -u dlaqsp_ -u dlaqsy_ -u dlaqtr_ -u dlar1v_ -u dlar2v_ -u dlarf_ -u dlarfb_ -u dlarfg_ -u dlarft_ -u dlarfx_ -u dlargv_ -u dlarnv_ -u dlarrb_ -u dlarre_ -u dlarrf_ -u dlarrv_ -u dlartg_ -u dlartv_ -u dlaruv_ -u dlarz_ -u dlarzb_ -u dlarzt_ -u dlas2_ -u dlascl_ -u dlasd0_ -u dlasd1_ -u dlasd2_ -u dlasd3_ -u dlasd4_ -u dlasd5_ -u dlasd6_ -u dlasd7_ -u dlasd8_ -u dlasd9_ -u dlasda_ -u dlasdq_ -u dlasdt_ -u dlaset_ -u dlasq1_ -u dlasq2_ -u dlasq3_ -u dlasq4_ -u dlasq5_ -u dlasq6_ -u dlasr_ -u dlasrt_ -u dlassq_ -u dlasv2_ -u dlaswp_ -u dlasy2_ -u dlasyf_ -u dlatbs_ -u dlatdf_ -u dlatps_ -u dlatrd_ -u dlatrs_ -u dlatrz_ -u dlatzm_ -u dlauu2_ -u dlauum_ -u dopgtr_ -u dopmtr_ -u dorg2l_ -u dorg2r_ -u dorgbr_ -u dorghr_ -u dorgl2_ -u dorglq_ -u dorgql_ -u dorgqr_ -u dorgr2_ -u dorgrq_ -u dorgtr_ -u dorm2l_ -u dorm2r_ -u dormbr_ -u dormhr_ -u dorml2_ -u dormlq_ -u dormql_ -u dormqr_ -u dormr2_ -u dormr3_ -u dormrq_ -u dormrz_ -u dormtr_ -u dpbcon_ -u dpbequ_ -u dpbrfs_ -u dpbstf_ -u dpbsv_ -u dpbsvx_ -u dpbtf2_ -u dpbtrf_ -u dpbtrs_ -u dpocon_ -u dpoequ_ -u dporfs_ -u dposv_ -u dposvx_ -u dpotf2_ -u dpotrf_ -u dpotri_ -u dpotrs_ -u dppcon_ -u dppequ_ -u dpprfs_ -u dppsv_ -u dppsvx_ -u dpptrf_ -u dpptri_ -u dpptrs_ -u dptcon_ -u dpteqr_ -u dptrfs_ -u dptsv_ -u dptsvx_ -u dpttrf_ -u dpttrs_ -u dptts2_ -u drscl_ -u dsbev_ -u dsbevd_ -u dsbevx_ -u dsbgst_ -u dsbgv_ -u dsbgvd_ -u dsbgvx_ -u dsbtrd_ -u dspcon_ -u dspev_ -u dspevd_ -u dspevx_ -u dspgst_ -u dspgv_ -u dspgvd_ -u dspgvx_ -u dsprfs_ -u dspsv_ -u dspsvx_ -u dsptrd_ -u dsptrf_ -u dsptri_ -u dsptrs_ -u dstebz_ -u dstedc_ -u dstegr_ -u dstein_ -u dsteqr_ -u dsterf_ -u dstev_ -u dstevd_ -u dstevr_ -u dstevx_ -u dsycon_ -u dsyev_ -u dsyevd_ -u dsyevr_ -u dsyevx_ -u dsygs2_ -u dsygst_ -u dsygv_ -u dsygvd_ -u dsygvx_ -u dsyrfs_ -u dsysv_ -u dsysvx_ -u dsytd2_ -u dsytf2_ -u dsytrd_ -u dsytrf_ -u dsytri_ -u dsytrs_ -u dtbcon_ -u dtbrfs_ -u dtbtrs_ -u dtgevc_ -u dtgex2_ -u dtgexc_ -u dtgsen_ -u dtgsja_ -u dtgsna_ -u dtgsy2_ -u dtgsyl_ -u dtpcon_ -u dtprfs_ -u dtptri_ -u dtptrs_ -u dtrcon_ -u dtrevc_ -u dtrexc_ -u dtrrfs_ -u dtrsen_ -u dtrsna_ -u dtrsyl_ -u dtrti2_ -u dtrtri_ -u dtrtrs_ -u dtzrqf_ -u dtzrzf_ -u dzsum1_ -u icmax1_ -u izmax1_ -u sbdsdc_ -u sbdsqr_ -u scsum1_ -u sdisna_ -u sgbbrd_ -u sgbcon_ -u sgbequ_ -u sgbrfs_ -u sgbsv_ -u sgbsvx_ -u sgbtf2_ -u sgbtrf_ -u sgbtrs_ -u sgebak_ -u sgebal_ -u sgebd2_ -u sgebrd_ -u sgecon_ -u sgeequ_ -u sgees_ -u sgeesx_ -u sgeev_ -u sgeevx_ -u sgegs_ -u sgegv_ -u sgehd2_ -u sgehrd_ -u sgelq2_ -u sgelqf_ -u sgels_ -u sgelsd_ -u sgelss_ -u sgelsx_ -u sgelsy_ -u sgeql2_ -u sgeqlf_ -u sgeqp3_ -u sgeqpf_ -u sgeqr2_ -u sgeqrf_ -u sgerfs_ -u sgerq2_ -u sgerqf_ -u sgesc2_ -u sgesdd_ -u sgesv_ -u sgesvd_ -u sgesvx_ -u sgetc2_ -u sgetf2_ -u sgetrf_ -u sgetri_ -u sgetrs_ -u sggbak_ -u sggbal_ -u sgges_ -u sggesx_ -u sggev_ -u sggevx_ -u sggglm_ -u sgghrd_ -u sgglse_ -u sggqrf_ -u sggrqf_ -u sggsvd_ -u sggsvp_ -u sgtcon_ -u sgtrfs_ -u sgtsv_ -u sgtsvx_ -u sgttrf_ -u sgttrs_ -u sgtts2_ -u shgeqz_ -u shsein_ -u shseqr_ -u slabad_ -u slabrd_ -u slacon_ -u slacpy_ -u sladiv_ -u slae2_ -u slaebz_ -u slaed0_ -u slaed1_ -u slaed2_ -u slaed3_ -u slaed4_ -u slaed5_ -u slaed6_ -u slaed7_ -u slaed8_ -u slaed9_ -u slaeda_ -u slaein_ -u slaev2_ -u slaexc_ -u slag2_ -u slags2_ -u slagtf_ -u slagtm_ -u slagts_ -u slagv2_ -u slahqr_ -u slahrd_ -u slaic1_ -u slaln2_ -u slals0_ -u slalsa_ -u slalsd_ -u slamc3_ -u slamch_ -u slamrg_ -u slangb_ -u slange_ -u slangt_ -u slanhs_ -u slansb_ -u slansp_ -u slanst_ -u slansy_ -u slantb_ -u slantp_ -u slantr_ -u slanv2_ -u slapll_ -u slapmt_ -u slapy2_ -u slapy3_ -u slaqgb_ -u slaqge_ -u slaqp2_ -u slaqps_ -u slaqsb_ -u slaqsp_ -u slaqsy_ -u slaqtr_ -u slar1v_ -u slar2v_ -u slarf_ -u slarfb_ -u slarfg_ -u slarft_ -u slarfx_ -u slargv_ -u slarnv_ -u slarrb_ -u slarre_ -u slarrf_ -u slarrv_ -u slartg_ -u slartv_ -u slaruv_ -u slarz_ -u slarzb_ -u slarzt_ -u slas2_ -u slascl_ -u slasd0_ -u slasd1_ -u slasd2_ -u slasd3_ -u slasd4_ -u slasd5_ -u slasd6_ -u slasd7_ -u slasd8_ -u slasd9_ -u slasda_ -u slasdq_ -u slasdt_ -u slaset_ -u slasq1_ -u slasq2_ -u slasq3_ -u slasq4_ -u slasq5_ -u slasq6_ -u slasr_ -u slasrt_ -u slassq_ -u slasv2_ -u slaswp_ -u slasy2_ -u slasyf_ -u slatbs_ -u slatdf_ -u slatps_ -u slatrd_ -u slatrs_ -u slatrz_ -u slatzm_ -u slauu2_ -u slauum_ -u sopgtr_ -u sopmtr_ -u sorg2l_ -u sorg2r_ -u sorgbr_ -u sorghr_ -u sorgl2_ -u sorglq_ -u sorgql_ -u sorgqr_ -u sorgr2_ -u sorgrq_ -u sorgtr_ -u sorm2l_ -u sorm2r_ -u sormbr_ -u sormhr_ -u sorml2_ -u sormlq_ -u sormql_ -u sormqr_ -u sormr2_ -u sormr3_ -u sormrq_ -u sormrz_ -u sormtr_ -u spbcon_ -u spbequ_ -u spbrfs_ -u spbstf_ -u spbsv_ -u spbsvx_ -u spbtf2_ -u spbtrf_ -u spbtrs_ -u spocon_ -u spoequ_ -u sporfs_ -u sposv_ -u sposvx_ -u spotf2_ -u spotrf_ -u spotri_ -u spotrs_ -u sppcon_ -u sppequ_ -u spprfs_ -u sppsv_ -u sppsvx_ -u spptrf_ -u spptri_ -u spptrs_ -u sptcon_ -u spteqr_ -u sptrfs_ -u sptsv_ -u sptsvx_ -u spttrf_ -u spttrs_ -u sptts2_ -u srscl_ -u ssbev_ -u ssbevd_ -u ssbevx_ -u ssbgst_ -u ssbgv_ -u ssbgvd_ -u ssbgvx_ -u ssbtrd_ -u sspcon_ -u sspev_ -u sspevd_ -u sspevx_ -u sspgst_ -u sspgv_ -u sspgvd_ -u sspgvx_ -u ssprfs_ -u sspsv_ -u sspsvx_ -u ssptrd_ -u ssptrf_ -u ssptri_ -u ssptrs_ -u sstebz_ -u sstedc_ -u sstegr_ -u sstein_ -u ssteqr_ -u ssterf_ -u sstev_ -u sstevd_ -u sstevr_ -u sstevx_ -u ssycon_ -u ssyev_ -u ssyevd_ -u ssyevr_ -u ssyevx_ -u ssygs2_ -u ssygst_ -u ssygv_ -u ssygvd_ -u ssygvx_ -u ssyrfs_ -u ssysv_ -u ssysvx_ -u ssytd2_ -u ssytf2_ -u ssytrd_ -u ssytrf_ -u ssytri_ -u ssytrs_ -u stbcon_ -u stbrfs_ -u stbtrs_ -u stgevc_ -u stgex2_ -u stgexc_ -u stgsen_ -u stgsja_ -u stgsna_ -u stgsy2_ -u stgsyl_ -u stpcon_ -u stprfs_ -u stptri_ -u stptrs_ -u strcon_ -u strevc_ -u strexc_ -u strrfs_ -u strsen_ -u strsna_ -u strsyl_ -u strti2_ -u strtri_ -u strtrs_ -u stzrqf_ -u stzrzf_ -u zbdsqr_ -u zdrscl_ -u zgbbrd_ -u zgbcon_ -u zgbequ_ -u zgbrfs_ -u zgbsv_ -u zgbsvx_ -u zgbtf2_ -u zgbtrf_ -u zgbtrs_ -u zgebak_ -u zgebal_ -u zgebd2_ -u zgebrd_ -u zgecon_ -u zgeequ_ -u zgees_ -u zgeesx_ -u zgeev_ -u zgeevx_ -u zgegs_ -u zgegv_ -u zgehd2_ -u zgehrd_ -u zgelq2_ -u zgelqf_ -u zgels_ -u zgelsd_ -u zgelss_ -u zgelsx_ -u zgelsy_ -u zgeql2_ -u zgeqlf_ -u zgeqp3_ -u zgeqpf_ -u zgeqr2_ -u zgeqrf_ -u zgerfs_ -u zgerq2_ -u zgerqf_ -u zgesc2_ -u zgesdd_ -u zgesv_ -u zgesvd_ -u zgesvx_ -u zgetc2_ -u zgetf2_ -u zgetrf_ -u zgetri_ -u zgetrs_ -u zggbak_ -u zggbal_ -u zgges_ -u zggesx_ -u zggev_ -u zggevx_ -u zggglm_ -u zgghrd_ -u zgglse_ -u zggqrf_ -u zggrqf_ -u zggsvd_ -u zggsvp_ -u zgtcon_ -u zgtrfs_ -u zgtsv_ -u zgtsvx_ -u zgttrf_ -u zgttrs_ -u zgtts2_ -u zhbev_ -u zhbevd_ -u zhbevx_ -u zhbgst_ -u zhbgv_ -u zhbgvd_ -u zhbgvx_ -u zhbtrd_ -u zhecon_ -u zheev_ -u zheevd_ -u zheevr_ -u zheevx_ -u zhegs2_ -u zhegst_ -u zhegv_ -u zhegvd_ -u zhegvx_ -u zherfs_ -u zhesv_ -u zhesvx_ -u zhetd2_ -u zhetf2_ -u zhetrd_ -u zhetrf_ -u zhetri_ -u zhetrs_ -u zhgeqz_ -u zhpcon_ -u zhpev_ -u zhpevd_ -u zhpevx_ -u zhpgst_ -u zhpgv_ -u zhpgvd_ -u zhpgvx_ -u zhprfs_ -u zhpsv_ -u zhpsvx_ -u zhptrd_ -u zhptrf_ -u zhptri_ -u zhptrs_ -u zhsein_ -u zhseqr_ -u zlabrd_ -u zlacgv_ -u zlacon_ -u zlacp2_ -u zlacpy_ -u zlacrm_ -u zlacrt_ -u zladiv_ -u zlaed0_ -u zlaed7_ -u zlaed8_ -u zlaein_ -u zlaesy_ -u zlaev2_ -u zlags2_ -u zlagtm_ -u zlahef_ -u zlahqr_ -u zlahrd_ -u zlaic1_ -u zlals0_ -u zlalsa_ -u zlalsd_ -u zlangb_ -u zlange_ -u zlangt_ -u zlanhb_ -u zlanhe_ -u zlanhp_ -u zlanhs_ -u zlanht_ -u zlansb_ -u zlansp_ -u zlansy_ -u zlantb_ -u zlantp_ -u zlantr_ -u zlapll_ -u zlapmt_ -u zlaqgb_ -u zlaqge_ -u zlaqhb_ -u zlaqhe_ -u zlaqhp_ -u zlaqp2_ -u zlaqps_ -u zlaqsb_ -u zlaqsp_ -u zlaqsy_ -u zlar1v_ -u zlar2v_ -u zlarcm_ -u zlarf_ -u zlarfb_ -u zlarfg_ -u zlarft_ -u zlarfx_ -u zlargv_ -u zlarnv_ -u zlarrv_ -u zlartg_ -u zlartv_ -u zlarz_ -u zlarzb_ -u zlarzt_ -u zlascl_ -u zlaset_ -u zlasr_ -u zlassq_ -u zlaswp_ -u zlasyf_ -u zlatbs_ -u zlatdf_ -u zlatps_ -u zlatrd_ -u zlatrs_ -u zlatrz_ -u zlatzm_ -u zlauu2_ -u zlauum_ -u zpbcon_ -u zpbequ_ -u zpbrfs_ -u zpbstf_ -u zpbsv_ -u zpbsvx_ -u zpbtf2_ -u zpbtrf_ -u zpbtrs_ -u zpocon_ -u zpoequ_ -u zporfs_ -u zposv_ -u zposvx_ -u zpotf2_ -u zpotrf_ -u zpotri_ -u zpotrs_ -u zppcon_ -u zppequ_ -u zpprfs_ -u zppsv_ -u zppsvx_ -u zpptrf_ -u zpptri_ -u zpptrs_ -u zptcon_ -u zpteqr_ -u zptrfs_ -u zptsv_ -u zptsvx_ -u zpttrf_ -u zpttrs_ -u zptts2_ -u zrot_ -u zspcon_ -u zspmv_ -u zspr_ -u zsprfs_ -u zspsv_ -u zspsvx_ -u zsptrf_ -u zsptri_ -u zsptrs_ -u zstedc_ -u zstegr_ -u zstein_ -u zsteqr_ -u zsycon_ -u zsymv_ -u zsyr_ -u zsyrfs_ -u zsysv_ -u zsysvx_ -u zsytf2_ -u zsytrf_ -u zsytri_ -u zsytrs_ -u ztbcon_ -u ztbrfs_ -u ztbtrs_ -u ztgevc_ -u ztgex2_ -u ztgexc_ -u ztgsen_ -u ztgsja_ -u ztgsna_ -u ztgsy2_ -u ztgsyl_ -u ztpcon_ -u ztprfs_ -u ztptri_ -u ztptrs_ -u ztrcon_ -u ztrevc_ -u ztrexc_ -u ztrrfs_ -u ztrsen_ -u ztrsna_ -u ztrsyl_ -u ztrti2_ -u ztrtri_ -u ztrtrs_ -u ztzrqf_ -u ztzrzf_ -u zung2l_ -u zung2r_ -u zungbr_ -u zunghr_ -u zungl2_ -u zunglq_ -u zungql_ -u zungqr_ -u zungr2_ -u zungrq_ -u zungtr_ -u zunm2l_ -u zunm2r_ -u zunmbr_ -u zunmhr_ -u zunml2_ -u zunmlq_ -u zunmql_ -u zunmqr_ -u zunmr2_ -u zunmr3_ -u zunmrq_ -u zunmrz_ -u zunmtr_ -u zupgtr_ -u zupmtr_ -u PARDISO -u MKL_Set_Num_Threads \
-Wl,--start-group \
"/u/xeons03/people/xian/dev/intel_7_1_2011/10.3.1/linux/composerxe-2011.1.107/mkl/lib/intel64/libmkl_intel_lp64.a" \
"/u/xeons03/people/xian/dev/intel_7_1_2011/10.3.1/linux/composerxe-2011.1.107/mkl/lib/intel64/libmkl_intel_thread.a" \
"/u/xeons03/people/xian/dev/intel_7_1_2011/10.3.1/linux/composerxe-2011.1.107/mkl/lib/intel64/libmkl_core.a" \
-Wl,--end-group \
-L"/u/xeons03/people/xian/dev/intel_7_1_2011/10.3.1/linux/composerxe-2011.1.107/mkl/../compiler/lib/intel64" -liomp5 -lm \
-o "mkl_custom.so"
xeons03 336>
0 Kudos
xian-zhong_guous_cd-
2,486 Views
For intel64 linux architecture, I was able to trim the libs down to following:
libmkl_blacs_intelmpi_lp64.a libmkl_gf_lp64.a libmkl_intel_thread.a
libmkl_core.so libmkl_intel_lp64.a libmkl_scalapack_lp64.a

I can link and run on my linux 64. I am not sure whether I need any other libs for redistribtuion. For example, do I need to redistribute libmkl_mc3.so, libmkl_mc.so, libmkl_p4n.so?

I focus on intel64 linux now. Once I figure out what libs to use on intel64 linux, it will be easy to figure the libs for other platformts(ia32,win32, win64, ect).
0 Kudos
Ying_H_Intel
Employee
2,486 Views

Hello Sam,

For BLAS/LAPACK/PARDISO,ingeneral, libmkl_intel_lp64, libmkl_intel_thread, libmkl_corelibiomp5 are needed.
libmkl_blacs_intelmpi_lp64.a libmkl_gf_lp64.a andlibmkl_scalapack_lp64.a may not needed if you are not using blacs or scalapack andGnu fotran compiler.

But for exact libs, it may depend on your real application and how you link them into your application.
first, you maytry MKL link advisor http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/ to get what library you needto linked in your application.

second thing, MKL provide both static library and dynamic library. (almost same name, but static library end with *.a and dynamic library end with *.so).

So you may consider the link type.
if you link static mkl library, then no MKL library need to be redistribute.
if you link dynamic mkl library, you can use
>ldd yourapplication.exe
to show which mkl library is linked in your program.
but in general, except theones show inldd result, you need to redistribute almost all of *.so under mkl linux 64 in computational layer if your applicationwill support all kinds of platform.
becauselibmkl_mc3.so, libmkl_mc.so, libmkl_p4n.so areneededat run time.
libmkl_mc3.so: Kernel for processors based on the Intel Core microarchitecture
Klibmkl_mc.so: ernel for the Intel Core i7 processors
libmkl_p4n.so: Kernel for the Intel Xeon processor using the Intel 64 architecture

All functionality of MKL libs are discribledin MKL Userguide. You may read more details about what functionality of each MKL libs in MKL User guide.

Best Regards,
Ying

for example, i have one exe file, test show thatlibmkl_intel_lp64, lib mkl_intel_thread, libmkl_core and libiomp5 are needed. They are dynamic library.

[yhu5@kentsfield-01 MKL_issue]$ ldd tester_fix
libmkl_intel_lp64.so => not found
libmkl_intel_thread.so => not found
libmkl_core.so => not found
libiomp5.so => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x000000380de00000)
libm.so.6 => /lib64/libm.so.6 (0x000000380d600000)
libc.so.6 => /lib64/libc.so.6 (0x000000380d200000)
/lib64/ld-linux-x86-64.so.2 (0x000000380ce00000)

0 Kudos
xian-zhong_guous_cd-
2,486 Views
I am afrid I don't quite understand the libs needed for static linking. I remove all .a and .so except following:
ibmkl_blacs_intelmpi_lp64.a libmkl_gf_lp64.a libmkl_intel_thread.a
libmkl_core.a libmkl_intel_lp64.a libmkl_scalapack_lp64.a lib libiomp5.a

But when I link, I first got mesaage:

-L/u/xeons03/people/xian/dev/superlu/4.1/linux -lsuperlu -L/u/xeons03/people/xian/dev/intel/10.3.1/linux/composerxe-2011.1.107/mkl/lib/intel64 -lmkl_scalapack_lp64 -lmkl_gf_lp64 -lmkl_blacs_intelmpi_lp64 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -L/u/xeons03/people/xian/dev/intel/10.3.1/linux/composerxe-2011.1.107/compiler/lib/intel64 -liomp5 -lpthread -lm -lStarCommon -lStarDiscretization -lStarMachine -lStarStorage -lStarNeo -lStarPhysics -lStarSolve -lSundials -o /u/xeons03/people/xian/dev/star/lib/linux-x86_64-2.5/gnu4.5/lib/libStarAmg.so
/tmp_mnt/u/seattle01/dev/dev_ccm+/compilers/linux-x86_64-2.3.4/gnu4.5.1/bin/../lib/gcc/x86_64-unknown-linux-gnu/4.5.1/../../../../x86_64-unknown-linux-gnu/bin/ld: /u/xeons03/people/xian/dev/intel/10.3.1/linux/composerxe-2011.1.107/compiler/lib/intel64/libiomp5.a(kmp_ftn_cdecl.o): relocation R_X86_64_32 against `_2__STRING.0' can not be used when making a shared object; recompile with -fPIC
/u/xeons03/people/xian/dev/intel/10.3.1/linux/composerxe-2011.1.107/compiler/lib/intel64/libiomp5.a: could not read symbols: Bad value
collect2: ld returned 1 exit status

Then I put libiomp5.so back. The above message was gone but more appear: (too long to include all, I just include few)

__tmp_sp_ilp64_dsytrs_bk.f:(.text+0x2057): undefined reference to `mkl_blas_sgemv'
__tmp_sp_ilp64_dsytrs_bk.f:(.text+0x208f): undefined reference to `mkl_blas_sswap'
/u/xeons03/people/xian/dev/intel/10.3.1/linux/composerxe-2011.1.107/mkl/lib/intel64/libmkl_core.a(sp_dgetf2_p.o): In function `mkl_pds_sp_dgetf2_pardiso':
__tmp_sp_ilp64_dgetf2_p.f:(.text+0x2b2): undefined reference to `mkl_blas_sswap'
__tmp_sp_ilp64_dgetf2_p.f:(.text+0x305): undefined reference to `mkl_blas_sswap'
/u/xeons03/people/xian/dev/intel/10.3.1/linux/composerxe-2011.1.107/mkl/lib/intel64/libmkl_core.a(sp_dgetc2_p.o): In function `mkl_pds_sp_dgetc2_pardiso':
__tmp_sp_ilp64_dgetc2_p.f:(.text+0x294): undefined reference to `mkl_blas_sswap'
__tmp_sp_ilp64_dgetc2_p.f:(.text+0x2f5): undefined reference to `mkl_blas_sswap'
/u/xeons03/people/xian/dev/intel/10.3.1/linux/composerxe-2011.1.107/mkl/lib/intel64/libmkl_core.a(sp_ch_blkslvs1.o): In function `mkl_pds_sp_ch_blkslvs1_pardiso':
__tmp_sp_ilp64_ch_blkslvs1.f:(.text+0x173): undefined reference to `mkl_blas_ctrsm'
__tmp_sp_ilp64_ch_blkslvs1.f:(.text+0x1e0): undefined reference to `mkl_blas_cgemv'

0 Kudos
xian-zhong_guous_cd-
2,486 Views
There are locale directories under each lib subdirectories (e.g. composerxe-2011.1.107/compiler/lib/intel64/locale). Do I need include them for redistribution?
0 Kudos
Ying_H_Intel
Employee
2,486 Views
Hi Sam,

Your question seems related to many factors. Let's consider them one by one, then in whole.

1) Regardinglocale directories
no, it is not necessary to redistribute the directory.For example,under MKL locale directory, theuser guide mentioned they are

Run-time Libraries (RTL)

libmkl_blacs_intelmpi.so

BLACS routines supporting Intel MPI and MPICH2

locale/en_US/mkl_msg.cat

Catalog of Intel Math Kernel Library (Intel MKL) messages in English

locale/ja_JP/mkl_msg.cat

Catalog of Intel MKL messages in Japanese. Available only if the Intel MKL package provides Japanese localization. Please see the Release Notes for this information


2) about redistribution
2.1) what filescan be redistributed?
You mayhave read the fileredist.txt file in /opt/intel/composerxe-2011/Documentation/mkl. All files listedin it can be redistributed.

2.2) What files need be redistributed?
In general, if you link static mkl library, then no files in MKL directoryneed to redistributed.
But as libiomp5.so is linked in your application too. So the libiomp5.so is need to redistributed as your application will need it at run time.

Regards,
Ying
0 Kudos
Ying_H_Intel
Employee
2,486 Views
3) Regarding the error of libiomp5.a
...2011.1.107/compiler/lib/intel64/libiomp5.a(kmp_ftn_cdecl.o): relocation R_X86_64_32 against `_2__STRING.0' can not be used when making a shared object;

as http://72.46.237.11/en-us/forums/showpost.php?p=130082
The static libiomp5.a is designed intentionally not to work in shared objects. It is recommended to use the dynamic library: libiomp5.so.

4) MKL related so far.
4.1) undefined reference to `mkl_blas_sswap' etc.

You may try the Intel Math Kernel Library Link Line Advisor
If you hope to use static library, it will give your command line like

-Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_lp64.a $(MKLROOT)/lib/intel64/libmkl_intel_thread.a $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -liomp5 -lpthread

and the grouping areneeded because

some symbols are cross-reference in the library in group.

Some explanation in MKL User guide:
In case of static linking,
enclose the cluster components, interface, threading, and computational libraries in grouping symbols (for example, -Wl,--start-group $MKLPATH/libmkl_cdft_core.a $MKLPATH/libmkl_blacs_intelmpi_ilp64.a $MKLPATH/libmkl_intel_ilp64.a $MKLPATH/libmkl_intel_thread.a $MKLPATH/libmkl_core.a -Wl,--end-group).

The order of listing libraries on the link line is essential, except for the libraries enclosed in the grouping symbols above.

If your compiler doesn't support the option-Wl,--start-group, you may need tosolve the symbols by link them several time. for example
$(MKLROOT)/lib/intel64/libmkl_intel_lp64.a
$(MKLROOT)/lib/intel64/libmkl_intel_thread.a
$(MKLROOT)/lib/intel64/libmkl_core.a
$(MKLROOT)/lib/intel64/libmkl_intel_thread.a
$(MKLROOT)/lib/intel64/libmkl_core.a
$(MKLROOT)/lib/intel64/libmkl_intel_thread.a
$(MKLROOT)/lib/intel64/libmkl_core.a

Best Regards,
Ying

0 Kudos
Ying_H_Intel
Employee
2,486 Views

4.2) Build& Distributing Your Custom Shared Object

I guess, it is not a problem for you to build a custom dll with the command
xeons03 335> make libintel64 export=my_func_list.txt MKLROOT=/u/xeons03/people/xian/dev/intel_7_1_2011/10.3.1/linux/composerxe-2011.1.107/mkl

But regarding the error ida_superlu.c:21: undefined reference to `MKL_Set_Num_Threads', .....
I haven't see exact command about howyou usemkl_custom.so during build yourdll, may be libSundials.so, so I can't say more.
Butplease notice that the order of listing libraries on the link line is essential under linux.The mkl_custom.so is supposed at the end of your *.o or at least after libsuperlu.a.

Once you decide to use the mkl_custom.so, then just distribute mkl_custom.so and libiomp5.so, no other mkl library isrequired.

Hope it helps,
Regards,
Ying

0 Kudos
Reply