R Parallel,每次使用parallel apply时创建新集群会更好吗?

时间:2014-01-17 14:39:00

标签: r parallel-processing

我在20个核心上使用parLapply功能。我想其他函数parSapply等也是一样的......

首先,将一个集群作为参数传递给一个函数是不好的做法,这样函数就可以在不同的子函数之间调度集群的使用?

其次,我将此群集参数传递给函数,因此我认为每次使用parLapply时它都是同一个群集,为每个parLapply调用使用新群集会更好吗?

由于

RGDS

2 个答案:

答案 0 :(得分:3)

我不是并行计算的专家,但无论如何都会冒险回答。

1)将群集作为函数参数传递是一种不错的做法。它只是工作进程的连接集合,类似于与文件的连接。

2)不需要在两次通话之间重新启动群集。如果工作进程出现严重错误,将会出现问题,但在这种情况下,我建议取消整个计算并重新启动主进程。

答案 1 :(得分:0)

将群集对象作为函数参数传递并不错,因此我不会发现使用它们在不同的子函数之间进行分派有任何问题。

为每个操作创建集群对象的问题是,它可能需要很长时间,例如,特别是在通过集群上的ssh启动许多工作程序时。但是,在某些情况下它可能很有用,我认为这可能是Fork集群的目的,它是由并行包中的makeForkCluster函数创建的。叉集群工人非常像mclapply分叉的工人,每次调用工作人员时都会创建工人。但是,我认为很少这样做。