Skip to content

METIS discussion #2659

@odow

Description

@odow

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 libmetis to libmetishighs
  • 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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions