【问题标题】:Receiving data from any host in MPI在 MPI 中从任何主机接收数据
【发布时间】:2013-08-13 21:42:10
【问题描述】:

我使用MPI_Irecv 从 MPI 中的某个主机接收数据。通过在函数的输入参数中使用 "rank of source",我必须定义要从哪个主机接收数据。但是哪个主机给我发数据并不重要,我只想取数据。如何在不定义发件人等级的情况下获取数据?

我想我可以创建一个循环来扫描所有“等级”,但是有没有更简单的方法可以获取数据,无论它的发送者是什么?

谢谢!

【问题讨论】:

  • 程序是否允许多个等级尝试向 MPI_IRecv 发送数据?如果没有,那么 MPI_ANY_SOURCE 是一个很好的解决方案。如果可以发送多个等级,则有可能会因 MPI_Send 调用黑屏而挂起……或者如果 MPI_Send 不匹配,则 MPI_Finalize 会出错。必须小心取消任何不匹配的 MPI_Send/ISend 调用...或者您必须准备好忍受 MPI_Finalize 上的错误。
  • 许多主机不会同时尝试发送数据。但只是好奇,MPI_Cancel 足以取消吗?
  • MPI_Cancel 足以取消不匹配的 MPI_Send。

标签: parallel-processing mpi


【解决方案1】:

您可以使用 MPI_ANY_SOURCE 等级,在各种 recv/probe 函数中,让它们接受来自任何人的消息。

【讨论】:

    猜你喜欢
    • 2023-04-09
    • 2014-05-05
    • 1970-01-01
    • 2013-10-16
    • 1970-01-01
    • 2018-09-20
    • 2019-06-13
    • 2019-05-04
    • 2015-03-08
    相关资源
    最近更新 更多