Using IMSL and need of libiomp5md.dll

Using IMSL and need of libiomp5md.dll

Hello,

I need to use IMSL library. In the instructions is told, that I have to make the setting "Fortran>Language>Process OpenMP Directives>Generate Parallel Code. It seems, with this setting, my console application needs on target-PCs the "libiomp5md.dll". Is there a way, to avoid this or that I can statical link the needed parts in my exe? I would like to avoid my exe to be dependant of an additional dll. An other solution would been, if there is a way to use IMSL without the setting "Generate Parallel Code".

Would be great, if I can get a solution.

Greetings,
Torsten
12 posts / 0 new
Last post
For more complete information about compiler optimizations, see our Optimization Notice.

I see, so its not possible any more to link it as static lib. Funny is, that the link "Intel® Math Kernel Library Link Line Advisor" on the page is broken. It seems, its enough to have the libiomp5md.dll on the target-pc, can I be sure of this? Or can it be, that even more dlls are needed while runtime? Or better, how would be now the exact and clean way to get my exe run on any target PC? At moment I just copy the libiomp5md.dll in same directory then the exe.

Greetings and thanks for helping

Greetings,
Torsten

Copying in the DLL to where your EXE is should work fine.  You can use Dependency Walker to see what other dependencies there are, if any.

I don't see where the MKL link line advisor suggests linking in a static OpenMP library. It suggests using /Qopenmp, unless you're using a non-Intel compiler, then it lists libiomp5md.lib, correctly. What combination of options did you choose that showed otherwise?

Steve - Intel Developer Support

Ah, just I saw, that removed is libiomp5mt.lib and not libiomp5md.lib. so I can link it static in my project? Oh, and sorry, but what you mean with "I don't see where the MKL link line advisor suggests linking in a static OpenMP library. It suggests using /Qopenmp, unless you're using a non-Intel compiler, then it lists libiomp5md.lib, correctly."

Sorry, seems at moment I am a little confused

Greetings,
Torsten

libiomp5md.lib is the DLL import library for libiomp5md.dll. It is not a static library.

Please tell me how you think the link line advisor is broken.

Steve - Intel Developer Support

Ah, OK, me silly, its just the import-library. Thanks.

To the broken link: I go to "http://software.intel.com/en-us/articles/openmp-static-library-deprecati..." as I was adviced here on the page. On this page, there is another link called "Intel® Math Kernel Library Link Line Advisor", and this just leads me to http://software.intel.com/en-us/.

and thanks a lot for your support, keep up the good work.

Also thanks for the tip with dependency walker, works fine. Just gave me an error in my exe, that IESHIMS.DLL could not be opened its called somewhere deep in IMAGEHLP.DLL. Hmm, I do not think this can get a problem.

So, just that I understood right: I need the "libiomp5md.dll" when I work with IMSL, there is no other way, and I can not link it in my exe, this is right, yes?

Regards,

Torsten

Greetings,
Torsten

MKL link advisor is here

http://software.intel.com/en-us/articles/intel-mkl-link-line-advisor

When the site isn't too badly mixed up, your search engine should work with queries such as

MKL link advisor site:software.intel.com

Ignore IESHIMS.DLL - pretty much every program will show that as a conditional dependency. It is "delay load" so it won't cause an error.

I had not realized initially you were reporting errors in the article. I fixed the links (both the advisor link and the forum link were bad.) Thanks for pointing this out.

Steve - Intel Developer Support

Thanks for the info to ignore IESHIMS.DLL.

Now I could access the link-line-advisor, and its for use with Intel® Math Kernel Library.There is at least the option "Select dynamic or static linking:". Anyway, I do not use MKL, I use IMSL.

Now back to my original question about IMSL: I think, I got my answer allready. It would be really great if I can get a confirmation, if I understood right:

  • I need to enable "Generate Parallel Code" (Compiler option /Qopenmp) when I work with IMSL (seems so, if I try without, I get unresolved externals).
  • If compiler option /Qopenmp is set, my output-program needs the "libiomp5md.dll", there is no way to link in a static way, so the application does not need the dll in runtime.

I am really sorry, that I bother again, but I just want to get this confirmed. Because I would prefer to avoid using the dll and have all what my program needs in my exe.

Greetings,

Torsten

Greetings,
Torsten

Both of the statements you made are correct. There is no way to avoid use of the OpenMP DLL when using IMSL.

Steve - Intel Developer Support

OK, thanks for your answer, even it was already implicit answered.

Greetings,
Torsten

Leave a Comment

Please sign in to add a comment. Not a member? Join today