在运行 R-devel 的 MacOS 上,我之前已将 Apple 的 Accelerate BLAS 和 LAPACK 库符号链接到我的 R 安装。我通过恢复符号链接返回到 R 的默认值,但是,在 RStudio 中(并且仅在 RStudio 中),sessionInfo()显示仍使用 Apple 的 BLAS 库。重新安装 R 和 RStudio 成功地将 LAPACK 返回到 R 的默认设置,但不是 BLAS(见下文)。
我尝试删除所有 R 安装(删除/Library/Frameworks/R.framework/)、RStudio 和~/.rstudio-desktop/(未找到任何.RProfile文件);然后重新启动;然后从 mac.r-project.org 重新安装最新的每晚版本;最后重新安装 RStudio Desktop (RStudio-1.2.5033),没有任何变化。
终端 R 会话:
> sessionInfo()
R Under development (unstable) (2020-01-10 r77651)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Catalina 10.15.2
Matrix products: default
BLAS: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRblas.0.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.0.0
> .Library
[1] "/Library/Frameworks/R.framework/Resources/library"
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/4.0/Resources/library"
Run Code Online (Sandbox Code Playgroud)
Rstudio R 会话:
> sessionInfo()
R Under development (unstable) (2020-01-10 r77651)
Platform: x86_64-apple-darwin15.6.0 (64-bit)
Running under: macOS Catalina 10.15.2
Matrix products: default
BLAS: /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
LAPACK: /Library/Frameworks/R.framework/Versions/4.0/Resources/lib/libRlapack.dylib
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
loaded via a namespace (and not attached):
[1] compiler_4.0.0 tools_4.0.0
> .Library
[1] "/Library/Frameworks/R.framework/Resources/library"
> .libPaths()
[1] "/Library/Frameworks/R.framework/Versions/4.0/Resources/library"
Run Code Online (Sandbox Code Playgroud)
除了 BLAS 之外,唯一的其他区别是RStudio 会话中sessionInfo()存在命名空间。tools
/Library/Frameworks/R.framework/Resources/library符号链接到/Library/Frameworks/R.framework/Versions/4.0/Resources/lib:
-rwxrwxr-x 1 root admin 3696484 Jan 10 22:36 libR.dylib
drwxrwxr-x 3 root admin 96 Jan 10 22:36 libR.dylib.dSYM
-rwxrwxr-x 1 root admin 189496 Jan 10 22:36 libRblas.0.dylib
lrwxr-xr-x 1 root admin 16 Jan 12 17:32 libRblas.dylib -> libRblas.0.dylib
drwxrwxr-x 3 root admin 96 Jan 10 22:36 libRblas.dylib.dSYM
-rwxrwxr-x 1 root admin 2182960 Jan 10 22:36 libRlapack.dylib
drwxrwxr-x 3 root admin 96 Jan 10 22:36 libRlapack.dylib.dSYM
-rwxrwxr-x 1 root admin 752876 Jan 10 22:36 libc++.1.dylib
-rwxrwxr-x 1 root admin 240944 Jan 10 22:36 libc++abi.1.dylib
-rwxrwxr-x 1 root admin 277696 Jan 10 22:36 libgcc_s.1.dylib
-rwxrwxr-x 1 root admin 1617368 Jan 10 22:36 libgfortran.3.dylib
-rwxrwxr-x 1 root admin 626712 Jan 10 22:36 libomp.dylib
-rwxrwxr-x 1 root admin 284208 Jan 10 22:36 libquadmath.0.dylib
-rwxrwxr-x 1 root admin 996788 Jan 10 22:36 libreadline.5.2.dylib
lrwxr-xr-x 1 root admin 21 Jan 12 17:32 libreadline.dylib -> libreadline.5.2.dylib
-rwxrwxr-x 1 root admin 66848 Jan 10 22:36 libunwind.1.dylib
Run Code Online (Sandbox Code Playgroud)
RStudio 如何启动仍在使用 Accelerate BLAS 库的 R 会话,以及如何停止这种情况?
小智 0
我今天遇到了同样的问题。就我而言,据我所知,sessionInfo()RStudio 错误地报告它正在使用 vecLib,而实际上并非如此。我使用多线程大型矩阵乘法的能力作为是否实际使用 vecLib 的指标。我可以根据 CPU 使用情况top和计算速度查看是否使用了多个线程。当我更改符号链接以指向 vecLib dylib 时,我得到了多线程行为。当符号链接指向原始 libRblas.0.dylib 时,我没有得到多线程行为。尽管行为明显不同,但 sessionInfo 的输出未更改。所以这看起来像是 sessionInfo 及其与 RStudio 环境交互中的一个错误???
cd /Library/Frameworks/R.framework/Resources/lib
ln -sf /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
# restart R in RStudio and test a large muatrix multiplication--multithreaded and fast
# sessionInfo() reports /System/Library/Frameworks/Accelerate.framework/Versions/A/Frameworks/vecLib.framework/Versions/A/libBLAS.dylib
ln -sf libRblas.0.dylib libRblas.dylib
#restart R in RStudio and test same matrix multiplication--slow and single threaded
# sessionInfo still reports /System/Library/Frameworks/Accelerate.framework/Frameworks/vecLib.framework/Versions/Current/libBLAS.dylib
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
777 次 |
| 最近记录: |