使用 OpenBLAS 构建 R

2024-03-26

我正在尝试构建 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

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

在“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

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

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

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

谢谢。

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


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

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

1.安装Rtools43

(i) Download https://cran.r-project.org/bin/windows/Rtools/rtools43/files/rtools43-5493-5475.exe; (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 包here https://cran.r-project.org/bin/windows/Rtools/rtools43/files/,一个名为的文件,例如tcltk-5493-5412.zip:

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

     svn checkout https://svn.r-project.org/R/trunk
     cd trunk
     unzip ../$TCLBUNDLE
    

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

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

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

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

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

-          -L../../../$(IMPDIR) -lR  -L"$(ATLAS_PATH)" -lf77blas -latlas
+          -L../../../$(IMPDIR) -lR -fopenmp -lopenblas

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"
    
  3. 测试工具是否可用:which make gcc pdflatex tar

  4. 构建 R 安装程序:

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

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

以下R代码 https://stackoverflow.com/a/42854705/9454926与从 CRAN 下载的 Windows 版标准 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 OpenBLAS 构建 R 的相关文章

  • r testthat 和 covr 在非包库中使用

    我希望能够使用testthat and covr在一个项目中not一个 r 包 事实上不使用任何第三方服务 只是普通的旧 r 源文件的集合 我正在努力找出这是否可行 如果可以 则已设置有关如何设置的说明 我发现假设你正在编写一个 r 包 我
  • 如何不在输出中打印 makefile 中的注释

    我有一个像这样的 makefile install somecommand some explanation for next command lastcommand 发生的事情是评论 some explanation for next c
  • 如何在 R 中绘制预测的子集?

    我有一个简单的 R 脚本来根据文件创建预测 自 2014 年以来就有数据记录 但我在尝试实现以下两个目标时遇到了困难 仅绘制预测信息的子集 从 11 2017 开始 以特定格式包含月份和年份 即 6 月 17 日 这是链接到dataset
  • Mac OS X 10.13 上的 RStudio 在尝试使用 fix() 时出现 X11 不可用错误

    我已经使用自制程序在我的计算机上安装了 XQuartz 然后重新启动了我的计算机 当我尝试在 RStudio 中使用 fix 命令时 出现以下错误 gt College read csv College csv header T na st
  • R testthat 单元测试数据和辅助函数约定

    我正在编写一个 R 包 并使用 testthat 进行单元测试 我的许多单元测试都是为了测试适用于我的包特定对象的功能 对于这些测试 我创建了一个辅助函数来设置模拟对象 我还有一些其他辅助函数来减少单元测试中的代码量 目前这些辅助函数在我的
  • 通过 PowerShell 对 TFS 构建进行排队

    TFS2012 具有一个 2010 构建控制器和一个 2010 构建代理 还有一个 2012 构建控制器和多个 2012 构建代理 我们的软件有多个版本的多个版本 构建根据约定命名 例如Foo version 1 0 和 Foo versi
  • 用于不规则时间序列的滚动窗口函数,可以处理重复项

    我有以下数据框 grp nr yr 1 A 1 0 2009 2 A 2 0 2009 3 A 1 5 2009 4 A 1 0 2010 5 B 3 0 2009 6 B 2 0 2010 7 B NA 2011 8 C 3 0 2014
  • 如何在Gradle中支持多种语言(Java和Scala)的多个项目?

    我正在尝试将过时的 Ant 构建转换为 Gradle 该项目包含约50个Java子项目和10个Scala子项目 Java 项目仅包含 Java Scala 项目仅包含 Scala 每个项目都是由 Java 和 Scala 构建的 这大大减慢
  • 双向条形图,两侧带有正标签ggplot2

    我尝试在 ggplot 中创建一个双向条形图 其中轴上方和下方的轴标签和数据标签均为正值 例如 如果您的数据是 myData lt data frame category c yes yes no no month c Jan Feb Ja
  • 用于带有嵌套子图的图的 r 包? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我正在寻找一个用于图形 网络的 r 包 它可以处理嵌套子图 Graphviz 做到了这一点 但只提供可
  • R data.table fread 使用不带标题的命名 colClasses(例如没有 col.names?)

    更新 2016 年 6 月 col names 已添加到 data table 1 9 6 所以问题已经结束 每个人都非常高兴 我想我现在可以将所有 read csv 调用转换为 fread 调用 而不必担心破坏 原问题 使用数据表1 9
  • 使用 R:如何创建带有日期的时间序列对象?

    我有一年中每小时采集的一系列值 是否可以创建一个保留小时和年份值的时间序列对象 我的代码使用股票价格第一列中的值 但不使用日期 stockprices ts lt ts stockprices 1 start 1 freq 168 您没有提
  • R ifelse 错误地用整数替换文本

    我正在使用 Udacity 课程中的一些数据 链接 Reddit 调查回复 https s3 amazonaws com udacity hosted downloads ud651 reddit csv 我试图通过使用单个单词替代替换任何
  • mclapply 调用应该嵌套吗?

    正在筑巢parallel mclapply是个好主意吗 require parallel ans lt mclapply 1 3 function x mclapply 1 3 function y y x unlist ans Outpu
  • R dplyr过滤多列上的字符串条件

    我有一个 df 例如 df lt read table text v1 v2 v3 v4 v5 1 A B X C 2 A B C X 3 A C C C 4 B D V A 5 B Z Z D header T 如果变量 v2 到 v5
  • 使用 RMySQL 会干扰 RPostgreSQL

    我有一个 R 脚本 我想从 MySQL 数据库中提取一些数据 然后从 PostgreSQL 数据库中提取一些数据 但是 从 RMySQL 加载 MySQL 驱动程序会阻止我从以下位置加载 PostgreSQL 驱动程序 PostgreSQL
  • R:为什么 kable 不在 for 循环内打印?

    我正在使用 rmarkdown 和 Latex 编写报告 我需要使用打印一组表格knitr kable 但在 for 循环内时不会打印 这是我的代码 title project title author Mr Author date 201
  • 无重叠的抖动点

    My data a lt sample 1 5 100 replace TRUE b lt sample 1 5 100 replace TRUE c lt sample 1 10 100 replace TRUE d lt sample
  • 使用 purrr::map() 更改和分配新变量名称

    我刚刚开始掌握编写函数并使用 lapply purrr map 使我的代码更加简洁 但显然还没有完全理解它 在我当前的示例中 我想重命名 lm robust 对象的系数名称 然后更改 lm robust 对象以合并新名称 我目前这样做 li
  • 如何融合颜色和形状?

    当我有一个超过 6 个值的变量时 我的麻烦就开始了 因为这是 ggplot2 中 scale shape 函数的当前最大值 由于这个问题 我尝试使用另一个变量来解决这个问题 我只是将原始变量的长度包裹起来 这是我的示例代码 dataf lt

