I've been going around in circles trying to get BLAS-switching
working on a current r-devel, I'm sure I'm doing something dumb. Any
ideas about what I might be doing wrong, or suggestions for further
diagnosis, would be welcome!
tl;dr I am compiling R-devel with (to the best of my knowledge)
options set to allow BLAS-switching, but getting "undefined symbol"
errors.
----
Latest R-devel (via SVN), PopOS!/Ubuntu 20.10
I have read Dirk E's post: https://github.com/eddelbuettel/mkl4deb
I have attempted to read the relevant section of R Installation &
Administration several times:
https://cran.r-project.org/doc/manuals/r-release/R-admin.html#BLAS
https://wiki.debian.org/DebianScience/LinearAlgebraLibraries
I have installed MKL and OpenBLAS on my system via 'apt install'
(libopenblas-dev, libopenblas-base, and TWO versions of intel-mkl-64bit)
When I build R without BLAS everything is OK;
rm -Rf r-build; mkdir r-build; cd r-build; ../r-devel/configure
--without-blas --enable-R-shlib --enable-BLAS-shlib; make -j 6
Matrix products: default
BLAS: /usr/local/lib/R/lib/libRblas.so
LAPACK: /usr/local/lib/R/lib/libRlapack.so
When I look at my BLAS alternatives I don't see anything obviously
wrong:
sudo update-alternatives --config libblas.so.3-x86_64-linux-gnu
There are 3 choices for the alternative libblas.so.3-x86_64-linux-gnu
(providing /usr/lib/x86_64-linux-gnu/libblas.so.3).
Selection Path
Priority Status
------------------------------------------------------------
* 0 /opt/intel/mkl/lib/intel64/libmkl_rt.so
150 auto mode
1 /opt/intel/mkl/lib/intel64/libmkl_rt.so
150 manual mode
2 /usr/lib/x86_64-linux-gnu/blas/libblas.so.3
10 manual mode
3 /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3
100 manual mode
When I rebuild R with --with-blas:
rm -Rf r-build; mkdir r-build; cd r-build; ../r-devel/configure
--with-blas --enable-R-shlib --enable-BLAS-shlib; make -j 6
I end up with this:
gcc -I../../../r-devel/src/extra -I/usr/include/tirpc -I.
-I../../src/include -I../../../r-devel/src/include -I/usr/local/include
-I../../../r-devel/src/nmath -DHAVE_CONFIG_H -fopenmp -fpic -g -O2
-c ../../../r-devel/src/main/Rmain.c -o Rmain.o
gcc -Wl,--export-dynamic -fopenmp -L"../../lib" -L/usr/local/lib -o
R.bin Rmain.o -lR -lRblas
/usr/bin/ld: ../../lib/libR.so: undefined reference to `zgemm_'
/usr/bin/ld: ../../lib/libR.so: undefined reference to `daxpy_'
/usr/bin/ld: ../../lib/libR.so: undefined reference to `dgemv_'
/usr/bin/ld: ../../lib/libR.so: undefined reference to `dscal_'
If
======================intel-mkl-64bit-2018.2-046/all,now 2018.2-046 amd64
[installed]
intel-mkl-64bit-2020.4-912/all,now 2020.4-912 amd64 [installed]
<... lots more intel-mkl stuff>
libblas-dev/groovy,now 3.9.0-3ubuntu1 amd64 [installed,automatic]
libblas3/groovy,now 3.9.0-3ubuntu1 amd64 [installed,automatic]
libgraphblas3/groovy,now 1:5.8.1+dfsg-2 amd64 [installed,automatic]
libgslcblas0/groovy,now 2.6+dfsg-2 amd64 [installed,automatic]
libopenblas-base/groovy,now 0.3.10+ds-3ubuntu1 amd64 [installed]
libopenblas-dev/groovy,now 0.3.10+ds-3ubuntu1 amd64 [installed]
libopenblas-pthread-dev/groovy,now 0.3.10+ds-3ubuntu1 amd64
[installed,automatic]
libopenblas0-pthread/groovy,now 0.3.10+ds-3ubuntu1 amd64
[installed,automatic]
libopenblas0/groovy,now 0.3.10+ds-3ubuntu1 amd64 [installed]