- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello everyone, I used VS 2013 + IVF 2013 + MSMPI + PetSC + microsoft HPC those environment to build a fortran multithreaded console app.
The OpenMP conditional compilation = yes, use intel math kernel = No, Process OpenMP Directives = Generate Parallel code.
The source code builded successfully and works fine in developer machine .
But when I attemped execute builded .exe on client machine it come to runtime error like this :
The procedure entry point could not be located: mkl_serv_print_verbose_info in the dynamic link libraryOn the EXE.
On client machine I do not install any develop environment, only copied libiomp5md.dll , mkl_core.dll, mkl_intel_thread.dll these 3 files to the execute directory, I had adjust compile conditions and makes lots of changes in vs-project property, it coundn't work .
So question is, how should I do to make sure the builded exes runs correct with no errors on client machine with no develop environment.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Rui,
You need to set MKLROOT environment variable to the path where your MKL structure is. That is the folder where originally \lib folder resides.
Also please add to PATH environment variable path where your dynamic MKL and OMP dynamic libraries are.
See mklvars.bat comes with Windows MKL distribution for more details.
- Andrey
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Rui,
Please share some details on your environment:
- What Windows version and architecture on both machines?
- Is your app 32-bit or 64-bit?
- Are you linking statically or dynamically? I suppose dynamically but just to be sure.
- What's your environment variables on build and target machines before you run the app? I.e. run 'set | findstr /I PATH'
- What link-line was used to build the app?
In general, I think adding path where you put MKL + OMP libraries to PATH will fix the issue.
- Andrey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Andrey Balanchuk (Intel) wrote:
Hi Rui,
Please share some details on your environment:
- What Windows version and architecture on both machines?
- Is your app 32-bit or 64-bit?
- Are you linking statically or dynamically? I suppose dynamically but just to be sure.
- What's your environment variables on build and target machines before you run the app? I.e. run 'set | findstr /I PATH'
- What link-line was used to build the app?
In general, I think adding path where you put MKL + OMP libraries to PATH will fix the issue.
- Andrey
Thanks for reply.
1.windows 10 enterprise x64 on both machines
2.app is 64-bit
3.using dynamically
4.environment variables on build machine is OK ,I checked the 'Path' for many times. Target machine' only installed Microsoft MPI , the client user donot like install other develop environment, for some reason
5.AdditionalIncludeDirectories="C:\Program Files\Microsoft HPC Pack 2012\Inc;C:\Program Files\PETSc for Windows\PETSc\include;C:\Program Files\Microsoft MPI\Inc;C:\Program Files\PETSc for Windows\PETSc\c-opt_icl_mkl\include;C:\Program Files (x86)\Intel\Composer XE 2013 SP1\compiler\include;C:\Program Files (x86)\Intel\Composer XE 2013 SP1\compiler\include\intel64"
AdditionalLibraryDirectories="C:\Program Files\PETSc for Windows\PETSc\c-opt_icl_mkl\lib;C:\Program Files\PETSc for Windows\lib\intel64;C:\Program Files\PETSc for Windows\PETSc\externalpackages\lib;C:\Program Files\Microsoft MPI\Lib\amd64;C:\Program Files (x86)\Intel\Composer XE 2013 SP1\compiler\lib\intel64"
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Rui S,
The problem looks be here using dynamically and " On client machine I do not install any develop environment, only copied libiomp5md.dll , mkl_core.dll, mkl_intel_thread.dll these 3 files to the execute directory,",
1) May you please try static link MKL (imkl_intel_lp64.lib + etc, please refer to MKL link advisor : https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/) and see if it works.
2) if you dynamic link MKL, the 3 file is not enough, You may try copy all of dll under MKL redist folder, then see if it works.
You can see the dll's purpose from MKL userguide documentation, which was in MKL install directory.
Best Regards,
Ying
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Ying H. (Intel) wrote:
Hi Rui S,
The problem looks be here using dynamically and " On client machine I do not install any develop environment, only copied libiomp5md.dll , mkl_core.dll, mkl_intel_thread.dll these 3 files to the execute directory,",
1) May you please try static link MKL (imkl_intel_lp64.lib + etc, please refer to MKL link advisor : https://software.intel.com/en-us/articles/intel-mkl-link-line-advisor/) and see if it works.
2) if you dynamic link MKL, the 3 file is not enough, You may try copy all of dll under MKL redist folder, then see if it works.
You can see the dll's purpose from MKL userguide documentation, which was in MKL install directory.
Best Regards,
Ying
Hi, I change to static link MKL, and attemped copy all MKL/MPI dll and lib files to the execute directory, it still cannot work. Report the same error.
I figure out if I want to run the program on client machine, I MUST install those develop environment on their machines.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Rui,
You need to set MKLROOT environment variable to the path where your MKL structure is. That is the folder where originally \lib folder resides.
Also please add to PATH environment variable path where your dynamic MKL and OMP dynamic libraries are.
See mklvars.bat comes with Windows MKL distribution for more details.
- Andrey
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks all~
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Andrey Balanchuk (Intel) wrote:Hi Rui,
You need to set MKLROOT environment variable to the path where your MKL structure is. That is the folder where originally \lib folder resides.
Also please add to PATH environment variable path where your dynamic MKL and OMP dynamic libraries are.
See mklvars.bat comes with Windows MKL distribution for more details.
- Andrey
Hello,
Which libraries are the MKL and OMP dynamic libraries?
Thanks and regards,
Randolph
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Where can I find these: dynamic MKL and OMP dynamic libraries?
Thanks and regards,
Randolph
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
all mkl shared objects are located into redist ia32 and intel64 folders correspondingly - see more details into mkl's user guide follow e.x this https://software.intel.com/en-us/mkl-windows-developer-guide-high-level-directory-structure
the best ( or may the fastest ) way to set all needed systems paths - to use mklvars.bat file
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
forget to add regarding Openmp dll - you may find out the libiomp5md.dll into ..\windows\redist\intel64\compiler\ for intel64 IA and ..\windows\redist\ia32\compiler\ for 32 IA correspondingly
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page