[R-pkg-devel] Lapack: undefined symbol: zgbsv_

Ralf Stubner ralf.stubner at r-institute.com
Tue Feb 13 10:07:10 CET 2018


On 13.02.2018 05:49, Baptiste Auguie wrote:
> On 13 February 2018 at 01:05, Dirk Eddelbuettel <edd at debian.org
> <mailto:edd at debian.org>> wrote:
>     Maybe we are setting a more global "no advanced lapack" for Windows that
>     assures success when we assume that the other system will always
>     have it.
> 
> 
> it sounds plausible, but it would be nice to know for sure.

It is the case, c.f.
https://github.com/RcppCore/RcppArmadillo/blob/master/inst/include/RcppArmadilloConfig.h#L96-L106

> In
> particular, it doesn't explain why the external Lapack on linux appears
> to be missing these symbols (they're not very recent, as far as I can
> tell). I don't really know how to figure this out, but it seems to be key.

My understanding:

* On Windows internal LAPACK is used but it is not affected due to the
defines quoted above.
* At least Debian & Co but probably also other Linux distributions
compile R with external LAPACK and are not affected.
* CRAN (and probably r-hub) use R compiled with internal LAPACK and is
therefore affected.
* I do not understand why Mac OS is not affected. The FAQ [1] implies
that by default the internal BLAS/LAPACK is used. But then I do not see
the mentioned alternative libRblas.vecLib.dylib on a test system.

[1]
https://cran.r-project.org/bin/macosx/RMacOSX-FAQ.html#Which-BLAS-is-used-and-how-can-it-be-changed_003f


>     Or, be brutal, and set '#define ARMA_CRIPPLED_LAPACK 1' everywhere.  See
>     lines 67 to 95 of RcppArmadillo's configure.ac <http://configure.ac>:
>     https://github.com/RcppCore/RcppArmadillo/blob/master/configure.ac#L67-L95
> 
> while this might solve the CRAN problem, it doesn't feel right to
> enforce the use of suboptimal routines throughout and on all platforms,
> including those that do in fact provide a full-fledged external Lapack. 

You could use this as a first step to get the package back into CRAN.
Later on you can try to only set the flag when an internal LAPACK is
detected, similar to the way RcppArmadillo does it. If my understanding
above is correct, the number of users with ARMA_CRIPPLED_LAPACK in your
package but not in RcppArmadillo will be quite small.

Greetings
Ralf

-- 
Ralf Stubner
Senior Software Engineer / Trainer

R Institute GmbH
Dortustraße 48
14467 Potsdam

T: +49 331 23 70 81 66
F: +49 331 23 70 81 67
M: +49 162 20 91 196

Mail: ralf.stubner at r-institute.com

Sitz: Potsdam
Register: AG Potsdam HRB 27966 P
Ust.-IdNr.: DE300072622
Geschäftsführer: Prof. Dr. Dr. Karl-Kuno Kunze



More information about the R-package-devel mailing list