Intel® oneAPI Math Kernel Library
Ask questions and share information with other developers who use Intel® Math Kernel Library.

mkl_lapack_ao_zgeqrf not located

James_L_4
Beginner
2,191 Views

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?

0 Kudos
15 Replies
mecej4
Honored Contributor III
2,188 Views

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.

0 Kudos
James_L_4
Beginner
2,188 Views

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 ...

0 Kudos
mecej4
Honored Contributor III
2,188 Views

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.

0 Kudos
James_L_4
Beginner
2,188 Views

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?

0 Kudos
mecej4
Honored Contributor III
2,188 Views

See http://dependencywalker.com/ .

Neither the LINCG example nor the MCRCR example in the IMSL 7 manual produced references to the ?geqrf routines.

0 Kudos
James_L_4
Beginner
2,188 Views

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.

0 Kudos
Ying_H_Intel
Employee
2,188 Views

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
     

 

0 Kudos
Ying_H_Intel
Employee
2,188 Views

Hi James L.

Any news about the build?

Regards,

Ying

0 Kudos
onda__chikara
Beginner
2,188 Views

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!

0 Kudos
onda__chikara
Beginner
2,186 Views

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.

0 Kudos
Ying_H_Intel
Employee
2,186 Views

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 .

 

0 Kudos
AndrewC
New Contributor III
2,186 Views

Along with the recent dropping of the MIC co-processors all the "automatic off-load" or "ao" routines have been removed from MKL.

0 Kudos
Kuilong__Song
Beginner
2,186 Views

Has this problem been solved in Intel Parallel Studio 2019v @Ying H. (Intel)

0 Kudos
Kuilong__Song
Beginner
2,186 Views

Has this problem been solved in Intel Parallel Studio 2019v

0 Kudos
sumitsinghal
Beginner
2,186 Views

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'.

0 Kudos
Reply