Conversation
…linking * highspy (highs_bindings) checks if hipo installed and loads library * linux build needed changes for $ORIGIN so that library is found, also requires CMAKE_DL_LIBS for dynamic linking support * removed hipo loading hack from highs.py * moved hipo code from IpxWrapper to HipoCApi * added VCPKG hacks for testing (linux & windows)
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## latest #2994 +/- ##
==========================================
- Coverage 81.31% 72.82% -8.49%
==========================================
Files 359 417 +58
Lines 88852 101979 +13127
Branches 0 16431 +16431
==========================================
+ Hits 72250 74271 +2021
- Misses 16602 27432 +10830
- Partials 0 276 +276 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
|
||
| Extension package for [highspy](https://pypi.org/project/highspy/) that enables access to external dependencies with licensing terms different from HiGHS, such as Apache 2.0. | ||
|
|
||
| The HiPO Interior Point Method (IPM) solver currently uses these external dependencies to provide enhanced performance for linear programming problems. Other algorithms may also rely on `highspy-extras` in the future. |
There was a problem hiding this comment.
"to provide enhanced performance for linear and quadratic programming problems."
|
On Mac, the header reports |
|
Thank you @filikat I will address your comments |
|
I benchmarked this branch on my set of 330 LPs and QPs and there's no performance difference. |
|
If I try to compile with |
|
Everything else looks fine to me. |
…lso fixed linker issue when `HIPO=OFF` and `BUILD_SHARED_EXTRAS_LIB=OFF`. Note: The `PRIVATE` declaration is "new-style" and conflicted with the other `target_link_libraries` "old-style" calls. An equally valid fix is to add `PRIVATE` to all the other calls. Co-authored-by: Copilot <copilot@github.com>
Fixed. Good catch, thanks! FYI: Was an issue with the new-style Also, |
|
BTW: ignore the "Co-authored-by: Copilot copilot@github.com" in my commit message. It wasn't a big change, but I wrote it all myself. It's trying to claim co-authorship, even when it just autocompletes a word or two 😆 Apparently, this is a recent "feature" of vscode. Thankfully, there's a |
… HighsOptions to remove redundancy. The new error message is also more generic, in case future algorithms need these external dependencies.
….e., HIGHS_SHARED_EXTRAS_LIBRARY was not being defined in HConfig.h * Cleaned up C++ usage of HIPO. Developers don't need to wrap everything in `#ifdef HIPO`, can just use centralized `HighsExternalDeps` and it will build correctly in every configuration. * Cleaned up cmake usage of HIPO. No longer necessary to worry about header or linker (propagated via libhighs) * Fixed issue with "unknown" BLAS Library string on mac * Updated highs_extras README to include quadratic
|
BTW: @galabovaa, I noticed and fixed a potential big issue for C++ users of highs. We weren't including While I fixing this, I also made it much easier to consume/develop. The appropriate header/linker details are now propagated via libhighs using PUBLIC cmake declarations. I also made it unnecessary to use #ifdef HIPO everywhere, we can simply rely on Most of these changes are here: a86d16a I've also updated the bazel and meson builds - but as you already know, they assume HIPO=OFF. Is this something we need to support in this PR? |
@filikat: I changed this to return the BLA_VENDOR (if exists). So, for Apple BLAS, it'll simply say "Apple". Is this suitable? |
Great, thank you for fixing these!
We can keep HiPO off in bazel and meson for now. |
Great thanks. |
@mathgeekcoder Please let me know if this looks OK to you too!