- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Further to my previous thread on parallel coding.
If I leave the OpenMP coding in place & distribute my exe to users who do not IVF installed, is it necesssary to distribute an OpenMP runtime library with the exe?
(max ~10 other users)
Some will not have multi-core CPU's, so the code would likely be distributed with NUM_THREADS(1). Better to remove all OpenMP references?
David
If I leave the OpenMP coding in place & distribute my exe to users who do not IVF installed, is it necesssary to distribute an OpenMP runtime library with the exe?
(max ~10 other users)
Some will not have multi-core CPU's, so the code would likely be distributed with NUM_THREADS(1). Better to remove all OpenMP references?
David
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Normally, you would set up your source so that you can control OpenMP with the compilation switch, and the user environment can control the number of threads. If you compile with OpenMP, and link with a dynamic OpenMP library, that library will be required at run time.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
It's the same as with the normal Fortran libraries. If you link against the static libraries, you don't need to distribute anything. If you link against the DLL libraries, you'll need to include libguide40.dll in the set of DLLs you distribute.
Note that our OpenMP implementation uses the number of execution units as the number of threads. So if they're on a single-core system, there will be only one thread. Normally you would not want to override this.
Note that our OpenMP implementation uses the number of execution units as the number of threads. So if they're on a single-core system, there will be only one thread. Normally you would not want to override this.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Tim & Steve
Thanks for the info.
One point is still not clear though, even after searching through the manual & the install directories. Is it "libguide40.dll", or one of the OpenMP dll's (name?), that I need to include?
Current command line is "/nologo /O3 /Og /QaxS /Qunroll:3 /assume:buffered_io /Qopenmp /module:"x64Release/" /object:"x64Release/" /libs:static /threads /c"
For the present I will not include /Qopenmp in the 32bit version of the code (which most users will use), so I assume no OpenMP library will be required with that version?
David
[Oops - just noticed I have /libs:static. Does that mean no OpenMP dll's are required?]
Thanks for the info.
One point is still not clear though, even after searching through the manual & the install directories. Is it "libguide40.dll", or one of the OpenMP dll's (name?), that I need to include?
Current command line is "/nologo /O3 /Og /QaxS /Qunroll:3 /assume:buffered_io /Qopenmp /module:"x64Release/" /object:"x64Release/" /libs:static /threads /c"
For the present I will not include /Qopenmp in the 32bit version of the code (which most users will use), so I assume no OpenMP library will be required with that version?
David
[Oops - just noticed I have /libs:static. Does that mean no OpenMP dll's are required?]
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
libguide40.dll is the Intel Fortran (and C++) OpenMP DLL. But if you have linked /libs:static then you are pulling in libguide.lib and don't need any DLLs.

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