【问题标题】:Does an R compiler to C/C++ exist?是否存在针对 C/C++ 的 R 编译器?
【发布时间】:2010-11-29 22:46:46
【问题描述】:

我想知道部署 R 的最佳方式。Matlab 有“matlab 编译器”(MCR)。过去曾讨论过类似的 R 将 R 编译成 C 或 C++。有人对R to C Compiler (RCC) that was developed by John Garvin at Rice 有任何经验吗?

我已经研究过了,它似乎是唯一一个将 R 代码编译为可执行代码的项目。据我所知,它还没有被使用。

[Edit 1:]:要明确一点,我知道 R(rJava、rcpp、Rpy 等)有 C 和 C++(以及 Java、Python 等)接口.我想知道在不提前安装 R 的情况下编译和部署 R 代码的具体方法。

[编辑 2:]:John Mellor-Crummey 告诉我,他们仍在研究 RCC,并希望在 4 个月左右(最早)内使其可用。如果我发现任何其他内容,我会进一步更新。

【问题讨论】:

    标签: c++ c deployment compiler-construction r


    【解决方案1】:

    我没有使用过 Garvin 的包,也不知道沿着这些方向有什么可能。然而:

    通常人们只是直接在 C/C++/Fortran 中编写计算密集型函数,在 profiling 之后找到瓶颈。有关示例,请参阅 RCpp interfaceCalling C functions from R using .C and .CallScythe Statistical Library 也非常适合 R 用户,因为语法/函数名称相似。

    【讨论】:

    • 谢谢,这些都是很好的链接。不过,我特别关注部署过程,而不是性能问题。
    【解决方案2】:

    我忘记了赖斯项目,已经有一段时间了。我认为这里的操作术语在项目页面的顶部说明:Last Updated 3/8/06

    我们都知道 R 变化很大。所以我只有几个标准的指针给你:

    • Luke Tierney,他不仅对 R 内部知识非常了解,而且对字节编译器也非常了解,他一直在从事这样的项目。还没有准备好,它仍然可以与标准 R 引擎一起工作。
    • Stephen Milborrow 拥有 R 的 Ra 扩展,可与他的即时编译器包 jit 一起使用
    • my Introduction to High-Performance Computing with R tutorials (most recent tutorial slides from UseR! 2009) 涵盖了分析、编译扩展、使用 R 进行并行计算……部分,包括 Rcpp 还有一点 RInside

    简而言之:如果不提前安装 R,就没有你想要的编译和部署 R 代码的特定方法。对不起。

    编辑/更新(2011 年 4 月): Luke 的新 compiler 包将成为 R 2.13.0(将于 2011 年 4 月发布)的一部分,但默认情况下不会“激活”,这是预期的R 2.14.0 预计在 2011 年 10 月发布。

    编辑/更新(2011 年 12 月):Tierney 教授刚刚在字节码编译器上发布了 massive 100+ page paper

    【讨论】:

    • 谢谢德克!最近没有查看卢克的主页。您的高性能计算论文/教程非常棒。我认为上次更新日期与您所说的完全一样,但只是想检查一下。 :)
    【解决方案3】:

    您可以查看实现 R 子集的 P 编译器。特别是列表、矩阵、向量等的实现以及 lsfit、chol、svd、...

    您可以在

    下载免费版本

    www.ptechnologies.org

    它大大加快了计算速度。

    最好的,

    作为

    【讨论】:

      【解决方案4】:

      为什么人们在部署 R 时会感到恐惧?我很确定我以前见过这个问题。

      安装 R 是小菜一碟(您实际上并没有说您关心哪个操作系统)。对于 Windows,它只有一个 .exe。文件,运行它,说“是”几次,它就完成了。我怀疑安装程序 exe 可能也有无人值守安装的标志。

      【讨论】:

      • R 很简单。一些包及其依赖项不是,特别是如果这些包涉及某些其他语言。想到 Java 和 Tcl/Tk。
      【解决方案5】:

      字节码编译器将成为 R 2.13 版本的一部分。默认情况下,此版本中不使用它,但它是可用的;我预计 2.14 版本将默认字节编译所有基础包和推荐包。 compiler::compile 帮助页面和 R 安装和管理手册提供了更多详细信息。

      【讨论】:

      • 是否有关于编译何时生效的提示/指南?到目前为止,我最成功的尝试是二分搜索,速度提高了 2 倍;我一直暗暗希望 S4 会变得非常快,但没有这样的运气?
      • 此时大型函数和循环将受益。调用编译函数现在使用与调用解释函数相同的机制,因此以函数调用开销为主的事情几乎不会发生变化。这可能会在未来一年左右发展。
      • 我今天在博客上写了一个例子,主要关注(简单、愚蠢、不切实际的)循环:dirk.eddelbuettel.com/blog/2011/04/…我相信明天 R 2.13.0 正式发布后会有更多关于此的帖子。跨度>
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-20
      • 1970-01-01
      • 2012-05-22
      • 2015-06-16
      相关资源
      最近更新 更多