首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >事件驱动的MPI

事件驱动的MPI
EN

Stack Overflow用户
提问于 2011-10-05 09:01:53
回答 2查看 614关注 0票数 6

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

根据我所读到的关于MPI的内容,似乎发送和接收过程必须在发送和接收时达成一致。就像在中一样,假设一个进程发送了一条消息,但另一个进程不知道它需要接收,反之亦然,那么一切都会死锁。有没有办法让每个进程都更独立一些?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-07 23:46:25

您可以按如下方式执行此操作:

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

代码语言:javascript
复制
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)

在从节点中,代码为:

代码语言:javascript
复制
while (true)
  MPI_Send(myNodenum to 0, MPI_INT)
  MPI_Recv(job from 0)
  if (job == job_null)
    break
  else
    execute job

我想这应该行得通。

票数 1
EN

Stack Overflow用户

发布于 2013-09-20 21:39:50

您可能希望使用charm++;它不是一个显式的事件驱动框架,但确实提供了一种用于执行任务和动态分发这些任务的抽象机制。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7655710

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档