On 3/18/21 3:53 AM, Ben Bolker wrote:> Thanks.? I know it's supposed to Just Work (and I definitely > appreciate all the work that's gone into making it Just Work 99% of > the time!). > > ? I tried --with-lapack, no joy. > ? Will try to decipher the rules file tomorrow ...This is documented in R Admin manual, section A.3, and there is also "configure --help". On my Ubuntu 20.04, using "--with-blas --with-lapack" when a BLAS/LAPACK implementation is installed via "apt" works for me: with libblas3, liblapack3 I get in R via sessionInfo() BLAS:?? /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0 LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0 then I install libopenblas0 and get, after re-starting R (not rebuilding): BLAS:?? /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/liblapack.so.3 Best Tomas> > ? cheers > ?? Ben > > > On 3/17/21 10:25 PM, Dirk Eddelbuettel wrote: >> >> Ben, >> >> This stuff has worked unchanged since the 1990s when we had a >> _really_ far >> sighted fellow in Debian come up with the 'switch the links' scheme >> which was >> (and is) subsequently deployed by many numerical applications within >> Debian, >> R and e.g. Octave included. >> >> And I used this ability to switch over a decade ago in a >> never-quite-finished >> paper which resulted in a package as well as a vignette as paper >> draft on >> CRAN: gcbd [1] It used the ability to switch between implementation >> to time >> and compare and benchmark the various BLAS and LAPACK libraries -- >> which was >> then motivated by a comparison with GPUs. (The actual code / package is >> stale-ish as some of the underlying packages have gone as eg the GPU >> one -- >> but the mechanics you are after still work the exact same way on >> Debian and >> derivarives including Ubuntu and PopOS.) >> >> (As a complete aside, the state of the art here is now one level up in >> libraries based on flame/blis (a riff on blas) which can do a similar >> logical >> switch _at runtime_ (rather than by flipping softlinks and restarting >> the >> app). Julia and some other languages uses that, I think Fedora may >> have it in >> its R build as well. Inaki may know more...) >> >> That said, from the top of my head, I think you error may just be >> with the >> second R compilation -- I always (i.e. for the Debian package) use both >> ?? --with-blas --with-lapack >> and not just --with-blas. And I do there is public: if you know where >> to look >> you can see the exact invocation of the Debian build of the R package >> (which >> Ubuntu and Pop and ... then shadow) [2] >> >> Hth, Dirk >> >> [1] https://cran.r-project.org/package=gcbd >> [2] https://sources.debian.org/src/r-base/4.0.4-1/debian/rules/ >> ???? (and I apologise for how messy this still is) >> > > ______________________________________________ > R-devel at r-project.org mailing list > https://stat.ethz.ch/mailman/listinfo/r-devel
On 3/18/21 9:15 AM, Tomas Kalibera wrote:> On 3/18/21 3:53 AM, Ben Bolker wrote: >> Thanks.? I know it's supposed to Just Work (and I definitely >> appreciate all the work that's gone into making it Just Work 99% of >> the time!). >> >> ? I tried --with-lapack, no joy. >> ? Will try to decipher the rules file tomorrow ... > > This is documented in R Admin manual, section A.3, and there is also > "configure --help". > > On my Ubuntu 20.04, using "--with-blas --with-lapack" when a > BLAS/LAPACK implementation is installed via "apt" works for me: > > with libblas3, liblapack3 I get in R via sessionInfo() > > BLAS:?? /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0 > LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0 > > then I install libopenblas0 and get, after re-starting R (not > rebuilding): > > BLAS:?? /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 > LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/liblapack.so.3and to install say MKL, this works for me: apt-get install intel-mkl-full and then: env MKL_INTERFACE_LAYER=GNU,LP64 MKL_THREADING_LAYER=GNU R gives me: BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/libmkl_rt.so This is following documentation in A.3.1.3 of R Admin manual. Best Tomas> > Best > Tomas > > >> >> ? cheers >> ?? Ben >> >> >> On 3/17/21 10:25 PM, Dirk Eddelbuettel wrote: >>> >>> Ben, >>> >>> This stuff has worked unchanged since the 1990s when we had a >>> _really_ far >>> sighted fellow in Debian come up with the 'switch the links' scheme >>> which was >>> (and is) subsequently deployed by many numerical applications within >>> Debian, >>> R and e.g. Octave included. >>> >>> And I used this ability to switch over a decade ago in a >>> never-quite-finished >>> paper which resulted in a package as well as a vignette as paper >>> draft on >>> CRAN: gcbd [1] It used the ability to switch between implementation >>> to time >>> and compare and benchmark the various BLAS and LAPACK libraries -- >>> which was >>> then motivated by a comparison with GPUs. (The actual code / package is >>> stale-ish as some of the underlying packages have gone as eg the GPU >>> one -- >>> but the mechanics you are after still work the exact same way on >>> Debian and >>> derivarives including Ubuntu and PopOS.) >>> >>> (As a complete aside, the state of the art here is now one level up in >>> libraries based on flame/blis (a riff on blas) which can do a >>> similar logical >>> switch _at runtime_ (rather than by flipping softlinks and >>> restarting the >>> app). Julia and some other languages uses that, I think Fedora may >>> have it in >>> its R build as well. Inaki may know more...) >>> >>> That said, from the top of my head, I think you error may just be >>> with the >>> second R compilation -- I always (i.e. for the Debian package) use both >>> ?? --with-blas --with-lapack >>> and not just --with-blas. And I do there is public: if you know >>> where to look >>> you can see the exact invocation of the Debian build of the R >>> package (which >>> Ubuntu and Pop and ... then shadow) [2] >>> >>> Hth, Dirk >>> >>> [1] https://cran.r-project.org/package=gcbd >>> [2] https://sources.debian.org/src/r-base/4.0.4-1/debian/rules/ >>> ???? (and I apologise for how messy this still is) >>> >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel > >
On 18 March 2021 at 09:15, Tomas Kalibera wrote: | This is documented in R Admin manual, section A.3, and there is also | "configure --help". | | On my Ubuntu 20.04, using "--with-blas --with-lapack" when a BLAS/LAPACK | implementation is installed via "apt" works for me: | | with libblas3, liblapack3 I get in R via sessionInfo() | | BLAS:?? /usr/lib/x86_64-linux-gnu/blas/libblas.so.3.9.0 | LAPACK: /usr/lib/x86_64-linux-gnu/lapack/liblapack.so.3.9.0 | | then I install libopenblas0 and get, after re-starting R (not rebuilding): | | BLAS:?? /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 | LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/liblapack.so.3 Yes, thank you, that is exactly what I use and recommend too. And ... On 18 March 2021 at 09:34, Tomas Kalibera wrote: | and to install say MKL, this works for me: | | apt-get install intel-mkl-full | | and then: | | env MKL_INTERFACE_LAYER=GNU,LP64 MKL_THREADING_LAYER=GNU R | | gives me: | | BLAS/LAPACK: /usr/lib/x86_64-linux-gnu/libmkl_rt.so | | This is following documentation in A.3.1.3 of R Admin manual. ... which is what the (surprisingly popular, 139 stars) simple two-year old script at GitHub has been automated. https://github.com/eddelbuettel/mkl4deb I may need to update the recommendation for the two MKL_* variables. Dirk -- https://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org