【发布时间】:2011-12-26 20:39:05
【问题描述】:
我读到 R 只使用一个 CPU。如何让 R 使用所有可用的内核来运行统计算法?
【问题讨论】:
标签: r parallel-processing multicore
我读到 R 只使用一个 CPU。如何让 R 使用所有可用的内核来运行统计算法?
【问题讨论】:
标签: r parallel-processing multicore
是的,对于初学者,请参阅 CRAN 上的 High Performance Computing 任务视图。这列出了可用于支持单机并行计算的软件包的详细信息。
从 R 版本 2.14.0 开始,通过 parallel 包 内置了对并行计算的支持,其中包括对现有 snow 和 multicore 的略微修改版本 包。 parallel 包有一个你应该阅读的小插曲。您可以使用以下方式查看它:
vignette(package="parallel", topic = "parallel")
还有其他方法可以利用您的多核,例如通过使用多线程 BLAS 进行线性代数计算。
这是否会加速您想要执行的“统计计算”取决于这些“统计计算”是什么。产生多个线程或工作者需要额外的成本来设置、管理它们和收集结果。一些操作看到了使用多个内核/线程的好处(一些很大,一些很小),而另一些操作则因为这种额外的开销而减慢了速度。
简而言之,不要指望通过使用 n 个核心而不是 1 个核心来减少 n 倍的计算时间。
【讨论】:
vignette(package="parallel",topic="parallel")。对我来说,如果我不添加 topic= 它只会列出小插图。
vignnette 代码行对我有用,至少在 R v 3.0.3 下
如果您碰巧对同一件事进行了几次*迭代(或针对几个*不同参数的相同代码),最简单的方法是运行多个 R 副本——操作系统将在不同的内核上分配工作。 在相反的情况下,去学习如何使用真正的并行扩展。
为了这个答案,很少意味着更少或等于核心数。
【讨论】: