Working interface for Intel MKL Pardiso
|Reported by:||hmartin||Owned by:||ipopt-team|
|Keywords:||Intel MKL, Pardiso||Cc:|
I have noticed in the manual of the latest Intel MKL library (v10.1) that it provides now the matrix inertia, which in my understanding was a missing requirement for Ipopt.
I have tried to run Ipopt with MKL Blas & Pardiso, with no success. The tests were done on Windows, with the MS C++ compiler, and the Ipopt examples (Hs071 and various problems from ScalableProblems?).
After digging a bit, I found that the Intel MKL Pardiso works fine with Ipopt, the problem being with the options modified by Ipopt, which are false. It is a bit difficult to figure out the right settings, as the settings used by Ipopt are also different/not documented in the Pardiso manual available on http://www.pardiso-project.org!
Anyway, I have now a working (at least it seems so!) Ipopt + Intel MKL Pardiso, which outperforms significantly MA27 and MUMPS on the few examples I have tested.
I think it would be great to enhance Ipopt so that it can be used with this library, as:
- Pardiso is obviously a fast linear solver well suited for Ipopt
- Intel MKL is quite cheap, available on Windows/Linux? and provides an optimized Blas implementation
I join my modified version IpPardisoSolverInterface?.cpp for reference.