【问题标题】:how are elements assigned to clusters in foreach() when doing parallel computing in R在 R 中进行并行计算时,如何在 foreach() 中将元素分配给集群
【发布时间】:2020-12-16 19:05:33
【问题描述】:

我有一组元素要由 R 中的用户定义函数运行。按顺序运行这些元素需要很长时间。然后我切换到使用foreach()%dopar%makecluster()registerdoparallel() 的并行计算。我想知道这些元素是如何分布到集群中的。假设我有 100 个元素并注册 5 个簇,元素 1~20 分配给簇 1,依此类推,或者它们是随机分配的。谢谢

【问题讨论】:

  • 如果你真的想看看它是如何工作的,你可以通过阅读功能代码来追踪正在发生的事情。例如,在您的控制台中输入以下内容parallel::splitIndices WITHOUT () 将向您显示,如果任务数量超过一定数量,此方法会将它们从头到尾拆分。因此,对于 4 个集群,您将运行 1:5、6:10、11:15、16:20....除了看起来最小值为 1,000,因此您将在一个集群上运行所有操作。

标签: r foreach doparallel


【解决方案1】:

先准备好,先送达:

library(doParallel)
registerDoParallel(cl <- makeCluster(3))

foreach(i = 1:20, .combine = 'c') %dopar% {
  Sys.getpid()
}
[1] 13004  5924  6600 13004  5924 13004  6600  5924 13004  5924 13004  5924 13004
[14]  5924  6600 13004  5924  6600 13004  5924

stopCluster(cl)

【讨论】:

    猜你喜欢
    • 2017-10-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多