【发布时间】:2018-08-06 12:16:43
【问题描述】:
嵌套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 小于可用内核的总数时,上述嵌套看起来是合理的,至少从表面上看是这样。
【问题讨论】:
标签: r parallel-processing mclapply