- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
The MKL10 installation contains the following libraries:
# ls MKL10/lib/64/
libguide.a libmkl_core.a libmkl_intel_thread.so
libguide.so libmkl_core.so libmkl_ipf.a
libiomp5.a libmkl_gf_ilp64.a libmkl_lapack.a
libiomp5.so libmkl_gf_ilp64.so libmkl_lapack.so
libmkl_blacs_ilp64.a libmkl_gf_lp64.a libmkl_scalapack.a
libmkl_blacs_intelmpi20_ilp64.a libmkl_gf_lp64.so libmkl_scalapack_ilp64.a
libmkl_blacs_intelmpi20_lp64.a libmkl_gnu_thread.a libmkl_scalapack_lp64.a
libmkl_blacs_intelmpi_ilp64.a libmkl_gnu_thread.so libmkl_sequential.a
libmkl_blacs_intelmpi_lp64.a libmkl_i2p.so libmkl_sequential.so
libmkl_blacs_lp64.a libmkl_intel_ilp64.a libmkl.so
libmkl_blacs_openmpi_ilp64.a libmkl_intel_ilp64.so libmkl_solver.a
libmkl_blacs_openmpi_lp64.a libmkl_intel_lp64.a libmkl_solver_ilp64.a
libmkl_blacs_sgimpt_ilp64.a libmkl_intel_lp64.so libmkl_solver_ilp64_sequential.a
libmkl_blacs_sgimpt_lp64.a libmkl_intel_sp2dp.a libmkl_solver_lp64.a
libmkl_cdft.a libmkl_intel_sp2dp.so libmkl_solver_lp64_sequential.a
libmkl_cdft_core.a libmkl_intel_thread.a libmkl_vml_i2p.so
I do work on installation of many C & Fortan apllications of BioInformatics and Molecular Dynamics domains on intel and amd64 based Hig h Performance Computing clusters.
Some of these apps make use of BLAS libraries. While installing these, I frequently face problems wrt linking BLAS libs. During configuration some apps require the path of MKL directory, and others require specific library names.
Since there are many implementations of BLAS such as MKL, ATLAS, GOTO, ACML the app's install configuration does not mention which particular .so file to use as these libraries generated based on processor architecture also.
So, can someone explain me which of the above libraries (*.so) I've to link if the application requires MKL and Lapack libraries? And their purpose also.
Thanks,
Sangamesh
The MKL10 installation contains the following libraries:
# ls MKL10/lib/64/
libguide.a libmkl_core.a libmkl_intel_thread.so
libguide.so libmkl_core.so libmkl_ipf.a
libiomp5.a libmkl_gf_ilp64.a libmkl_lapack.a
libiomp5.so libmkl_gf_ilp64.so libmkl_lapack.so
libmkl_blacs_ilp64.a libmkl_gf_lp64.a libmkl_scalapack.a
libmkl_blacs_intelmpi20_ilp64.a libmkl_gf_lp64.so libmkl_scalapack_ilp64.a
libmkl_blacs_intelmpi20_lp64.a libmkl_gnu_thread.a libmkl_scalapack_lp64.a
libmkl_blacs_intelmpi_ilp64.a libmkl_gnu_thread.so libmkl_sequential.a
libmkl_blacs_intelmpi_lp64.a libmkl_i2p.so libmkl_sequential.so
libmkl_blacs_lp64.a libmkl_intel_ilp64.a libmkl.so
libmkl_blacs_openmpi_ilp64.a libmkl_intel_ilp64.so libmkl_solver.a
libmkl_blacs_openmpi_lp64.a libmkl_intel_lp64.a libmkl_solver_ilp64.a
libmkl_blacs_sgimpt_ilp64.a libmkl_intel_lp64.so libmkl_solver_ilp64_sequential.a
libmkl_blacs_sgimpt_lp64.a libmkl_intel_sp2dp.a libmkl_solver_lp64.a
libmkl_cdft.a libmkl_intel_sp2dp.so libmkl_solver_lp64_sequential.a
libmkl_cdft_core.a libmkl_intel_thread.a libmkl_vml_i2p.so
I do work on installation of many C & Fortan apllications of BioInformatics and Molecular Dynamics domains on intel and amd64 based Hig h Performance Computing clusters.
Some of these apps make use of BLAS libraries. While installing these, I frequently face problems wrt linking BLAS libs. During configuration some apps require the path of MKL directory, and others require specific library names.
Since there are many implementations of BLAS such as MKL, ATLAS, GOTO, ACML the app's install configuration does not mention which particular .so file to use as these libraries generated based on processor architecture also.
So, can someone explain me which of the above libraries (*.so) I've to link if the application requires MKL and Lapack libraries? And their purpose also.
Thanks,
Sangamesh
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If you're trying to use the Itanium .so files for AMD or Xeon, that would be a problem. Use the /em64t/ libraries for linux x86-64.
MKL 10 is organized differently from MKL 9 and earlier. It supports either threaded or non-threaded libraries for each case. For the 64-bit (Itanium and Xeon/AMD64), it also supports either 32- or 64-bit integer arguments in the call. The third choice, between .a and .so libraries, is the only one I see where you specified your choice clearly.
If you choose the threaded MKL (where certain MKL functions look to see where it appears advantageous to start new threads), you have the further choice between Intel "legacy" OpenMP library and gcc compatible OpenMP. You would require the latter, if you use OpenMP in gcc/g++/gfortran, and use the mkl_thread libraries. Then, you could use either the libgomp, which you get with gcc -fopenmp, or the performance tuned libiomp5.
Both thread and sequential libraries are thread safe. Apparently, it is not safe to use the static thread library in an OpenMP threaded region of an application, but you have ruled that out.
I am assuming you don't want the thread library, as I suspect most of your alternative libraries come without built-in threading.
As an example, to support lapack and BLAS with 32-bit integers and mkl_sequential, you link mkl_intel_lp64.so mkl_intel_core.so and mkl_sequential.so.
MKL 10 is organized differently from MKL 9 and earlier. It supports either threaded or non-threaded libraries for each case. For the 64-bit (Itanium and Xeon/AMD64), it also supports either 32- or 64-bit integer arguments in the call. The third choice, between .a and .so libraries, is the only one I see where you specified your choice clearly.
If you choose the threaded MKL (where certain MKL functions look to see where it appears advantageous to start new threads), you have the further choice between Intel "legacy" OpenMP library and gcc compatible OpenMP. You would require the latter, if you use OpenMP in gcc/g++/gfortran, and use the mkl_thread libraries. Then, you could use either the libgomp, which you get with gcc -fopenmp, or the performance tuned libiomp5.
Both thread and sequential libraries are thread safe. Apparently, it is not safe to use the static thread library in an OpenMP threaded region of an application, but you have ruled that out.
I am assuming you don't want the thread library, as I suspect most of your alternative libraries come without built-in threading.
As an example, to support lapack and BLAS with 32-bit integers and mkl_sequential, you link mkl_intel_lp64.so mkl_intel_core.so and mkl_sequential.so.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Did you mean that, for amd64 dual core, dual opteron processor based cluster the $MKLHOME/lib/em64t/ libraries have to be (only) used instead of using 32/ and 64/ libraeies.
And also for what platforms/arch the 32/ and 64/ libraries are applicable?
And also for what platforms/arch the 32/ and 64/ libraries are applicable?

Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page