-
Notifications
You must be signed in to change notification settings - Fork 286
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add a pardisomkllib option #654
Comments
Probably it is possible, but it is extra effort to implement this. The reason to do so for HSL and Pardiso (from pardiso-project.org) was that these are codes that one cannot freely redistribute. But MKL and Spral have liberal licenses. So like you have been doing for Mumps, you can just link against these while building Ipopt. With Pardiso from MKL, I'm also not sure how smooth things will work if one uses a different Blas/Lapack for Ipopt. Loading MKL libs with |
If we build Ipopt with Mumps and Spral. Will we be able to switch between Mumps and Spral solvers? For PardisoMKL, I don't think that we can easily solve the problem because we already compile Ipopt with LBT (libblastrampoline) and we don't want to use the symbols of |
Yes, if you build Ipopt with Spral, the default for the linear solver in Ipopt will change to I would just leave this issue open for now as a reminder to add an option to also load MKL's Pardiso at runtime some day. Btw, the line 45 (https://github.com/JuliaPackaging/Yggdrasil/blob/master/C/Coin-OR/Ipopt/build_tarballs.jl#L45) seems to be missing a |
Thanks for the typo with Off-topic: For information, we just released JuliaHSL. 🎉 |
You would have to overwrite or augment the compiler flags that configure is determining. You should be fine by adding There are also |
@svigerske |
What you mean you "can't switch to the SPRAL linear solver"? Setting The default is currently still that MUMPS is prefered over SPRAL. I don't really know how good or stable SPRAL it. They didn't have a release for a long time that would have worked with Ipopt, until you pinged them. That they then just tagged immediately whatever there was and don't provide release notes doesn't really build up confidence on their release+test cycle. Some issue I reported is also still unanswered. If you want to change the default in your link, then you can add a |
I have the following error: # Use the linear solver SPRAL
julia> set_attribute(model, "linear_solver", "spral")
julia> optimize!(model)
Setting: "spral" is not a valid setting for Option: linear_solver. Check the option documentation.
### linear_solver (String) ###
Category: Linear Solver
Description: Linear solver used for step computations.
Valid Settings:
ma27 (load the Harwell routine MA27 from library at runtime)
ma57 (load the Harwell routine MA57 from library at runtime)
ma77 (load the Harwell routine HSL_MA77 from library at runtime)
ma86 (load the Harwell routine MA86 from library at runtime)
ma97 (load the Harwell routine MA97 from library at runtime)
pardiso (load the Pardiso package from pardiso-project.org from user-provided library at runtime)
mumps (use the Mumps package)
custom (use custom linear solver (expert use))
Default: "mumps"
ERROR: IPOPT: Couldn't set option 'linear_solver' to value 'spral'. |
It seems that Ipopt believes that Spral hasn't been linked in. Check the configure output, then check that You could add something like
to the build script to show the possible values for the linear_solver option as accepted by the Ipopt (AMPL-)executable. |
Thanks for the help Stefan, an old shared library |
@svigerske I worked on a shim library |
Yes, currently it is assumed that the MKL-Pardiso comes with Lapack, so configure checks for symbol |
Is it possible to add an
pardisomkllib
likehsllib
orpardisolib
?It's also not possible to switch to
pardisomkl
solver dynamically.It should be great to also have a similar option for the Spral solver.
The text was updated successfully, but these errors were encountered: