Implement support for HiPO solver. - #55
MathieuDutSik wants to merge 4 commits into
Conversation
|
Good to hear. If necessary, @galabovaa and @filikat can offer advice, and will also be interested to know. |
|
That sounds very interesting. I don't think I'm the most qualified to review this; @jajhall, if the HiGHS team thinks this was done properly, feel free to merge ! |
|
I don't know how you pick up HiGHS, but there are (for example) two sets of binaries: one (MIT) without HiPO, and one (Apache 2) with HiPO. Maybe this licensing issue is important to you. |
|
That is very nice indeed! I cannot offer advice on Rust-specific issues, but happy to help for any other HiPO-related issue. |
Thanks. |
|
This is a great addition. Just wanted to add that this is currently failing on W10 without a BLAS installation. These are the logs I am getting: It correctly detects that OpenBLAS isn't present and builds OpenBLAS. However, it fails on |
|
I checked out the PR code, and ran cargo test --all-features It fails with |
|
Is there a way to remove the dependency to ninja ? Or at the very worse, clearly document it and fail with a more helpful error message when it's not installed. |
|
It is also failing in my Fedora 44 Niri Install. Posting logs in case it helps. Compiles fine without the hipo flag. |
lovasoa
left a comment
There was a problem hiding this comment.
just marking the state until it compiles cleanly
| let try_discover = !cfg!(feature = "hipo"); | ||
| if cfg!(all(feature = "discover", feature = "hipo")) { | ||
| println!( | ||
| "cargo:warning=highs-sys: the 'hipo' feature requires building HiGHS with HiPO, so the 'discover' feature is ignored (a discovered system HiGHS may lack HiPO)." |
There was a problem hiding this comment.
if the user explicitly set "discover", we are not building it behind their back !
It would be nice to expose the HiPO solver of
HiGHSto the Rust endpoint.The problem is that HiPO depends on BLAS. And the access to it requires some care.
highs-syscan pass the CMAKE compilation option to thehighs. If absent, then either we use Apple BLAS if present, otherwise we download the OpenBLAS implementation in order to provide it.We cannot provide OpenBLAS all the way because Intel has its own specific implementation, AMD has its own, and so on. You want to be able to use the best BLAS library when compiling. On the other hand, you want to make the installation easy. So, OpenBLAS is provided as an option.