加速 RcppArmadillo:如何链接到 R 包中的 OpenBlas

2023-12-26

我正在开发一个使用 RcppArmadillo 的 R 包。我正在尝试利用 OpenBLAS 中更快的矩阵乘法。在里面文档 http://arma.sourceforge.net/faq.html#blas_lapack_replacements在 C++ 犰狳库中,它表示如果我们的机器上有 OpenBLAS,那么犰狳将使用 OpenBLAS 而不是 BLAS。但是,当我编译 R 包时,我得到如下信息:

g++ -m64 -std=c++11 -shared -L/usr/lib64/R/lib -Wl,-z,relro -specs=/usr/lib/rpm/redhat/redhat-hardened-ld -o PackageTest.so class1.o class2.o class3.o class4.o class5.o class6.o class7.o RcppExports.o class8.o class9.o class10.o -L/usr/lib64/R/lib -lRlapack -L/usr/lib64/R/lib -lRblas -lgfortran -lm -lquadmath -L/usr/lib64/R/lib -lR

所以它正在编译-lRlapack and -lRblas选项。我怎样才能正确修改Makevars and Makevars.win文件让 RcppArmadillo 使用选项编译包-lopenblas?我解决这个问题的尝试是修改Makevars文件的方式如下:

PKG_LIBS = $(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)
PKG_CXXFLAGS =-fopenmp -std=c++11 -lopenblas
PKG_CXX1XFLAGS = $(PKG_CXXFLAGS)

该包确实编译了-lopenblas,但这是最好的方法吗?


这是您的 RedHat 安装的问题,它在安装 R 时选择依赖 R 的内部 LAPACK 源 --- 而且 RcppArmadillo 使用 R 使用的任何内容。

在我的基于 Debian/Ubuntu 的机器上,情况有所不同。即对于

R> library(Rcpp)
R> cppFunction("arma::mat foo(arma::mat x) { return x + x;} ", depends="RcppArmadillo", verbose=TRUE)

我得到(除其他外)

g++ -Wl,-S -shared -L/usr/lib/R/lib -Wl,-Bsymbolic-functions \
    -Wl,-z,relro -o sourceCpp_4.so file677111d81351.o \
    -fopenmp -llapack -lblas -lgfortran -lm -lquadmath \
    -L/usr/lib/R/lib -lR

我们看到-llapack -lblas -lgfortran正如预期的那样。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

加速 RcppArmadillo:如何链接到 R 包中的 OpenBlas 的相关文章

