Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.

Libiomp5md.dll Distribution

jonpap
Beginner
1,722 Views
Hi there

I'm just started using the intel compiler, so apologises if this is an obvious question.

In using my software on PC's, I've had reports of people getting an error saying "libiomp5md.dll not found" (or the software not even working). Libiomp5md is used because the program uses OpenMp

Installing libiomp5md.dll in widows/system32 seem to fix this problem.

So is it the recommended pratice to install libiomp5md.dll into windows/system32 during installation of our software ? Is there any risk of doing this ?

Cheers

Jon
0 Kudos
14 Replies
Hubert_H_Intel
Employee
1,723 Views
Quoting - jonrobpapen.com
Hi there

I'm just started using the intel compiler, so apologises if this is an obvious question.

In using my software on PC's, I've had reports of people getting an error saying "libiomp5md.dll not found" (or the software not even working). Libiomp5md is used because the program uses OpenMp

Installing libiomp5md.dll in widows/system32 seem to fix this problem.

So is it the recommended pratice to install libiomp5md.dll into windows/system32 during installation of our software ? Is there any risk of doing this ?

Cheers

Jon

Jon,
With 11.1 compilers the default linkage is dynamic, so with using the compiler switch /Qopenmp automatically all required libs are included when building the pplication (default C:rogram FilesIntelCompiler11.1lib).When executing the code thelibiomp5md.dll RTL needs to bepresent on the same location where the executable starts.So no need to copy the dll into the windows directory for development under Visual Studio. Does this help?
Regards,
Hubert.
0 Kudos
jonpap
Beginner
1,723 Views

Jon,
With 11.1 compilers the default linkage is dynamic, so with using the compiler switch /Qopenmp automatically all required libs are included when building the pplication (default C:rogram FilesIntelCompiler11.1lib).When executing the code thelibiomp5md.dll RTL needs to bepresent on the same location where the executable starts.So no need to copy the dll into the windows directory for development under Visual Studio. Does this help?
Regards,
Hubert.

Hi there

Thanks for that information, I am compling with /Qopenmp. Our products are dll's (not executables), and if they are used on different machines from the machine they were created on, they do come up with the error message, which is fixed by copying the dll into windowssystem32. So it's helpful but doesn't really answer the question.

Cheers

Jon
0 Kudos
jonpap
Beginner
1,723 Views
However it has made me check something , and if I put the dll in the same folder as our software it also works, and I'm much happier about doing that then putting it into systems folder.


0 Kudos
Hubert_H_Intel
Employee
1,723 Views
Quoting - jonrobpapen.com
However it has made me check something , and if I put the dll in the same folder as our software it also works, and I'm much happier about doing that then putting it into systems folder.



Jon,
Yes, exactly.
Copying the dll into windowssystem32 is just a "workaround" to get the dll included since windowssystem32 is in the search path of the system anyway (look at echo %PATH%) . There is no need to have the dll there.
Hubert.
0 Kudos
jonpap
Beginner
1,723 Views
Quoting - jonrobpapen.com
Hi there

I'm just started using the intel compiler, so apologises if this is an obvious question.

In using my software on PC's, I've had reports of people getting an error saying "libiomp5md.dll not found" (or the software not even working). Libiomp5md is used because the program uses OpenMp

Installing libiomp5md.dll in widows/system32 seem to fix this problem.

So is it the recommended pratice to install libiomp5md.dll into windows/system32 during installation of our software ? Is there any risk of doing this ?

Cheers

Jon

Yes you were right, it just took me a bit to think it through :)

I've tested this on my laptop, and having the libiomp5md.dll in the same folder works, if it's not there it doesn't.

I've also tested by having two different pieces of software, which both use OpenMP , in different folders, both with the libiomp5md in the respective folders, and they both open up, I suspect in this case only one of the libiomp5md.dll's is actually used (is this correct ?).

Thanks for the advice, I was not happy about installing dll's into system32 (I prefer not to mess around with system stuff), having it in the install folder is a much better option.

Cheers

Jon


0 Kudos
TimP
Honored Contributor III
1,723 Views
Quoting - jonrobpapen.com

I've tested this on my laptop, and having the libiomp5md.dll in the same folder works, if it's not there it doesn't.

I've also tested by having two different pieces of software, which both use OpenMP , in different folders, both with the libiomp5md in the respective folders, and they both open up, I suspect in this case only one of the libiomp5md.dll's is actually used (is this correct ?).

If I understand what you're saying, each .exe would start by looking for the dll in its own folder, so each could be using a separate dll of the same name. If they came from different versions of ifort, they might not be identical.
For what it's worth, on a 64-bit Windows system, paradoxically, system32 should have only 64-bit dlls. This is only one reason why you're correct in avoiding the system folders.
0 Kudos
jonpap
Beginner
1,723 Views
Quoting - tim18
If I understand what you're saying, each .exe would start by looking for the dll in its own folder, so each could be using a separate dll of the same name. If they came from different versions of ifort, they might not be identical.
For what it's worth, on a 64-bit Windows system, paradoxically, system32 should have only 64-bit dlls. This is only one reason why you're correct in avoiding the system folders.

