Skip to content

Conversation

github-actions[bot]
Copy link

This pull request changes the compat entry for the KrylovKit package from 0.6 to 0.6, 0.8.
This keeps the compat entries for earlier versions.

Note: I have not tested your package with this new compat entry.
It is your responsibility to make sure that your package tests pass before you merge this pull request.

chriselrod pushed a commit that referenced this pull request Aug 8, 2025
* 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]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

0 participants