- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am having trouble with statically linking the latest verison of the MKL to a F90 program which is built through Visual Studio 2008. We recently upgraded from Intel Fortran 10.1 to Composer XE-2011. In the process of this upgrade we used the included MKL. With the previous version (Fortran 10.1 and MKL 10.0), I simply added the libguide.lib and mkl_c.lib to the project and added the path to the containing folder. I was able to compile and then move the executable to any computer (without MKL installed) and run the exec. I have been able to do a similar process with MKL 10.3 where I include mkl_core.lib , mkl_intel_c.lib , and mkl_intel_thread.lib from the mkl/lib/ia32 folder and the libiomp5md.lib from the compiler/ia32 folder. I can get this to compile and run of the machine containing the MKL, but not when I move it to one that does not have it installed. When I attempt to run the exec, I get a warning that says:
This program can't start because libiomp5md.dll is missing from your computer.
I don't understand why it is looking for a dll when I included the .lib. Am I doing something wrong?
This program can't start because libiomp5md.dll is missing from your computer.
I don't understand why it is looking for a dll when I included the .lib. Am I doing something wrong?
Link Copied
6 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
"md" means multi-threaded dynamic. Link the libiomp5mt.lib if that's the one you want, but take care that it's the only OpenMP library, and is linked only once, in the final link step. The recommended system for doing that has changed from 10.1 to 11.x and again to 12.0 AKA xe-2011, so I don't know the "official" line for the current one.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I don't understand why it is looking for a dll when I included the .lib.
The library that you linked against is a stub library (also called "import library") that is paired with the DLL. The stub has just enough information in it to direct calls to the DLL, but the actual code for the called subprograms is in the DLL. For this reason, stub libraries are much smaller than their static-link library counterparts.
The solution: check that the license allows redistributing the missing DLL; if everything is OK, simply copy ibiomp5md.dll to the machine where your application is to be run.
The library that you linked against is a stub library (also called "import library") that is paired with the DLL. The stub has just enough information in it to direct calls to the DLL, but the actual code for the called subprograms is in the DLL. For this reason, stub libraries are much smaller than their static-link library counterparts.
The solution: check that the license allows redistributing the missing DLL; if everything is OK, simply copy ibiomp5md.dll to the machine where your application is to be run.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Use of the term stub library as a synonym for import library is potentially confusing. In your installation, you will have libiomp5stubs5md and mt libraries, which basically serialize the OpenMP calls (probably not what you are looking for).
The libiomp5md.dll is included in the redistributable library package which you can download from https://registrationcenter.intel.com if you have registered your license.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello dalldredge,
You may solve the problem by includingthestaticlibrary libiomp5mt.lib (mkl_intel_c.lib mkl_intel_thread.lib mkl_core.lib libiomp5mt.lib) or link libiomp5md.lib and distribute libiomp5md.dll as mecej4 adn TimP suggested
Here is some more information for your reference.
1. about http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/compiler_c/optaps/common/optaps_par_libs.htm
2. OpenMP support changes since Intel IPP 6.0 and Intel MKL 10.1 ...
The legacy OpenMP* run-time library (libguide*)wereswitched to the compatibility library (libiomp*).
3. but you are strongly encouraged to dynamically link in the compatibility OpenMP* run-time
library libiomp (libiomp5md.lib (import) and libiomp5md.dll,even if other libraries are linked statically.
Please see mkl userguide -> Linking with Compiler Support RTLs.
Hope it helps,
Regards,
Ying
You may solve the problem by includingthestaticlibrary libiomp5mt.lib (mkl_intel_c.lib mkl_intel_thread.lib mkl_core.lib libiomp5mt.lib) or link libiomp5md.lib and distribute libiomp5md.dll as mecej4 adn TimP suggested
Here is some more information for your reference.
1. about http://software.intel.com/sites/products/documentation/hpc/compilerpro/en-us/cpp/lin/compiler_c/optaps/common/optaps_par_libs.htm
Operating System | Dynamic Link | Static Link |
---|---|---|
Linux | libiomp5.so | libiomp5.a |
Mac OS X | libiomp5.dylib | libiomp5.a |
Windows | libiomp5md.lib(dynamic import library) | libiomp5mt.lib |
2. OpenMP support changes since Intel IPP 6.0 and Intel MKL 10.1 ...
The legacy OpenMP* run-time library (libguide*)wereswitched to the compatibility library (libiomp*).
3. but you are strongly encouraged to dynamically link in the compatibility OpenMP* run-time
library libiomp (libiomp5md.lib (import) and libiomp5md.dll,even if other libraries are linked statically.
Please see mkl userguide -> Linking with Compiler Support RTLs.
Hope it helps,
Regards,
Ying
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I have registered my copy of the MKL 10.3, but I don't see a place to download the libiomp5md.dll and libiomp5md.lib. I have installed MKL 10.3 on a 32 bit Win XP machine. Where in there directory structure are these libraries placed? In previous versions they were with the other MKL .lib files.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
for ia32, see\compiler\lib\ia32\,
where == as an example,C:\APPS\Intel\ComposerXE-2011\
for intel64 ( aka em64t) see compiler\lib\intel64\
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