Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 5 additions & 3 deletions src/BLIS.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,19 +5,21 @@ using Libdl
using blis_jll
using LinearAlgebra

global libblis_path = ""
global libblis = C_NULL

__init__() = begin
if length(get(ENV, "BLISDIR", "")) > 0
# BLIS installation overriden by environmental variables.
@info "Using custom defined BLIS installation instead of blis_jll."
global libblis_path = joinpath(get(ENV, "BLISDIR", ""), "lib/libblis")
global libblis = dlopen(joinpath(get(ENV, "BLISDIR", ""), "lib/libblis"))
else
blis_path = blis_jll.blis_path
global libblis_path = blis_jll.blis_path
# Use BinaryBuilder provided BLIS library.
@info "blis_jll yields BLIS installation: $blis_path."
global libblis = dlopen(blis_path)
@info "blis_jll yields BLIS installation: $libblis_path."
end
global libblis = dlopen(libblis_path)
end

# Data types.
Expand Down
26 changes: 26 additions & 0 deletions src/switch_blas.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
# LBT-forward BLAS calls
#

global fallback_lib = []

lbt_enable_blis(; clear=false) = begin
if length(fallback_lib) == 0
libs = LinearAlgebra.BLAS.lbt_get_config().loaded_libs
if length(libs) > 0
# Save currently loaded library path for resetting.
fallback_lib = [fallback_lib..., ]
end

LinearAlgebra.BLAS.lbt_forward(libblis_path; clear=clear)
else
@warn "BLIS.lbt_enable_blis: BLIS already loaded. Not doing anything."
end
end

lbt_disable_blis() = begin
if length(fallback_lib) > 0
LinearAlgebra.BLAS.lbt_forward(fallback_lib[1]; clear=true)
else
@warn "BLIS.lbt_enable_blis: Fallback library not found. Not doing anything."
end
end
Loading