OpenMPI可以保证收到的消息的顺序来自同一个进程吗?

时间:2015-05-27 04:21:36

标签: c linux parallel-processing mpi openmpi

例如,我使用mpirun -n 4启动4个进程。进程0接收来自process1,process2和process3的消息。进程1按message0, message1, message2的顺序发送消息。当进程0收到来自process1的这些消息时,是否可以保证进程在message0, message1, message2的oder中接收这些消息?我不关心来自所有不同进程的所有消息的总顺序,我只需要知道它是否可以保证消息的顺序来自同一个进程。顺便说一句,当我使用MPI_Send()发送消息时,消息的大小是有限的,对吗?那么MPI_Bcast()呢?

1 个答案:

答案 0 :(得分:4)

只要message0message1message2具有相同的tag且在同一个通讯器comm内发送,MPI标准就可以保证MPI_Recv(..., source, tag, comm, ...)将以完全相同的顺序接收消息。

消息的大小受实现限制,但大多数现代消息支持超过2 GiB大小的消息。您必须使用用户定义的数据类型,因为MPI_Send一次不能发送超过2个 31 -1个元素。