繁体   English   中英

R Parallel Package:clusterExport 到每个单独的核心,而不是一个大对象到所有核心

[英]R Parallel Package: clusterExport to each individual core rather than one large object to all cores

我正在使用 Parallel Package 来节省我在 R 中的一些时间。通常我会导出我尝试使用 clusterExport 进行计算的任何对象并运行相关函数。 但是,这次我正在处理一个非常大的对象(10+GB),甚至创建一个小集群也会使用大量 RAM。 我正在做的计算只需要 R 的每个副本的 10 GB 对象的一部分。我想知道是否有办法使用 clusterExport 仅将相关的半 GB 左右导出到 R 的每个副本。从什么我可以告诉 clusterExport 总是将整个对象发送到每个副本,所以如果有解决方法请告诉我。

您可以在下面的示例中看到,我将 data.frame x 存储在 R 的每个副本中。在这种情况下,我的目标是拥有 10 个不同的数据集 x1-x10 并将 x1 加载到第一个副本,将 x2 加载到第二个副本,依此类推上。 如果有另一种方法可以有效地做到这一点,也请告诉我。

library('doParallel')
x <- data.frame(a=1:10,b=1:10)
test <- function(y) {
  return(x$a[y]+x$b[y])
}
cl <- makeCluster(10)
registerDoParallel(cl)
clusterExport(cl,list('test','x'))
test1 <- parLapply(cl,1:10,fun=test)
stopCluster(cl)

几天后我想出了一个解决方案。 我想出的解决方案是将 data.frame 的每个部分保存在单独的 csv 文件中。 然后在每个虚拟 R 会话中,我读入相关的 csv 文件,因此每个 R 会话只包含计算所需的数据。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM