【发布时间】:2022-08-17 19:07:03
【问题描述】:
将对象作为函数参数传递给parallel::parLapply 和parallel::parLapplyLB 还是使用parallel::clusterExport 导出它们更有效? IE。
parallel::parLapply(cl, 1:1000, function(y, x1, x2, x3, x4, x5) {
...
}, x1, x2, x3, x4, x5)
或者
parallel::clusterExport(cl, c(\"x1\", \"x2\", \"x3\", \"x4\", \"x5\"))
parallel::parLapply(cl, 1:1000, function(y) {
...
})
非并行函数,例如默认情况下不复制传递给它们的参数。它们仅在修改对象时创建副本。我想知道,上述两个并行选项在避免不必要的对象复制方面是否有不同的优势。
-
您使用的是哪个操作系统?要共享数据,您需要
makeCluster才能FORK进程。不幸的是,Windows only allows PSOCK,这意味着数据无论如何都会被复制到每个工作人员,您考虑的两个选项之间几乎没有区别。 -
我使用的是 Windows 机器,因此使用了
PSOCK。即使它在这种情况下复制数据,问题中提到的两种方法是否以不同的效率处理它?那么FORK案例呢?FORK集群哪个选项更有效?
标签: r parallel-processing rparallel