Giter VIP home page Giter VIP logo

Comments (13)

ViralBShah avatar ViralBShah commented on July 17, 2024

It is probably not worth the hassle - need to maintain the licenses when they expire, OS issues, etc. What kind of performance difference are we talking about?

from ipopt.jl.

mlubin avatar mlubin commented on July 17, 2024

Right now we're statically linking reference BLAS/LAPACK and using MUMPS for sparse linear algebra, so I wouldn't be surprised if there's a factor of 5 speedup possible without even considering multiple threads, but I should actually benchmark it.

from ipopt.jl.

ViralBShah avatar ViralBShah commented on July 17, 2024

Any idea why MUMPS is so much better?

from ipopt.jl.

mlubin avatar mlubin commented on July 17, 2024

Worse, you mean?

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

I was a bit surprised the last time I compared Mumps to Pardiso (this was using Basel Pardiso, before we got MKL Pardiso working in Ipopt https://projects.coin-or.org/Ipopt/ticket/216 - wouldn't expect MKL Pardiso to be much different).

parallel_results

These were all using MKL for Blas, allocating threads to the linear solver for the last 4 solvers, or to Blas for the first 4. I have some data somewhere comparing different Blas implementations but IIRC it wasn't much more than 20% difference. These conclusions are very problem-dependent though, it's all down to how large the dense sub-blocks get during the multifrontal sparse solve.

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

Anyone know what the license looks like on Matlab Compiler Runtime? They ship MA57 for sparse ldl, perhaps we could borrow just the one file. In the Matlab interface for Ipopt I wound up just using Matlab's own MA57 directly.

from ipopt.jl.

ViralBShah avatar ViralBShah commented on July 17, 2024

I meant how does MUMPS compare to UMFPACK for lpopt, or does lpopt not support calling UMFPACK?

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

UMFPACK doesn't work for Ipopt because Ipopt needs to check the inertia of the symmetric indefinite KKT matrix to ensure descent properties (it does a regularization and re-factorizes if it doesn't get the expected inertia). LU and Cholesky won't give you that, only Bunch-Kaufman LDL. Those 8 linear solvers above are pretty much an exhaustive list of usable candidates for what Ipopt needs, with the exception of TAUCS. Several years ago they looked at a TAUCS interface, but my understanding is the performance wasn't good enough to be worth keeping around.

If you're solving a convex problem you can do block-wise Cholesky so optimization codes for QP/SOCP/SDP have more choices of linear algebra libraries, but Ipopt is designed for general possibly non-convex problems.

from ipopt.jl.

ViralBShah avatar ViralBShah commented on July 17, 2024

Got it. Thanks for the explanation.

from ipopt.jl.

mlubin avatar mlubin commented on July 17, 2024

Interesting results. Using the matlab compiler runtime sounds sketchy. What about compiling and statically linking our own 32-bit integer version of OpenBlas?

from ipopt.jl.

tkelman avatar tkelman commented on July 17, 2024

We could also pay for a binary redistribution license, assuming Julia as an organization has some resources. The HSL folks write really good code and it's worth supporting them. Might be able to get a better deal than whatever they charged Mathworks.

Statically linked LP64 OpenBlas should work (just don't forget -fPIC). I suspect that might make the binaries significantly larger, depending how clever the linker is about only pulling in what it needs. If you want to try it soon, go for it. I doubt the performance difference will be all that big, but I could be wrong here.

I think getting Julia issue 4923 sorted would be preferable in the long run, having ILP64 OpenBlas with prefixes on all the functions and shared LP64 without prefixes built by Julia but only used by packages.

from ipopt.jl.

ViralBShah avatar ViralBShah commented on July 17, 2024

We certainly can check with the HSL folks. If the licensing is possible with a reasonable cost, I am sure we can find a way to make this work.

from ipopt.jl.

odow avatar odow commented on July 17, 2024

A potential route forward for this is to use IpoptMKL_jll, JuliaPackaging/Yggdrasil#1031, but it's still a WIP.

from ipopt.jl.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.