随机推荐

  • MySQL:按时间排序(MM:SS)?

    我目前正在存储有关视频的各种元数据 其中数据之一是视频的长度 因此 如果视频长度为 10 分 35 秒 则会在数据库中保存为 10 35 但我想做的是按长度检索视频列表 最长的在前 最短的在后 我遇到的问题是 如果视频是 2 56 它会成为
  • 存储过程在手动运行时工作,而不是从 sql server 代理运行

    我有一个存储过程 可以在 SSMS 中使用执行命令正常运行 但是将相同的命令放入作业中会出现以下错误 第 9 行 第 9 个字符 输入意外结束 该代码采用 UTF 8 编码获取非常长的 XML 字符串 并将其放入单个nvarchar max
  • Asp.Net MVC - 进修课程

    当 MVC 第一次出现时 我每天都在阅读它并尽我所能地学习它 大约在 MVC 2 RC2 出来的时候 我因为各种原因停止了学习 新房子 新工作 懒惰 我现在想重新回到MVC 我有一个写了一半的博客想要完成 但是当涉及到任何MVC 时我都感到
  • 如何找到我的 Google 日历活动的活动 ID?

    我创建了一些 Google 日历事件 现在我想以编程方式对它们进行一些操作 问题是我没有他们的身份证 当我进入日历并单击事件时 我在任何地方都看不到 ID 有谁知道我在哪里可以找到它 还有另一种方法可以查看事件 ID 转到事件调试 URL
  • 改造2:@Query“encoded=false”不起作用

    0 我正在使用 Retrofit 2 来处理 1 我有一些界面 public interface ApiService GET statdirectory exchange Call
  • 不同翻译单元中不可重载的非内联函数定义

    假设我有 2 个 TU 其中有 2 个具有外部链接的非内联函数定义 其区别仅在于返回类型 我的程序违反了哪一段 基本 def odr 4 https timsong cpp github io cppwp n4659 basic def o
  • 如何从 CloudBees 部署到私有 Maven 存储库?

    我想在我的 CI 环境中使用 CloudBees 但我也想将我的 Maven 工件部署到我现有的私有 Nexus 存储库 在我当前的本地 Hudson 设置中 我使用 m2 settings xml 文件中的用户名 密码设置 如下所示
  • C++ 中带条件的循环擦除

    有没有更好的写法 for auto i container begin i container end if condition i i container erase i continue i 这段代码满足了我的要求 但感觉风格很糟糕 我
  • 如何用 CSS 强制 TD 达到一定高度?

    虽然some https stackoverflow com questions 2124630 forcing a certain width height with overflow in a td 问题 https stackover
  • 使用 datetimeoffset 时的 Linq to 实体框架错误

    我收到一个奇怪的错误 但无法修复它 有人可以帮忙吗 下面的代码失败 因为它不喜欢o ordered DateTime ToShortDateString 当该部分被注释掉时它会起作用 o ordered is a datetimeoffse
  • 如何修复 ibtool 失败并出现 Main.storyboard 错误:shouldBeArchived 无法识别

    我以前从未遇到过这个问题 该应用程序曾经运行完美 但现在总是显示此错误 我尝试过清理和重启 我试过重置IOS模拟器 我尝试过删除派生数据 这就是 xcode build 所说的 CompileStoryboard AITEST Base l
  • WPF 调度程序调用返回值始终为 null

    我调用了一个返回 a 的方法UIElement我称之为使用Dispatcher 下面是代码 然而 返回值Dispatcherinvoke 总是 NULL 有什么想法吗 void backgroundWorker DoWork object
  • Oracle Apex 22.21 - REST 数据源 - 嵌套 JSON 数组 - 通过触发器同步两个表 - PLSQL 错误问题

    这个问题是后续问题另一个问题 https stackoverflow com questions 75192510 oracle apex rest data source nested json array sync two tables
  • 生成指定数量的随机但独特的颜色

    我想做的是给 listView 中的每个项目赋予唯一的颜色 所以我的列表视图中的项目数为 计数 我的方法是调用下面的方法并给出我的项目的方法编号 然后它应该有一个保存第一种颜色的数组 然后当要生成下一个颜色时 应该将其与数组中之前的颜色进行
  • 已知哪些 JavaScript 库使用全局美元符号:window.$?

    哪些 JavaScript 库接管了 全局范围内的变量 如果库在全局命名空间上提供了不同的名称 或者提供了放弃的方法window 您能否链接到其文档中的正确函数 可能是其使用的一些代码示例 拥有这样的列表对于快速调试彼此之间的潜在冲突很有用
  • 如何使用静态方法作为 preg_replace_callback() 中的回调参数?

    我使用 preg replace callback 查找文本链接并将其替换为实时链接 http www example com to a href http www example com www example com a 我为该函数提供
  • 是否可以在 JFileChooser 窗口中选择文件名?

    我可以使用以下命令在 JFileChooser 窗口中设置默认文件名 fileChooser setSelectedFile 我想知道是否也可以选择它 这样如果您想将文件另存为其他文件 您可以立即开始重写它 感谢您对此的任何帮助 packa
  • Java中如何检查目录是否为空

    我想检查 Java 中的目录是否为空 但该目录中可能有很多文件 因此如果可能的话 我想在不查询其文件列表的情况下执行此操作 使用 JDK7 您可以使用 Files newDirectoryStream 打开目录 然后使用迭代器的 hasNe
  • 如何使用 TabActivity 或 FragmentActivity 在 android 中创建选项卡

    我想在 android 中创建选项卡 但我真的不知道如何创建和刚刚下载了一些视频 但这确实没有帮助 我使用 TabActivity 不幸的是它已被弃用 所以我需要你帮助我 谢谢你的建议 您必须设置 FragmentActivity 主类才能
  • 使用 OpenBLAS 构建 R

    我正在尝试构建 R devel R patched 我读过一些链接 与执行此操作的步骤相关 1 https www r bloggers com 2022 01 building r 4 2 for windows with openbla