You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Complete BLIS integration with reference LAPACK (#666)
* WIP: Wrap BLIS
Test case:
```julia
using LinearSolve, blis_jll
A = rand(4, 4)
b = rand(4)
prob = LinearProblem(A, b)
sol = solve(prob,LinearSolve.BLISLUFactorization())
sol.u
```
throws:
```julia
julia> sol = solve(prob,LinearSolve.BLISLUFactorization())
ERROR: TypeError: in ccall: first argument not a pointer or valid constant expression, expected Ptr, got a value of type Tuple{Symbol, Ptr{Nothing}}
Stacktrace:
[1] getrf!(A::Matrix{Float64}; ipiv::Vector{Int64}, info::Base.RefValue{Int64}, check::Bool)
@ LinearSolveBLISExt ~/.julia/dev/LinearSolve/ext/LinearSolveBLISExt.jl:67
[2] getrf!
@ LinearSolveBLISExt ~/.julia/dev/LinearSolve/ext/LinearSolveBLISExt.jl:55 [inlined]
[3] #solve!#9
@ LinearSolveBLISExt ~/.julia/dev/LinearSolve/ext/LinearSolveBLISExt.jl:222 [inlined]
[4] solve!
@ LinearSolveBLISExt ~/.julia/dev/LinearSolve/ext/LinearSolveBLISExt.jl:216 [inlined]
[5] #solve!#6
@ LinearSolve ~/.julia/dev/LinearSolve/src/common.jl:209 [inlined]
[6] solve!
@ LinearSolve ~/.julia/dev/LinearSolve/src/common.jl:208 [inlined]
[7] #solve#5
@ LinearSolve ~/.julia/dev/LinearSolve/src/common.jl:205 [inlined]
[8] solve(::LinearProblem{…}, ::LinearSolve.BLISLUFactorization)
@ LinearSolve ~/.julia/dev/LinearSolve/src/common.jl:202
[9] top-level scope
@ REPL[8]:1
Some type information was truncated. Use `show(err)` to see complete types.
```
* fix path
* Fix BLIS integration to use BLIS for BLAS + reference LAPACK for LAPACK
- Updated LinearSolveBLISExt to use both blis_jll and LAPACK_jll
- Changed LAPACK function calls (getrf, getrs) to use liblapack instead of libblis
- Added LAPACK_jll to weak dependencies and extension configuration
- Created comprehensive test suite for BLIS + reference LAPACK functionality
- Tests cover Float32/64, ComplexF32/64, accuracy, caching, and comparison with default solvers
- All tests pass, confirming correct BLIS + reference LAPACK integration
This fixes the issue where BLIS was incorrectly used for both BLAS and LAPACK operations.
The correct approach is BLIS for optimized BLAS operations + reference LAPACK for stable LAPACK operations.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>
* Simplify BLIS integration to use existing test framework
- Removed dedicated BLIS test files and test group
- Added BLISLUFactorization to existing test loops in basictests.jl
- Added conditional loading of BLIS dependencies in tests
- BLIS tests now run as part of standard "Concrete Factorizations" test suite
- Tests are automatically skipped if BLIS dependencies are not available
This follows the established pattern used by other factorization methods like MKL,
making the integration cleaner and more maintainable.
🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <[email protected]>
---------
Co-authored-by: Christopher Rackauckas <[email protected]>
Co-authored-by: Claude <[email protected]>
0 commit comments