Closed jd-foster closed 1 year ago
Actually the above is too much too complicated. It's a basic failure when calling gemm!
:
using LinearAlgebra
using BLIS
T = Float32
χlarge = 500
BLAS.gemm!('N', 'N', T(1.1), rand(T, χlarge, χlarge), rand(T, χlarge, χlarge), T(1.1), rand(T, χlarge, χlarge))
Seems to be an issue with blis_jll
and the library interaction since the same happens using just libblastrampoline:
using LinearAlgebra
using blis_jll
BLAS.lbt_forward(blis_jll.blis_path)
A = rand(1000,1000); B = rand(1000,1000);
A * B
crashes as well.
Ok, I've verified that this is the same issue as https://github.com/JuliaLang/julia/issues/48187 with the regression introduced in Julia 1.8.4
See also: https://discourse.julialang.org/t/issue-with-xgboost-jl-and-libsvm-jl-when-julia-1-8-4/92396/19
If this has anything to do with an incompatibility between GCC 12 and OpenMP (actually beyond my ability to figure out at this point), it may be worth compiling target
*"x86_64"*"w64"*
with -t single
, that is setting BLI_THREAD=single
(here: https://github.com/JuliaPackaging/Yggdrasil/blob/b7c92f501764d994e3c3accafeef14da37ea91f0/B/blis/build_tarballs.jl#L40)
cf. the blis configure
docs for the description.
An interesting and very recent commit is the new feature Optionally disable thread-local storage
This is now solved on the nightly thanks to @giordano merging https://github.com/JuliaLang/julia/pull/50135 and will likely be back-ported to julia 1.9 soon.
Here is a MWE crash reproducer (fails at time of writing on
Julia Version 1.10.0-DEV.1059
) extracted frominit_test_mmul.jl
: