- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I am running the Intel Compiler 16.0 in Visual Studio Professional 2013. I have a project that I wish to make as an x64 executable. I am able to compile and run the Win32 version, and I can compile and link the x64 version, but when I try to run it I get the message:
The procedure entry point mkl_lapack_ao_zgeqrf could not be located in the dynamic link library G:\Program Files(x86)\VNI\imsl\fnl701\Intel64\lib\imslmkl_dll.dll.
I have verified that the file exists in that path, and that there is no other file of that name in the system apart from the one in the corresponding Win32 path.
Any ideas on what I need to do to track this problem down?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
The missing entry point is in MKL runtime DLLs. It is not clear if you called an IMSL routine that, in turn, called this entry, or if you called ZGEQRF directly from your code. Details of the options used to compile and link with IMSL and MKL would also be needed.
IMSL provides its own versions of Lapack routines but, as a high-performance option, allows you to use the MKL versions of Lapack routines instead. For this to work correctly, the environment has to be be properly set and the appropriate compile and link options selected.
I suggest that you rerun the application after making sure that the MKL DLLs are accessible through %PATH%. You could open an IFort-x64 command window and attempt to run your application in that window.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Mecej4, thanks for your reply. I do call an IMSL routine that calls ZGEQRF. The compiler settings are:
/nologo /O3 /QxHost /Qparallel /Qopt-prefetch=3 /assume:buffered_io /Qipo /free /stand:f15 /Qopt-report:5 /align:qcommons /align:array16byte /align:sequence /module:"x64\Release\\" /object:"x64\Release\\" /Fd"x64\Release\vc120.pdb" /list:"x64\Release\wincwgf64.lst" /libs:static /threads /Qmkl:parallel /c
and the linker settings are:
/nologo /O3 /QxHost /Qparallel /Qopt-prefetch=3 /assume:buffered_io /Qipo /free /stand:f15 /Qopt-report:5 /align:qcommons /align:array16byte /align:sequence /module:"x64\Release\\" /object:"x64\Release\\" /Fd"x64\Release\vc120.pdb" /list:"x64\Release\wincwgf64.lst" /libs:static /threads /Qmkl:parallel /c
The FNL_DIR is set to:
G:\Program Files (x86)\VNI\imsl\fnl701
and
G:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.0.110\windows\mkl\lib\intel64_win
is in my path, but I get the same error.
I don't know what the IFort-x64 window is ...
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Which IMSL routine do you use? I cannot see any IMSL dependency from the settings/command lines that you showed. Can you provide a short example source code?
I ask because I tried the LSQRR example in the IMSl 7 manual, and I could build it fine and Dependency Walker shows that the EXE depends on the MKL libraries and DLLs as expected.
The IFort-x64 window is a shortcut to CMD.EXE configured for use with Intel Fortran. You can find it with the label "Compiler 16.0 for Intel 64 Visual Studio 2013 environment" under Intel Parallel Studio XE 2016.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I use, for example,
include 'link_fnl_shared.h'
use lincg_int
use mcrcr_int
.
.
call lincg(wk1, wk1)
call mcrcr(wk1, wk3, s11)
Running I the IFortran-64 window gives the same errors.
How do I access the Dependency Walker?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
See http://dependencywalker.com/ .
Neither the LINCG example nor the MCRCR example in the IMSL 7 manual produced references to the ?geqrf routines.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for the dependency walker. It is unable to find the files for the mkl_intel_thread.dll.
I assumed that the ?geqrf routine was being called by the IMSL library because there is the option to use the mkl libraries for high performance. I have not been able to find a specific option for that, but I did turn off the Use Intel Math Kernel Libraries option, but that made no difference.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi James,
The issue looks that the exe can't find required libraries. The required libraries includes IMSL library, MKL library (mkl_intel_thread.dll,mkl_avx.dll etc) and maybe compiler runtime library .
for example, you mentioned It is unable to find the files for the mkl_intel_thread.dll. mkl_intel_thread.dll should be not in
G:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.0.110\windows\mkl\lib\intel64_win (static library and dll import library)
but in
G:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.0.110\windows\redist\intel64_win\mkl (it stores the mkl dll itself).
So you may need to add it into your path.
there are some ways to add the dll path into your path.
I may recommend to add it into your system environment by administrator right.
Right click "Computer" icon => Open "System Properties"=> click Tab "Advanced"=>Environment Variables=> in System variables, click path => Edit it.
add G:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2016.0.110\windows\redist\intel64_win\mkl and other.
Then restart your MSVS , build and run your project again.
Please let us know if any result.
Regards,
Ying
P.S
Here is one Fortran IMSL article:
https://software.intel.com/en-us/articles/installing-and-using-the-imsl-libraries for your reference.
It also mentioned how to add library path and dll path.
For below step, the library path $(FNL_DIR)\IA32\lib is out-of-date. It should be changed to IFORT_COMPILER16%\compiler\lib\ia32
And $(FNL_DIR)\Intel64\lib change to %IFORT_COMPILER16%\compiler\lib\intel64
- Add to the end of the list,
$(FNL_DIR)\IA32\lib (for IA-32 architecture target, or)
$(FNL_DIR)\Intel64\lib (for Intel 64 architecture target
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Reviving an old thread, but am facing the same problem as above, even after following the helpful suggestions above.
I am on a Windows 7 virtual machine. I have installed Visual Studio 2015 Community, Intel Parallel Studio XE 2018, and the IMSL fortran Numerical Libraries with the student license, in that order, rebooting at each step.
The code that I am trying to run (out of the "Intel 64 Visual Studio 2015 environment" command line interface) is simply imslmp.f90 as instructed in the installation readme to validate the installation (code attached).
The command I am entering is %F90% %F90FLAGS% imslmp.f90 %LINK_FNL%, where:
%F90% = ifort
%F90FLAGS% = /F60000000 /fpe:3 /Qopenmp /w /I:"C:\Program Files (x86)\RogueWave\imsl\fnl-2018.0.0\win700in170x64\include\dll" /nologo
and
%LINK_FNL% = imslmkl_dll.lib /libs:dll /link /force:multiple
I have added to the end of %Path%:
;%IFORT_COMPILER18%redist\ia32\mkl;%IFORT_COMPILER18%redist\intel64\mkl
As suggested by Ying H.
Thank you all in advance!
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
OK, I figured it out with help from RogueWave's support.
In case this is helpful to others: apparently the 2018.0.0 version of the IMSL libraries are only compatible with up to Intel Parallel Studio 2017u2.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Onda Chikara,
Thank you much for answering the problem here. Right, to use the previous version should be work around the problem.
As i understand, the root cause is that we(MKL) had planned to remove the (automatically offload)AO support for previous coprocessor on windows* support since 2018v. Thus the symbols were removed in 2018v. But in the case when any third-party library build based on the import library from previous mkl version and run with the dll from current mkl version, the function will not be founded. We are looking for some solutions, for example, release new MKL and add these symbols back or third-party library rebuild with new mkl library, both seems make everything work. If possible, please help to notify RogueWave the possibility.
Thanks,
Ying .
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Along with the recent dropping of the MIC co-processors all the "automatic off-load" or "ao" routines have been removed from MKL.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Has this problem been solved in Intel Parallel Studio 2019v @Ying H. (Intel)
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Has this problem been solved in Intel Parallel Studio 2019v
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
James L. wrote:I use, for example,
include 'link_fnl_shared.h'
use lincg_int
use mcrcr_int
.
.
call lincg(wk1, wk1)
call mcrcr(wk1, wk3, s11)Running I the IFortran-64 window gives the same errors.
How do I access the Dependency Walker?
you could try include 'link_fnl_shared_imsl.h' instead of include 'link_fnl_shared.h'.
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page