【问题标题】:How can I make R take advantage of a high memory, high cpu server?如何让 R 充分利用高内存、高 CPU 的服务器?
【发布时间】:2010-06-22 19:55:06
【问题描述】:

所以我终于想出了如何让我的 R 脚本在 Amazon EC2 云上运行。我一直在使用具有 26 个 ECU、8 个内核和 69 GB RAM 的 AMI。

然后我将我的代码分成多个脚本,并在一个 R 实例中运行每个脚本。使用这种大小的服务器,我可以轻松地同时运行 20-40 个脚本,每个脚本运行几个 1000 次模拟。

我想知道的是,R 是否在本机利用了所有这些计算能力。我应该安装专门告诉 R 使用所有这些额外内存/多个 CPU 的软件包吗?我已经看到这个page 和一些packages(至少从描述中)看起来很有希望。但我无法弄清楚如何将其合并到我的代码中。 任何人都可以更清楚地说明这一点吗?

【问题讨论】:

    标签: r resources cloud amazon-web-services


    【解决方案1】:

    您可以查看我的 Intro to High-Performance Computing with R 教程中的示例,其中几个版本位于 this page

    使用多核的最快方法是(优秀的)multicore 包,您不应该做任何特别的事情来利用那里的大量内存。 multicore 通过doMC 绑定到foreach,当然你也可以直接使用mclapply() 函数。

    【讨论】:

    • 感谢 Dirk 提供的出色资源。我将用我的下午阅读您的演示文稿。干杯!
    【解决方案2】:

    Dirk 的 cmets 出现在 w.r.t multicore/foreach/doMC 上。

    如果您要进行数千次模拟,您可能需要考虑 Amazon 的 Elastic Map Reduce (EMR) 服务。当我想在 R 中扩展我的模拟时,我从巨大的 EC2 实例和多核包开始(就像你一样!)。它进展顺利,但我遇到了一个 EC2 账单。我并不真正需要所有的 RAM,但我为此付出了代价。我的工作将在凌晨 3 点完成,然后我要到早上 8 点才能进入办公室,所以我支付了我不需要的 5 个小时。

    然后我发现我可以使用 EMR 服务来启动 50 个廉价的小型 Hadoop 实例,运行我的模拟,然后让它们自动关闭!我已经完全放弃在 EC2 上运行我的模拟程序,现在几乎完全使用 EMR。这非常有效,以至于我的公司开始测试将更多定期模拟活动迁移到 EMR 的方法。

    这是我第一次开始在 EC2 上使用多核时写的 blog post。然后,当我发现我可以使用 Amazon EMR 做到这一点时,我写了一个 follow up post

    编辑: 自从这篇文章以来,我一直在开发一个包,以便更轻松地将 EMR 与 R 一起用于并行应用功能。我已将项目命名为 Segue and it's on Google Code

    进一步更新:我已经弃用 Segue,因为有更好、更成熟的产品可以从 R 访问亚马逊的服务。

    【讨论】:

    • 谢谢京东。我的 EC2 选项卡的运行速度也很高,所以我一定会研究 EMR。
    • 如果您在使用 EMR 时遇到任何问题,请务必在 StackOverflow 中提出后续问题。祝你好运!
    猜你喜欢
    • 2017-03-30
    • 1970-01-01
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 2013-04-19
    • 2015-08-05
    • 1970-01-01
    • 2013-11-06
    相关资源
    最近更新 更多