在R中,两级并行计算如何工作?

时间:2015-05-28 15:31:17

标签: r parallel-processing simulation statistics-bootstrap

假设我想在100个不同的模拟数据集中进行1000次自举程序。

在顶层,我可以设置foreach后端,将100个作业分配给不同的CPU。然后在较低级别,通过使用R包boot中的函数boot,我还可以通过指定并行'来调用并行计算。功能中的选项。

伪代码可能如下所示。

library(doParallel}
registerDoParallel(cores=4)
foreach(i=seq(100, 5, length.out = 100), .combine=cbind) %dopar% {
  sim.dat <- simualateData(i)
  boot.res <- boot(sim.dat, mean, R=1000, parallel = 'multicore', ...)
  ## then extract results and combine
  ...
} 

我很想知道并行计算在这种情况下是如何工作的。

  1. 两个不同级别的并行计算会同时工作吗?他们如何相互影响(互动?中断?禁用?)?
  2. 更一般地说,我猜现在有越来越多的R函数为密集模拟提供boot等并行计算选项。在那种情况下,是否需要指定提供顶级的较低级并行?或相反亦然?
  3. 这个两级并行设置的优缺点是什么?
  4. 感谢您的任何澄清。

    编辑

    我应该更清楚地解释这个问题。实际上,在返回boot.res之后,将对其进行更多其他计算,以便最终从boot.res获取摘要统计信息。这意味着整个计算不是相互独立的自举程序。在这种情况下,只有外部并行循环会弄乱结果。因此,如果我在这里理解正确,最好的方法是使用嵌套的foreach并行后端,但是抑制&#39; parallel&#39;来自boot的选项。

    如果我错了,请任何人纠正我。问候。

    结束编辑

0 个答案:

没有答案