Thanks for that further information Tim, you make a good point about 32 / 64 bit dll's.
0 Kudos
pbkenned1
Employee
1,723 Views
Quoting - jonrobpapen.com

Thanks for that further information Tim, you make a good point about 32 / 64 bit dll's.

Jon,
As an alternative tocopying the needed Intel DLL(s) to each of your DLL application folders, you could install our Redistributable Libraries package and have everything in one place. It's a solution similar to putting the Intel DLLs in windowssystem32, but much cleaner, and you won't risk mixing 32/64 bit DLLs.

The Redistributable Library packages are based on compiler version + architecture.
For example, on Intel(64) architecture, we have:

w_cproc_p_11.1.048_redist_intel64.exe, which matches the just-posted compiler w_cproc_p_11.1.048_intel64.exe.

Installing this package on an Intel(64) host will:

1) Put all the redistributable Intel runtime libraries beneath:
C:Program Files (x86)Common FilesIntelShared Filescpp

2) Modify your $Path environment variable to point to this area:
C:>echo %Path%
C:Program Files (x86)Common FilesIntelShared FilescppbinIntel64;

If you were only developing for IA-32, then there are similar packages for IA-32 architecture hosts.

Patrick Kennedy
Intel Developer Support
0 Kudos
jonpap
Beginner
1,723 Views
Further information about this.

We are still having problems reporting about libiomp5md.dll not appearing, even when we have install the dll in the same folder as our dll.

I think this is because our dll is loaded in as a plugin into another host program, and our plugin might be looking for libiomp5md in the folder that the host program is in , not the folder our dll is in.

The Redistributable Libraries is an interesting idea, but it is a massive overkill for the one missing file.

So we will have to go ahead and install the libiomp5md.dll in windowssystem32 unless anyone can think of a problem caused by that, or any other ideas.
0 Kudos
Hubert_H_Intel
Employee
1,723 Views
Quoting - jonrobpapen.com
Further information about this.

We are still having problems reporting about libiomp5md.dll not appearing, even when we have install the dll in the same folder as our dll.

I think this is because our dll is loaded in as a plugin into another host program, and our plugin might be looking for libiomp5md in the folder that the host program is in , not the folder our dll is in.

The Redistributable Libraries is an interesting idea, but it is a massive overkill for the one missing file.

So we will have to go ahead and install the libiomp5md.dll in windowssystem32 unless anyone can think of a problem caused by that, or any other ideas.

The "overkill"was the reason why I didn't recommend you installing the redistributable package initially. However, if you encounter issues that seem to be ralated to some dependencies where a module cannot find the runtime library in place, I strongly recommend to install the redistributable which is the clean solution. The Intel 64 redistributable is just 24MB and shouldn't be a problem, except there are disc space problems on the running target. And if there are problems, you could delete unused libraries. The redistributable installer includes the libraries to PATH and makes sure that all Intel libs are available on runtime. Regards, Hubert.
0 Kudos
jonpap
Beginner
1,723 Views

The "overkill"was the reason why I didn't recommend you installing the redistributable package initially. However, if you encounter issues that seem to be ralated to some dependencies where a module cannot find the runtime library in place, I strongly recommend to install the redistributable which is the clean solution. The Intel 64 redistributable is just 24MB and shouldn't be a problem, except there are disc space problems on the running target. And if there are problems, you could delete unused libraries. The redistributable installer includes the libraries to PATH and makes sure that all Intel libs are available on runtime. Regards, Hubert.

Hi there

Thanks for the advice , but is there a way to have the redistributable so it only installs the needed dll , there is only the one. Also is there a way that it install's silently without showing anything on the screen.

Cheers

Jon

0 Kudos
Hubert_H_Intel
Employee
1,723 Views
Quoting - jonrobpapen.com

Hi there

Thanks for the advice , but is there a way to have the redistributable so it only installs the needed dll , there is only the one. Also is there a way that it install's silently without showing anything on the screen.

Cheers

Jon

Jon,
Unfortunately there is no silent install for the redistributable package. There isn't even any dialog to customize the installation directory or to choose which libraries to install. The package hard-installson C:Program FilesCommon FilesIntelShared Files, where C:Program FilesCommonFilesmay be different on localized OS.

Hubert.

0 Kudos
jonpap
Beginner
1,723 Views

Jon,
Unfortunately there is no silent install for the redistributable package. There isn't even any dialog to customize the installation directory or to choose which libraries to install. The package hard-installson C:Program FilesCommon FilesIntelShared Files, where C:Program FilesCommonFilesmay be different on localized OS.

Hubert.


Thanks for the additional information.

Just one more question , about which versions to use

Our dll's are 32 bits , does this mean we should use the Redistributable Libraries for IA-32, even in 64 bit enviroments ?

0 Kudos
TimP
Honored Contributor III
1,723 Views
Quoting - jonrobpapen.com

Our dll's are 32 bits , does this mean we should use the Redistributable Libraries for IA-32, even in 64 bit enviroments ?

Yes. In 64-bit Windows, you can run either 32- or 64-bit builds, but you can't swap in 64-bit dlls in a build which runs with 32-bit ones.
0 Kudos
Reply