gpt4 book ai didi

mpi - 事件驱动的 MPI

转载 作者:行者123 更新时间:2023-12-04 15:47:40 39 4
gpt4 key购买 nike

我有兴趣使用 MPI(消息传递接口(interface))实现一种事件驱动的调度队列。我要解决的基本问题是:我有一个主进程,它将作业插入全局队列,每个可用的从进程检索队列中的下一个作业(如果有的话)。

从我读到的关于 MPI 的内容来看,发送和接收进程似乎必须就它们何时发送和接收达成一致。如,假设一个进程发送一条消息,但另一个进程不知道它需要接收,反之亦然,那么一切都死锁了。有什么方法可以让每个过程更加独立吗?

最佳答案

你可以这样做:

声明一个主节点 (0),它将分发任务。在这个节点中,伪代码是:

int sendTo
for task in tasks:
MPI_Recv(...sendTo, MPI_INT, MPI_ANY_SOURCE,...)
MPI_Send(job,... receiver: sendTo)

for node in nodes:
MPI_Recv(...sendTo, MPI_INT, MPI_ANY_SOURCE,...)
MPI_SEND(job_null,...,receiver: sendTo)

在从节点中,代码将是:
while (true)
MPI_Send(myNodenum to 0, MPI_INT)
MPI_Recv(job from 0)
if (job == job_null)
break
else
execute job

我认为这应该有效。

关于mpi - 事件驱动的 MPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7655710/

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