例如,我使用mpirun -n 4
启动4个进程。进程0接收来自process1,process2和process3的消息。进程1按message0, message1, message2
的顺序发送消息。当进程0收到来自process1的这些消息时,是否可以保证进程在message0, message1, message2
的oder中接收这些消息?我不关心来自所有不同进程的所有消息的总顺序,我只需要知道它是否可以保证消息的顺序来自同一个进程。顺便说一句,当我使用MPI_Send()
发送消息时,消息的大小是有限的,对吗?那么MPI_Bcast()
呢?
答案 0 :(得分:4)
只要message0
,message1
和message2
具有相同的tag
且在同一个通讯器comm
内发送,MPI标准就可以保证MPI_Recv(..., source, tag, comm, ...)
将以完全相同的顺序接收消息。
消息的大小受实现限制,但大多数现代消息支持超过2 GiB大小的消息。您必须使用用户定义的数据类型,因为MPI_Send
一次不能发送超过2个 31 -1个元素。