Problem using MKL on Windows, via MATLAB

Hi,

OSQP is working fine for me with the default linear solver, but I’m having problems getting MKL Paradiso to work (on Windows, via MATLAB).

I installed MKL with the latest Intel installer. I then ran “mklvars.bat intel64” from “C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.1.216\windows\mkl\bin” (tried both from a standard command prompt, from an admin command prompt, and from within MATLAB).

When I then run OSQP (via MATLAB) I get the error:

ERROR in lh_load_lib: Windows error while loading dynamic library mkl_rt.dll, error = 126
ERROR in osqp_setup: Linear system solver not available.
Tried to obtain it from shared library.

Any ideas?

Thanks in advance,

Tom

Can you check if C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020\windows\mkl\lib\intel64_win is added to your Path?

Thanks. The Intel folders weren’t bizarrely, despite me having run the BAT. Sorry for not having checked this first. Though given I’m not recompiling, do I need the Libs in the path?

I tried the following, which still gave the same error:

setenv(‘PATH’,[‘C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020\windows\mkl\lib\intel64_win’ getenv(‘PATH’) ])

OR

setenv(‘PATH’,[‘C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.1.216\windows\mkl\lib\intel64_win’ getenv(‘PATH’) ])

I also tried making sure that the folders that the BAT adds to the path were in the path being used by MATLAB:

setenv(‘PATH’,[‘C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020\windows\redist\intel64_win\tbb\vc_mt;C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020\windows\redist\intel64_win\mkl;C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020\windows\redist\intel64_win\compiler;’ getenv(‘PATH’) ])

OR

setenv(‘PATH’,[‘C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.1.216\windows\redist\intel64_win\tbb\vc_mt;C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.1.216\windows\redist\intel64_win\mkl;C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.1.216\windows\redist\intel64_win\compiler;’ getenv(‘PATH’) ])

These both resulted in a MATLAB crash, with a command prompt popping up with the following different error:

OMP: Error #15: Initializing libiomp5md.dll, but found libiomp5md.dll already initialized.
OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

The folder should be added to the system path, not the Matlab path. Also, you will need the folder in the path even after compiling the source because the library is loaded dynamically.

I was adding to the system path. setenv( ‘PATH’, … ) sets the system path from within MATLAB.

I am not compiling anything.