使用 OpenBLAS 构建 R

Dmi*_*riy 5 r build openblas amd-processor r-devel

我正在尝试构建 R-devel / R-patched。我读过一些链接,与执行此操作的步骤相关。

1) https://www.r-bloggers.com/2022/01/building-r-4-2-for-windows-with-openblas/
2) https://www.r-bloggers.com/2020/05/building-r-4-for-windows-with-openblas/
3) https://github.com/r-windows/r-base
Run Code Online (Sandbox Code Playgroud)

但不幸的是,没有任何成功。

在“1”中我没有“Makefile.win”,也没有带有“-lf77blas -latlas”的文件在“2”中手动创建的“full-build.sh”脚本不执行任何操作。在“3”中我有一个错误Use_ATLAS=YES

installing 'sysdata.rda'
make[3]: *** [../../../share/make/basepkg.mk:151: sysdata] Error 127
make[2]: *** [Makefile.win:22: all] Error 2
make[1]: *** [Makefile.win:32: R] Error 1
make: *** [Makefile:18: all] Error 2
Run Code Online (Sandbox Code Playgroud)

此错误与 basepkg.mk 中的这一行有关:

@$(ECHO) "tools:::sysdata2LazyLoadDB(\"$(srcdir)/R/sysdata.rda\",\"$(top_builddir)/library/$(pkg)/R\")" | \
  R_DEFAULT_PACKAGES=NULL LC_ALL=C $(R_EXE)
Run Code Online (Sandbox Code Playgroud)

那么,有人可以帮助我吗?这3种方式有什么问题吗?如何正确构建 R devel(如果可能的话使用安装文件)?也可以使用 AMD BLIS 库来编译它(我有 Ryzen 9 5950x)。

谢谢。

PS 我使用 Windows 11 和 winlibs PPS 中的 gcc-12.02 如果可能的话,请添加使用 AMD BLIS 构建 R 的方法...

小智 4

1) https://cran.r-project.org/bin/windows/base/howto-R-devel.html # the canonical guide for compiling R-devel on Windows using Rtools
2) https://www.r-bloggers.com/2022/01/building-r-4-2-for-windows-with-openblas/ # adapt parts of this guide to get openblas with R
Run Code Online (Sandbox Code Playgroud)

按照上述 2 个链接,以下是一些基本步骤:

1.安装Rtools43

(i)下载;(ii) 将其安装到默认位置(即,C:\rtools43

2.安装MikTeX和Inno Setup

需要 MikTeX(带有基本包和 inconsolata)来构建包插图和文档。构建 R 安装程序需要 Inno Setup。

3. 一般设置

  1. 运行 Msys2 shell ( c:/rtools43/msys2.exe)

  2. 建立一个文件夹来存储源文件:mkdir /c/R-devel

  3. 更新Msys2:pacman -Syuu它可能会先只更新核心内容,然后要求你关闭终端。您应该按照说明进行操作,然后重新启动 Msys2 shell 并pacman -Syuu再次重新运行以完全更新所有组件

  4. 安装 wget 和 subversion:pacman -Sy wget subversion

  5. 将工作目录更改为步骤 3.2 中创建的文件夹:cd /c/R-devel

  6. 从这里获取最新的 Tcl/Tk 包,文件名为tcltk-5493-5412.zip

     TCLBUNDLE=tcltk-5493-5412.zip
     wget https://cran.r-project.org/bin/windows/Rtools/rtools43/files/$TCLBUNDLE
    
    Run Code Online (Sandbox Code Playgroud)
  7. 获取最新的 R 版本 (R-devel),并解压 Tcl:

     svn checkout https://svn.r-project.org/R/trunk
     cd trunk
     unzip ../$TCLBUNDLE
    
    Run Code Online (Sandbox Code Playgroud)

4.添加MkRules.local一个/c/R-devel/trunk/src/gnuwin32/

您可以使用 Notepad++ 创建一个MkRules.local包含以下内容的新文件(编辑ISDIR = ...到步骤 2 中的相应目录):

USE_ATLAS = YES
EOPTS = -march=native -pipe
QPDF = /usr
ISDIR = C:/Program Files (x86)/Inno Setup 6
Run Code Online (Sandbox Code Playgroud)

5. 调整/c/R-devel/trunk/src/extra/blas/Makefile.win

您可以使用 Notepad++ 将行更改-L../../../$(IMPDIR) -lR -L"$(ATLAS_PATH)" -lf77blas -latlas-L../../../$(IMPDIR) -lR -fopenmp -lopenblas

-          -L../../../$(IMPDIR) -lR  -L"$(ATLAS_PATH)" -lf77blas -latlas
+          -L../../../$(IMPDIR) -lR -fopenmp -lopenblas
Run Code Online (Sandbox Code Playgroud)

6. 编译R

  1. 运行 Msys2 shell 并更改到适当的工作目录:cd /c/R-devel/trunk/src/gnuwin32/

  2. 设置环境变量如下(在下面的命令中更新MiKTeX安装目录):

     export PATH=/x86_64-w64-mingw32.static.posix/bin:$PATH
     export PATH=/c/Users/xxxxxxxx/AppData/Local/Programs/MiKTeX/miktex/bin/x64/:$PATH
     export TAR="/usr/bin/tar"
     export TAR_OPTIONS="--force-local"
    
    Run Code Online (Sandbox Code Playgroud)
  3. 测试工具是否可用:which make gcc pdflatex tar

  4. 构建 R 安装程序:

     make rsync-recommended
     make distribution
    
    Run Code Online (Sandbox Code Playgroud)
  5. 安装程序可在以下位置获取:/c/R-devel/trunk/src/gnuwin32/installer/R-devel-win.exe

7. 测试我们的 R 编译是否使用 OpenBLAS

与从 CRAN 下载的 Windows 版标准 R 相比,以下 R 代码的运行速度应该快得多:

m <- 10000
n <- 2000
A <- matrix (runif (m*n),m,n)
system.time (S <- svd (A,nu=0,nv=0))

user  system elapsed 
4.02    0.65    7.83
Run Code Online (Sandbox Code Playgroud)