如何让R利用高内存,高CPU服务器?

时间:2010-06-22 19:55:07

标签: r resources cloud amazon-web-services

所以我终于找到了如何让我的R脚本在Amazon EC2云上运行。我一直在使用带有26个ECU,8个内核和69个内存的AMI。

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

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

2 个答案:

答案 0 :(得分:18)

您可以查看我的高性能计算简介R 教程中的示例,其中有几个版本位于this page

使用多核的最快方法是(优秀)multicore包,你不应该有任何特别的事情来利用你在那里的ram oodles。 multicore通过foreachdoMC绑定,但您当然可以直接使用mclapply()功能。

答案 1 :(得分:16)

Dirk的评论是关于w.r.t multicore / foreach / doMC的。

如果您正在进行数千次模拟,您可能需要考虑亚马逊的弹性地图减少(EMR)服务。当我想在R中扩展我的模拟时,我开始使用巨大的EC2实例和多核包(就像你一样!)。它进展顺利,但我跑了一个EC2法案的地狱。我并不是真的需要所有的RAM,但我付出了代价。我的工作将在凌晨3点完成,然后我不会进入办公室直到上午8点所以我付了5个小时我不需要。

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

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

编辑:,因为这篇文章我一直在研究一个软件包,以便更容易使用EMR和R进行并行应用功能。我已将项目命名为Segue and it's on Google Code

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