随机推荐

  • 适用于 AMQP 的良好 Python 库 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您能推荐使用什么Python库来访问AMQP RabbitMQ 吗 根据我的研究pika似乎是首选之一
  • 通过 Uri 滑动加载本地图像。

    我正在尝试使用 Glide 从本地存储加载图像 但没有成功 Glide with mContext load pictureUri Uri of the picture transform new CircleTransform into
  • 操作栏 — 带有文本和图像的子菜单项无法正常工作

    我正在开发小型 Android 应用程序 其中使用操作栏和一些菜单项 一个菜单项包含子菜单 现在我想做的是始终显示带有文本和图标的菜单项 我按以下方式定义菜单项 menu menu
  • 关于 IIS 中最大文件上传大小的建议

    我意识到这个问题的答案取决于所使用的特定服务器 但很好奇人们是否对 ASP NET Web 表单允许的最大文件大小限制有建议 在一家印刷公司工作 希望允许图形设计师上传 我知道他们会超出我给他们的任何限制 您需要让您的用户满意 如果他们需要
  • 如何解决错误 ORA-06413:连接未打开?

    我本地环境VS2012 使用 Oracle 10g XE Dim dbConn As New OleDbConnection Dim dbComm As OleDbCommand dbConn ConnectionString Provid
  • MSI 可以与 EF Code First 一起使用吗?

    我已经在这个问题上陷入了很长一段时间 没有运气能够独自推进它 我正在尝试使用 MSI 令牌从 Azure 应用服务连接到 EF CodeFirst 托管数据库 当我使用 ARM 部署应用服务时 我生成了一个输出 确保它创建了一个服务主体 p
  • 防止 PHP 等待 mail() 函数

    在我的 Web 应用程序中 当用户对其帐户进行更改时 我调用 php mail 函数向该用户发送电子邮件通知 实施此操作后 我发现帐户更改操作需要非常长的时间 gt 20 秒 才能完成 我怀疑这是因为 PHP 等待 mail 函数发送电子邮
  • 使用 Tensorflow 训练时修改张量的值

    当我使用 Tensorflow 训练模型时 我想修改张量的值 这个张量是我的模型中的张量之一 weight tf Variable np matrix 经过一些迭代后 值weight将自动更新 我的问题是 如何修改weight非自动地 我已
  • 对象行为不正确

    我正在使用 Livewires 和 pygame 游戏中为您提供额外生命的对象之一被误认为是小行星对象 当额外生命对象与玩家碰撞时 它返回 额外生命对象没有属性 handle caught 错误消息 所以我可以提供一些帮助吗 class E
  • 使用 cert-manager 和 Nginx ingress 进行 404 质询响应

    我想得到LetsEncrypt 证书管理器 https cert manager io docs installation kubernetes 运行通过this https hub helm sh charts jetstack cert
  • 如何在Mac OS X下用C设置文件的创建日期?

    Mac OS X 存储文件创建时间 我知道如何读取它stat from
  • 如何构建 OleDbCommand 查询,以便可以从一个 .MDB 中获取表,并将其替换到另一个 .MDB 中

    我正在尝试从一个 Access 数据库文件中获取表 将它们添加到另一个结构完全相同但信息不同的 Access 数据库文件中 我需要覆盖任何现有的表 我的项目快完成了 这是我最后的砖墙 我使用名为 DatabaseHandling cs 的单
  • 进行顺序比较的优雅方法 (C++)

    假设我有一个包含多个成员变量的类 class MyClass std string a int b SomeOtherClass c some stuff public some other stuff 我想定义关系运算符 operator
  • Android中使用NDK(C/C++)对图像应用灰度效果

    我想使用 NDK 将灰度效果应用于图像 为此 我在谷歌上搜索了很多 但发现了相同的结果 该结果返回的图像有点像负片 这就是我所相信的 我想要的是 例如 我有这张原图 应用灰度效果后应该是这样的 我已经尝试过 我想使用 NDK 实现此功能 因
  • 将从 Urlretrieve 下载的文件保存到其他文件夹 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 目前 此功能正常工作 并且可以正确下载文件 但将它们放在运行它的同一文件夹中 但我该如何将它们移动到 c downloads 或类似的文件
  • 如何使用修改后的标头进行 HTTP GET?

    在 Ruby 中使用修改后的标头发出 HTTP GET 请求的最佳方法是什么 我想从日志文件末尾获取一系列字节 并且一直在玩弄以下代码 但是服务器返回一个响应 表示 这是服务器无法理解的请求 服务器是阿帕奇 require net http
  • 在 ol 项目 html 上实现子编号

    我不确定它叫什么 但是否可以实现以下格式 1 1 1 1 2 1 2 1 1 2 2 1 3 我想就这些了 谢谢 事实上 有几种选项在鲁棒性和支持方面有所不同 在生成列表的代码中执行此操作 提供了is毕竟生成了 HTML 维基百科就是这样做
  • NSMutableString appendString 生成 SIGABRT 错误

    新来的 这个论坛和 Xcode 所以请耐心等待 在过去的几天里 我断断续续地花了几个小时试图找出我在这里到底做错了什么 但我似乎无法找出我的问题 这是我的代码的相关部分 我相信 在标题中 interface BlahViewControll
  • 如何从反应本机页面返回本机视图控制器?

    我用一个包装了一个反应本机页面UIViewController 并用导航控制器推送它 但是如何使用react native js代码弹出到本机页面 最简单的方法是拥有一个引用您的属性UIViewController在你的AppDelegat
  • 加速 RcppArmadillo:如何链接到 R 包中的 OpenBlas

    我正在开发一个使用 RcppArmadillo 的 R 包 我正在尝试利用 OpenBLAS 中更快的矩阵乘法 在里面文档 http arma sourceforge net faq html blas lapack replacement