-
Notifications
You must be signed in to change notification settings - Fork 275
Closed
Description
This is an issue for @filikat and @galabovaa.
At JuMP-dev '25, @amontoison and I were discussing HiGHS, METIS, compilation, and distribution.
Our conclusion is that the easiest path forward is for HiGHS to vendor the source code of GKLib and METIS into ERGO-Code/HiGHS (or ERGO-Code/METIS).
This would let you choose the version of METIS to use, you could delete much of the code that is unused, and you could carry the various patches that you need.
To avoid conflicts with other libraries that use METIS, you should:
- rename the so name from
libmetistolibmetishighs - add a prefix (like
highs_) to all symbols so that there are no conflicts between the symbols of libmetishighs and libmetis.
The main reasons for vendoring METIS are:
- There are breaking changes in minor releases of METIS. 5.10 and 5.20 are not compatible due to changes in the C API
- We're likely NOT going to update METIS_jll in Julia from @amontoison's fork of 5.10 to a newer version
- Vendoring would make it muuuuuch easier to compile and distribute because everyone would be building from source with the same version. The only dependency would then by a BLAS, which are much more standardised and easier to distribute on different platforms.
The main reason against vendoring METIS is the license. The resulting binaries would be Apache instead of MIT, but building without HiPO would still let you have a MIT licensed binary.
galabovaa
Metadata
Metadata
Assignees
Labels
No labels