我在20个核心上使用parLapply
功能。我想其他函数parSapply
等也是一样的......
首先,将一个集群作为参数传递给一个函数是不好的做法,这样函数就可以在不同的子函数之间调度集群的使用?
其次,我将此群集参数传递给函数,因此我认为每次使用parLapply
时它都是同一个群集,为每个parLapply
调用使用新群集会更好吗?
由于
RGDS
答案 0 :(得分:3)
我不是并行计算的专家,但无论如何都会冒险回答。
1)将群集作为函数参数传递是一种不错的做法。它只是工作进程的连接集合,类似于与文件的连接。
2)不需要在两次通话之间重新启动群集。如果工作进程出现严重错误,将会出现问题,但在这种情况下,我建议取消整个计算并重新启动主进程。
答案 1 :(得分:0)
将群集对象作为函数参数传递并不错,因此我不会发现使用它们在不同的子函数之间进行分派有任何问题。
为每个操作创建集群对象的问题是,它可能需要很长时间,例如,特别是在通过集群上的ssh启动许多工作程序时。但是,在某些情况下它可能很有用,我认为这可能是Fork集群的目的,它是由并行包中的makeForkCluster函数创建的。叉集群工人非常像mclapply分叉的工人,每次调用工作人员时都会创建工人。但是,我认为很少这样做。