代码之家  ›  专栏  ›  技术社区  ›  Maiasaura

如何使R利用高内存、高CPU服务器?

  •  22
  • Maiasaura  · 技术社区  · 16 年前

    所以我终于知道了如何让我的R脚本在AmazonEC2云上运行。我一直在使用一个AMI,它有26个ecu、8个内核和69个gigs的RAM。

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

    我想知道的是R是否在本地利用所有这些计算能力。我应该安装专门告诉R使用所有这些额外内存/多个CPU的包吗?我见过这个 page 还有一些 packages (至少从描述上看)似乎很有希望。但是我无法理解如何将它合并到我的代码中。 有人能更清楚地说明这一点吗?

    2 回复  |  直到 9 年前
        1
  •  18
  •   Dirk is no longer here    16 年前

    你可以看看我的 介绍高性能计算与R 一些版本的教程 this page .

    使用多核的最快方法是(优秀) multicore 打包,您不应该有任何特殊的事情来利用您那里的大量RAM。 多核 联系到 foreach 通过 doMC 但是你当然可以用 mclapply() 直接作用。

        2
  •  16
  •   JD Long    9 年前

    Dirk的评论出现在W.R.T多核/ForEach/DomC上。

    如果你在做成千上万的模拟,你可能会考虑亚马逊的弹性地图减少(EMR)服务。当我想在R中扩展我的模拟时,我从巨大的EC2实例和多核包(就像你一样!)很顺利,但我欠了一大笔EC2账单。我真的不需要那只公羊,但我要付钱。我的工作会在凌晨3点结束,然后我要到早上8点才能进入办公室,所以我付了5个小时的工资,我不需要。

    然后我发现我可以使用EMR服务来启动50个便宜的Hadoop小实例,运行我的模拟,然后让它们自动关闭!我完全放弃了在EC2上运行我的模拟人生,现在几乎只使用EMR。这项工作做得很好,我的公司开始测试将更多的周期性模拟活动迁移到EMR的方法。

    这里有一个 blog post 当我第一次开始在EC2上使用多核时我就写了。当我发现我可以用亚马逊电子病历做这个的时候,我写了一个 follow up post .

    编辑: 从这篇文章开始,我一直在研究一个包,使EMR和R更容易用于并行应用函数。我已经给这个项目命名了 Segue and it's on Google Code .

    进一步更新: 自那以后,我就不赞成Segue了,因为从R.

    推荐文章