New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Add support for Flexiblas #17362
Comments
That's a pretty good summary, I wouldn't have done better. The introspection/debugging part is a good point, because linking against Pinging Martin @grisuthedragon, FlexiBLAS upstream maintainer, too. |
Indeed the fact that it wouldn't be possible to update I hope that the FlexiBLAS maintainers would consider changing the licensing terms. Otherwise we will have to come up with an alternative solution of our own... but that would be a waste of effort. |
If not, then a third party helper package? |
@ogrisel If one of these two solution would help, we can discuss about a change in the FlexiBLAS licensing. Changing the license to one from the BSD family will not be done. That's due to a personal opinion about OSS and its integration in commercial products. |
Thank you @grisuthedragon, that is very helpful. I think both solutions work. I'd prefer/recommend moving to LGPL though if that's possible, because:
That's perfectly fine and understandable. We don't need BSD/MIT, LGPL is nice too. We also ship other LGPL (and the GCC runtime with its linking exception) as part of our binaries. |
Hi, just to let you know that the support of FlexiBLAS in |
That looks great, thanks for working on this @jeremiedbb! |
So I release FlexiBLAS 3.4.0 which is now licensed under LGPL. |
Awesome, thank you @grisuthedragon! |
We now have a guide that includes use of FlexiBLAS with SciPy (= actually a nice way to work on debugging linalg issues): http://scipy.github.io/devdocs/dev/contributor/debugging_linalg_issues.html#debugging-linalg-issues The Thanks all! |
Flexiblas is an interesting project, it wraps many BLAS and LAPACK libraries and appears to do so in a uniform way so that users can build against it and things "just work". It contains g77/gfortran ABI wrappers that are very similar to our own wrappers, so that should work (not tested yet). An important benefit of Flexiblas is that that then gives the ability for changing BLAS/LAPACK libraries at runtime - very useful when testing or benchmarking.
Fedora is using Flexiblas as its default library / switching mechanism, and is happy with it. This blog post illustrates the benefits: https://www.r-bloggers.com/2020/10/switch-blas-lapack-without-leaving-your-r-session/. This Fedora discussion on using Flexiblas may be useful too: https://fedoraproject.org/wiki/Changes/FlexiBLAS_as_BLAS/LAPACK_manager.
I'll note that there are multiple other ways of enabling runtime switching of BLAS/LAPACK libraries, e.g. Debian uses
update-alternatives
, Gentoo usesvirtual/blas
andvirtual/lapack
(see https://wiki.gentoo.org/wiki/Blas-lapack-switch), and conda-forge usesconda install "blas=*=openblas"
(see https://conda-forge.org/docs/maintainer/knowledge_base.html#switching-blas-implementation). Flexiblas seems to be the most complete and well thought out one though. Everything else is more manual, e.g. conda-forge builds with ouruse-g77-abi
command-line flag, which switches in our own ABI wrappers.Things to consider when adding support:
scipy.show_config()
orthreadpoolctl
).threadpoolctl
may need to know about Flexiblas too, because we are already usingthreadpoolctl
for threading control in CI and in our test suite.64_
suffix; MKL supports64_
as well).Some more discussion on Flexiblas in gh-17244 and in https://bugzilla.redhat.com/show_bug.cgi?id=1574517.
Thanks @Enchufa2 for suggesting Flexiblas. Maybe you have more thoughts on the above?
The text was updated successfully, but these errors were encountered: