On 12/09/2019 11:07, Berend Hasselman wrote:
On 12 Sep 2019, at 10:36, Serguei Sokol<so...@insa-toulouse.fr>  wrote:

On 11/09/2019 21:38, Berend Hasselman wrote:
The Lapack library is loaded automatically by R itself when it needs it  for 
doing some calculation.
You can force it to do that with a (dummy) solve for example.
Put this at start of your script:

<code>
# dummy code to get LAPACK library loaded
X1 <- diag(2,2)
x1 <- rep(2,2)
# X1;x1
z <- solve(X1,x1)
</code>
another way is to use directly dyn.load():

lapack.path <- paste0(file.path(R.home(), ifelse(.Platform$OS.type == "windows",
          file.path("bin", .Platform$r_arch, "Rlapack"), file.path("lib", 
"libRlapack"))),
          .Platform$dynlib.ext)
dyn.load(lapack.path)
This will not work on macOS.
The extension for dynamic libraries is .dylib.
So you would need

lapack.path <- paste0(file.path(R.home(), ifelse(.Platform$OS.type == "windows",
          file.path("bin", .Platform$r_arch, "Rlapack"), file.path("lib", 
"libRlapack"))),
          ".dylib")

See the help for .Platform and dyn.load for the details for macOS.
Indeed. I was surprised to discover that .Platform$dynlib.ext is set to ".so" on macos, not to ".dylib". Thank you to point me to a special note about it in ?.Platform
Is there a R predefined variable set to ".dylib" on macos ?
Meanwhile, the code for lapack path detection will become a little bit more complicated:

dynlib.ext=ifelse(Sys.info()[["sysname"]] == "Darwin", ".dylib", .Platform$dynlib.ext) lapack.path <- paste0(file.path(R.home(), ifelse(.Platform$OS.type == "windows",          file.path("bin", .Platform$r_arch, "Rlapack"), file.path("lib", "libRlapack"))),
         dynlib.ext)
dyn.load(lapack.path)
is.loaded("dgemv") # must be TRUE

Serguei.

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to