- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi, I'm using Intel Parallel Studio 2017 and VS2012. I have a quickwin multithread application that does not use openMP explicitly. This application worked well with Intel Fortran Composer XE 2013. But now it requires openMP dll, when I try to start it on PC without PS and VS installed.
Is it possible to avoid this problem and to compile&link my application in a such way that it will not require openMP dll?
Thank you beforehand.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Do this - in the project properties, select Linker > General. Set "Show Progress" to "Show all progress messages". Do a full rebuild of the project. Zip the buildlog.htm and attach the ZIP here so we can look at it.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
No - Intel no longer provides the statically-linked OpenMP library. But you can install the "compiler redistributables", including the OpenMP DLL, on any computer.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
what did you mean by "that does not use openMP explicitly."? Do you have some third party libs that use openMP?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Steve and Andrew!
Steve, I understood.
Andrew, I don't use openMP at all, but before I asked the question I suspected that new Intel-multithreading could use it, because my code previous version (that is without MT) works well.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Note that all QuickWin apps are at least two threads by default (not using OpenMP.) Your app runs in one thread and the GUI runs in another.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Steve!
The previous version of my code was a console application, therefore it works well in this sense.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I would check what parallel options you have set and remove them. You should be able to make a static quickwin build.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Andrew!
All compiler and linker options are default. I have migrated my old project. As I understand, I don't use any parallel options.
In my code I use only CreateThread and CloseHandle functions in IFMT module. In my old project I used them in DFMT module.
Please find below my options list.
Fortran:
/nologo /O2 /fpscomp:ioformat /fpscomp:general /assume:byterecl /fpe:0 /module:"x64\Release\\" /object:"x64\Release\\" /Fd"x64\Release\vc110.pdb" /libs:qwin /c
Linker:
/OUT:"bin\F64.exe" /NOLOGO /MANIFEST:NO /SUBSYSTEM:WINDOWS /LARGEADDRESSAWARE /IMPLIB:"E:\Dropbox\F-projects-XE2017-VS2012\F\x64\Release\F.lib"
Resources:
/fo "x64\Release/F.res"
MIDL:
/nologo /char signed /env x64 /h "F_h.h" /tlb "x64\Release/F.tlb"
Manifest tool:
/nologo /outputresource:"E:\Dropbox\F-projects-XE2017-VS2012\F\x64\Release\F.exe;#1"
Thank you beforehand for any advices.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
on the compile you do not have /libs:static
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Andrew!
Just now I've did it. With this option my code anyway requires libiomp5md.dll, when I tried to start the code on other PC.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Don't use /libs:static with QuickWin - use /libs:qwin. You must have some other part of the code that is built with /Qopenmp for there to be a reference to libiomp5md. But if that is still needed, just install the redistributables on the other computer.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Steve!
1. I make a free code, so I don't want to do something that complicates using the code by potential users. Therefore, an installation of redistributables for other PCs is not entirely desirable for me.
2. Now I have put the libiomp5md file in the folder from which the program is launched. My problem is that I have two versions of the code: 32x and 64x, and they run from the same folder. Therefore, I had to create a batch file, which copies the corresponding dll in this folder.
3. As for your comment. As I understood from it, for all that it is possible to remove a reference to libiomp5md and to avoid an error when I'm starting my code on other PC without an installation of redistributables. Unfortunately, my code is big enough, and I do not know at the moment, which part of it refers to libiomp5md. To learn this issue may take considerable time.
4. If you can tell which parts of my code I need to pay attention to, below I will list the features that I use in my code.
- quickwin dialogs with controls;
- menu;
- windows API functions to implement features that are not implemented in quickwin (for example, tree control);
- graphics functions;
- launching threads;
- launching processes;
- windows socket functions for interacting with the launched processes;
- standard windows dialogs to open and save files;
- interaction with the printer.
Thank you beforehand for any advices.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Distribution of the run-time DLLs is free.
None of the program aspects you mention would necessarily use OpenMP. Could it be that your program has the OpenMP option enabled even though you don't use OpenMP? Look under Fortran > Language and make sure that OpenMP is disabled. If you do that and build without errors, then you won't need libiomp5md.dll. It is not possible to use OpenMP but not use the DLL.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Steve!
Yes, in my project "Process OpenMP Directives" is disable. But it requires libiomp5md.dll when I try to start it on other PC.
But "OpenMP Conditional Compilation" (Fortran/Preprocessor) is "Yes" and "Enable OpenMP Offloading Compilation" (Fortran/Code Generation) is "Default". Can it somehow influence?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I suggest making a new qwin project in a new solution and adding your existing source files to this and see what happens.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Do this - in the project properties, select Linker > General. Set "Show Progress" to "Show all progress messages". Do a full rebuild of the project. Zip the buildlog.htm and attach the ZIP here so we can look at it.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you, Steve and Andrew!
Steve, I did what you advised, looked through the buildlog.htm file and found that one of the source files in its properties has Fortran/Optimization/Parallelization - Yes (/Qparallel). (I don't know why this happened)
I removed this option, and the program works on another PC without a library libiomp5md.dll.
Once again many thanks for your help!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes - /Qparallel creates a dependency on OpenMP. Glad to hear you solved it.

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