gpt4 book ai didi

r - snow如何将列表元素分发给worker?

转载 作者:行者123 更新时间:2023-12-02 22:03:36 24 4
gpt4 key购买 nike

调用 parLapply() 时,有多少列表元素被发送到每个工作进程?例如,假设我们在 snow SOCK 集群上有一个包含 6 个元素和 2 个 worker 的列表。 parLapply() 是在一次发送调用中向每个 worker 发送两个列表元素,还是每次发送一个元素?

我想尽量减少我的集群通信开销(我有许多列表元素,每个 CPU 可以相对快速地处理这些元素),从我在 htop CPU 计量器上看到的情况来看,它看起来像雪一样,它当时正在发送一个列表元素。是否可以设置在一次发送调用中发送的列表元素的数量?

最佳答案

parLapply 函数将每个工作人员的输入分成一个 block 。它通过 splitList 函数实现这一点,如 parLapply 的实现所示:

function (cl = NULL, X, fun, ...) 
do.call(c, clusterApply(cl, x = splitList(X, length(cl)), fun = lapply,
fun, ...), quote = TRUE)

因此,如果列表包含 6 个元素和 2 个 worker,它将向每个 worker 发送 3 个元素,每个 worker 只需执行一次“发送”操作。这类似于 mclapply 的行为,其中 mc.preschedule 设置为 TRUE(默认值)。

看来 parLapply 已经在执行您想要的优化。

有趣的是,通过简单地将 parLapply 定义中的 lapply 更改为 mclapply,您可以创建一个混合并行编程函数,可能与具有多个内核的节点配合得很好。

关于r - snow如何将列表元素分发给worker?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16484562/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com