如何让R使用计算机的所有核心?

时间:2011-11-11 09:01:39

标签: r parallel-processing multicore

我已经读过R只使用一个CPU。如何让R使用所有可用的内核来运行统计算法?

2 个答案:

答案 0 :(得分:23)

是的,对于初学者,请参阅CRAN上的High Performance Computing任务视图。这列出了可用于支持单台机器上的并行计算的软件包的详细信息。

从R版本2.14.0开始,通过并行软件包提供对并行计算的内置支持,其中包括现有 snow 多核的略微修改版本包。 并行包有一个你应该阅读的插图。您可以使用以下方式查看它:

vignette(package="parallel", topic = "parallel")

还有其他方法可以利用您的多核,例如通过使用多线程BLAS进行线性代数计算。

这是否会加速你想要做的“统计计算”将取决于那些“统计计算”是什么。产生多个线程或工作人员需要花费很高的成本来设置它们,管理它们并收集结果。有些操作看到使用多个内核/线程的好处(有些大,有些小),其他操作因为额外的开销而减慢。

简而言之,不要期望使用 n 核心而不是仅使用1来减少 n 次计算时间。

答案 1 :(得分:9)

如果你碰巧做了同样事情的几次*迭代(或少数*不同参数的相同代码),最简单的方法是运行R-OS的多个副本将在不同的核心上分配工作。登记/> 在相反的情况下,去学习如何使用真正的并行扩展。

为了这个答案,很少意味着核心数量的减少或相等。