gpt4 book ai didi

MPI - 跨进程共享队列

转载 作者:行者123 更新时间:2023-12-04 10:41:58 26 4
gpt4 key购买 nike

我有一个 MPI 程序,其中主节点等待从节点完成一定数量的任务(比如 1000)。从节点处于 while(True) 循环中,并继续从其任务中生成输出。这些任务的运行时间因任务和节点而异,因此如果有 2 个从节点并且主节点需要等待 1000 个任务,那么从节点 1 可以完成 450 个任务,而从节点 2 可以完成另外 550 个任务.

从节点“告诉”主节点总共完成了 1000 个任务的最佳方式是什么?在我看来,我需要某种跨进程的共享队列,从属可以在任务完成后推送数据,而主只是轮询此队列的大小,直到达到 1000。随后,主可以从此队列中排出数据为从站重置队列大小以填充更多数据。

最佳答案

我推荐两种解决方案。

Gilles 指出的第一个是使用 MPI_ANY_SOURCE 接收 1000 条完成消息,这些消息可以从任何工作人员发送。

第二种是使用 MPI_ACCUMULATE。在这种情况下,master 节点共享一个初始化为 0 的窗口,然后每个 worker 使用 MPI_ACCUMULATE 在每个任务完成后增加窗口中的值。 master 轮询它自己的本地窗口,直到它达到 1000。

在这种情况下,我会坚持使用 MPI_ANY_SOURCE 而不是创建和销毁窗口。我认为没有令人信服的理由在此处增加这种复杂性。

关于MPI - 跨进程共享队列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59887612/

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