SciML / LinearSolve.jl

LinearSolve.jl: High-Performance Unified Interface for Linear Solvers in Julia. Easily switch between factorization and Krylov methods, add preconditioners, and all in one interface.
https://docs.sciml.ai/LinearSolve/stable/
Other
245 stars 52 forks source link

Enable "WIP: Wrap BLIS" with reference LAPACK #498

Open jd-foster opened 5 months ago

jd-foster commented 5 months ago

Based on #431, this demonstrates how to get the BLIS extension working using libblastrampoline combined with LAPACK_jll (based on Reference LAPACK 3.11 https://github.com/Reference-LAPACK/lapack/releases/tag/v3.11)

Note that suffix_hint="64_", in BLAS.lbt_forward enables ILP versions.

jd-foster commented 5 months ago

The MWE as it stands needs to include LAPACK_jll now:

using LinearSolve, blis_jll, LAPACK_jll

A = rand(4, 4)
b = rand(4)
prob = LinearProblem(A, b)
sol = solve(prob,LinearSolve.BLISLUFactorization())
sol.u
ChrisRackauckas commented 5 months ago

If you use LBT though then you're changing global settings.

jd-foster commented 5 months ago

I see now, you're trying to avoid LBT by going directly like you do with MKL? https://github.com/SciML/LinearSolve.jl/blob/f5282e549d62eccd67df5f7f72d272366983d034/src/mkl.jl#L7

ChrisRackauckas commented 5 months ago

Yes, we'd prefer not to trigger global changes and instead be as local as possible.

jd-foster commented 5 months ago

We'll see if we can get https://github.com/JuliaPackaging/Yggdrasil/issues/7660 done then.