Add availability checks for MKL and OpenBLAS similar to AppleAccelerate #751
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Changes
This PR adds availability checks for MKL and OpenBLAS extensions following the same pattern used in AppleAccelerateLU:
Added availability check functions:
__mkl_isavailable()
- Checks if MKL library is available and has required symbols__openblas_isavailable()
- Checks if OpenBLAS library is available and has required symbolsAdded runtime checks in all solver functions:
getrf!
functions now check library availability before callinggetrs!
functions now check library availability before callingsolve!
functions check availability at the startUsed Libdl for dynamic library checking:
Motivation
As mentioned in the request, this ensures that MKL and OpenBLAS calls properly compile out when the binaries are not available, similar to how AppleAccelerateLU already works. This prevents runtime errors and provides better error messages to users.
Test Plan
🤖 Generated with Claude Code