Intel の MKL ライブラリは以下のように様々な種類が存在するので、実際に使用する場合ではどのライブラリをどんな順番でリンクするかについてはわかりにくいとの評判になっている。
libmkl_avx.so libmkl_blas95_lp64.a libmkl_intel_ilp64.a libmkl_p4n.so libmkl_solver_lp64.a
libmkl_blacs_ilp64.a libmkl_cdft_core.a libmkl_intel_ilp64.so libmkl_pgi_thread.a libmkl_solver_lp64_sequential.a
libmkl_blacs_intelmpi_ilp64.a libmkl_cdft_core.so libmkl_intel_lp64.a libmkl_pgi_thread.so libmkl_vml_avx.so
libmkl_blacs_intelmpi_ilp64.so libmkl_core.a libmkl_intel_lp64.so libmkl_rt.so libmkl_vml_def.so
libmkl_blacs_intelmpi_lp64.a libmkl_core.so libmkl_intel_sp2dp.a libmkl_scalapack_ilp64.a libmkl_vml_mc.so
libmkl_blacs_intelmpi_lp64.so libmkl_def.so libmkl_intel_sp2dp.so libmkl_scalapack_ilp64.so libmkl_vml_mc2.so
libmkl_blacs_lp64.a libmkl_gf_ilp64.a libmkl_intel_thread.a libmkl_scalapack_lp64.a libmkl_vml_mc3.so
libmkl_blacs_openmpi_ilp64.a libmkl_gf_ilp64.so libmkl_intel_thread.so libmkl_scalapack_lp64.so libmkl_vml_p4n.so
libmkl_blacs_openmpi_lp64.a libmkl_gf_lp64.a libmkl_lapack95_ilp64.a libmkl_sequential.a locale
libmkl_blacs_sgimpt_ilp64.a libmkl_gf_lp64.so libmkl_lapack95_lp64.a libmkl_sequential.so
libmkl_blacs_sgimpt_lp64.a libmkl_gnu_thread.a libmkl_mc.so libmkl_solver_ilp64.a
libmkl_blas95_ilp64.a libmkl_gnu_thread.so libmkl_mc3.so libmkl_solver_ilp64_sequential.a
そのため、以下のように Intel® Math Kernel Library Link Line Advisor という Web ページが用意されている。
http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/
例えば Linux + Intel64 + Intel C/C++ + Static link + ILP64 (64bit integer) + multi-threaded + OpenMP の場合では、以下のオプションを使用することになる。MPI 関係の呼び出しにも対応している。
-Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_ilp64.a $(MKLROOT)/lib/intel64/libmkl_intel_thread.a $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -openmp -lpthread
libmkl_avx.so libmkl_blas95_lp64.a libmkl_intel_ilp64.a libmkl_p4n.so libmkl_solver_lp64.a
libmkl_blacs_ilp64.a libmkl_cdft_core.a libmkl_intel_ilp64.so libmkl_pgi_thread.a libmkl_solver_lp64_sequential.a
libmkl_blacs_intelmpi_ilp64.a libmkl_cdft_core.so libmkl_intel_lp64.a libmkl_pgi_thread.so libmkl_vml_avx.so
libmkl_blacs_intelmpi_ilp64.so libmkl_core.a libmkl_intel_lp64.so libmkl_rt.so libmkl_vml_def.so
libmkl_blacs_intelmpi_lp64.a libmkl_core.so libmkl_intel_sp2dp.a libmkl_scalapack_ilp64.a libmkl_vml_mc.so
libmkl_blacs_intelmpi_lp64.so libmkl_def.so libmkl_intel_sp2dp.so libmkl_scalapack_ilp64.so libmkl_vml_mc2.so
libmkl_blacs_lp64.a libmkl_gf_ilp64.a libmkl_intel_thread.a libmkl_scalapack_lp64.a libmkl_vml_mc3.so
libmkl_blacs_openmpi_ilp64.a libmkl_gf_ilp64.so libmkl_intel_thread.so libmkl_scalapack_lp64.so libmkl_vml_p4n.so
libmkl_blacs_openmpi_lp64.a libmkl_gf_lp64.a libmkl_lapack95_ilp64.a libmkl_sequential.a locale
libmkl_blacs_sgimpt_ilp64.a libmkl_gf_lp64.so libmkl_lapack95_lp64.a libmkl_sequential.so
libmkl_blacs_sgimpt_lp64.a libmkl_gnu_thread.a libmkl_mc.so libmkl_solver_ilp64.a
libmkl_blas95_ilp64.a libmkl_gnu_thread.so libmkl_mc3.so libmkl_solver_ilp64_sequential.a
そのため、以下のように Intel® Math Kernel Library Link Line Advisor という Web ページが用意されている。
http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/
例えば Linux + Intel64 + Intel C/C++ + Static link + ILP64 (64bit integer) + multi-threaded + OpenMP の場合では、以下のオプションを使用することになる。MPI 関係の呼び出しにも対応している。
-Wl,--start-group $(MKLROOT)/lib/intel64/libmkl_intel_ilp64.a $(MKLROOT)/lib/intel64/libmkl_intel_thread.a $(MKLROOT)/lib/intel64/libmkl_core.a -Wl,--end-group -openmp -lpthread