Intel® Fortran Compiler
Build applications that can scale for the future with optimized code designed for Intel® Xeon® and compatible processors.
28384 Discussions

MKL pardiso not working with XE 2020

Brian_Murphy
New Contributor II
586 Views

I have a project that uses MKL pardiso which builds and runs great on a system with visual studio 2010 and XE 2013.

I have managed to build the program on a new development machine with visual studio 2019 and XE 2020, but a test case fails saying Intel MKL ERROR: Parameter 4 was incorrect on entry to DLASCL.  This message is written to the console window.  The calls to this routine are in LAPACK.

I'm hoping that the problem is due to something different about using MKL in XE 2020 versus XE 2013.  Is that possible?

 

0 Kudos
5 Replies
Steve_Lionel
Honored Contributor III
586 Views

I'd suggest you ask in the MKL forum.

0 Kudos
Brian_Murphy
New Contributor II
586 Views

Thanks, Steve.  I will do that.  I'm finding that the very first call to the pardiso subroutine produces a different result in XE2020 compared to XE2013.  When I started using pardiso 5 years ago I got a Pardiso Example project, probably from mecej4.  I will try to build that in XE2020 and compare.

0 Kudos
mecej4
Honored Contributor III
586 Views

Brian, here is how to use the old Intel ODE libraries with Intel Fortran 19.1.

1. Find a PC on which you have an older version of Visual C installed, or install such an old version on your current PC. I cannot give you an official answer on this, but I happen to have Visual Studio 10 installed and this works. Other version of roughly the same vintage may work, but you have to try and be prepared to fail.

2. Once you have VS10 installed, open an IFort 19.1 command prompt. Move to a working directory, and place a copy of the Intel ODE Fortran example file there. Compile as follows:

  • For 32-bit, the command is ifort /MD iode_example_f.f d:\math\numanal\ode\intel_ode\lib\ia32\libiode_ia32.lib d:\lang\VS10\VC\lib\msvcrt.lib 
  • For 64-bit, the command is ifort /MD iode_example_f.f d:\MATH\NumAnal\ODE\intel_ode\lib\intel64\libiode_intel64.lib d:\lang\VS10\VC\lib\amd64\msvcrt.lib 

 You will, of course, have to put the correct paths for intel_ode and VS10 for your machine. I have used the directories that I have on my PC.

If you do not have the corresponding MSVCRxxx.DLLs for the old VS version already installed, you will have to obtain the corresponding VCRedist package and install it.

0 Kudos
Brian_Murphy
New Contributor II
586 Views

Thank you, mecej4.  But I may already have solved my problem with the ODE solver.  I don't know for sure because although the program builds ok, it is not yet running successfully because pardiso is not working right.  

I got my program to compile and build by adding legacy_stdio_definitions.lib to the list of additional dependencies.

0 Kudos
mecej4
Honored Contributor III
586 Views

Brian Murphy wrote:

I got my program to compile and build by adding legacy_stdio_definitions.lib to the list of additional dependencies.

That's useful to know, as an alternative to the method that I suggested. However, using legacy_stdio_definitions.lib may not always be sufficient, as we can read at https://docs.microsoft.com/en-us/cpp/porting/overview-of-potential-upgrade-issues-visual-cpp?view=vs-2019 .

0 Kudos
Reply