soegaard / sci

Racket libraries for scientific computing
18 stars 4 forks source link

Arch Linux: couldn't get "cblas_scopy" from "libblas.so.3" #2

Closed mxork closed 3 years ago

mxork commented 3 years ago

Arch, at least, uses libcblas for the CBLAS interface, rather than libblas. Patching the cblas. define-ffi-definer works. Consider exposing the path/library name as a parameter?

Thanks for the work you've done.

soegaard commented 3 years ago

So the patch was simply to change (define cblas-lib (ffi-lib "libblas" '("3" #f))) to (define cblas-lib (ffi-lib "libcblas" '("3" #f))) ?

I found this section in the docs:

On Linux you need copies of CBLAS and LAPACK. Since BLAS and LAPACK exists in multiple versions, so a little care is needed. First on most systems libblas is used for the Fortran version, and libcblas, so get the latter. However on Debian it turns out libblas is exporting the names used by CBLAS, so (either?) ought to be fine.

So my testers for Linux must have used Debian.

In any case introducing a parameter seems like a good idea, since there are many (confusingly many) versions of blas. Being able to pick a working default would be great too. I think, I need a way to tell Arch, Debian and Ubuntu apart.

What does cat /etc/os-release return on your system?

soegaard commented 3 years ago

Hi. I have a committed a change, so libcblas is picked on Arch.

Can I persuade you to test that it works?

/Jens Axel

mxork commented 3 years ago

:+1: Looks good, works good.

fwiw cat /etc/os-release:

NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://www.archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://bugs.archlinux.org/"
LOGO=archlinux