【问题标题】:How to let R use all the cores of the computer?如何让 R 使用计算机的所有内核?
【发布时间】:2011-12-26 20:39:05
【问题描述】:

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

【问题讨论】:

    标签: r parallel-processing multicore


    【解决方案1】:

    是的,对于初学者,请参阅 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= 它只会列出小插图。
    • @XuWang 是的,确实。我的意思是说你可以通过该代码列出它 - 我不记得主题名称,我还没有在办公室切换到 2.14.0。只是懒惰。但将编辑上述内容。谢谢。
    • 不用担心。从你的许多详细回答来看,你是懒惰的反面!
    • 我不认为小插图可用(至少在 R 和并行 v 3.0.2 中)
    • @Abe 是什么让你这么说?我展示的vignnette 代码行对我有用,至少在 R v 3.0.3 下
    【解决方案2】:

    如果您碰巧对同一件事进行了几次*迭代(或针对几个*不同参数的相同代码),最简单的方法是运行多个 R 副本——操作系统将在不同的内核上分配工作。 在相反的情况下,去学习如何使用真正的并行扩展。

    为了这个答案,很少意味着更少或等于核心数。

    【讨论】:

      猜你喜欢
      • 2016-02-10
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 2018-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多