【发布时间】:2017-12-15 11:10:20
【问题描述】:
我想在许多不同的工作进程上运行f(x),这些工作进程运行一台(多于一台的奖励积分)远程机器,其中x 是一个大对象。
我的交互式 R 会话在 node0 上运行,并且我使用 parallel 库,所以我执行以下操作:
library(parallel)
cl <- makeCluster(rep("node1", times = 64))
clusterExport(cl, "x")
clusterExport(cl, "f")
clusterEvalQ(cl, f(x))
问题是发送x需要相当长的时间,因为它是通过网络连接单独传输到每个工作进程的,而主进程运行的机器是分开的。
问题:
是否可以只向每个节点发送一次x 并让工作进程在本地复制它?
【问题讨论】:
-
您确定每次迭代都发送对象吗?
-
对象在
clusterExport(cl, "x")这一行中一个接一个地发送给每个工作进程,这很慢,因为它是通过网络连接发生的。发送一次就足够了,然后将其从一个工作进程复制到另一个工作进程的内存中。
标签: r parallel-processing