嵌套parallel::mclapply
调用是个好主意吗?
require(parallel)
ans <- mclapply(1:3, function(x) mclapply(1:3, function(y) y * x))
unlist(ans)
输出:
[1] 1 2 3 2 4 6 3 6 9
所以它是“工作”。但它是否推荐用于真正的计算密集型任务,这些任务的数量超过了内核的数量?执行此操作时发生了什么?涉及的多个分叉是否更可能造成浪费?mc.cores
和的考虑因素是mc.preschedule
什么?
编辑 只是为了澄清动机,通常通过拆分一个维度来并行化似乎很自然(例如,使用不同的核心来处理来自n 个不同年份的数据),然后在这种拆分中出现另一种自然的拆分方式(例如,使用不同的核心来计算m个不同功能中的每一个)。当 m 乘以 n 小于可用内核的总数时,上述嵌套看起来是合理的,至少从表面上看是这样。