OpenMPI 能否保证接收消息的顺序来自同一进程?
Can OpenMPI guarantee order of received message come from the same process?
比如我用mpirun -n 4
启动了4个进程。进程 0 接收来自进程 1、进程 2 和进程 3 的消息。进程1按照message0, message1, message2
的顺序发送消息。当进程0收到来自进程1的这些消息时,是否能保证进程按照message0, message1, message2
的顺序收到这些消息?我不关心所有消息来自所有不同进程的总顺序,我只需要知道它是否能保证消息来自同一个进程的顺序。对了,我用MPI_Send()
发消息的时候,消息的大小是有限制的吧? MPI_Bcast()
呢?
只要message0
、message1
、message2
有相同的tag
并且在同一个communicatorcomm
内发送,MPI标准保证 MPI_Recv(..., source, tag, comm, ...)
将以完全相同的顺序接收消息。
消息的大小受实现的限制,但大多数现代消息支持大小超过 2 GiB 的消息。您必须使用用户定义的数据类型,因为 MPI_Send
一次不能发送超过 231-1 个元素。
比如我用mpirun -n 4
启动了4个进程。进程 0 接收来自进程 1、进程 2 和进程 3 的消息。进程1按照message0, message1, message2
的顺序发送消息。当进程0收到来自进程1的这些消息时,是否能保证进程按照message0, message1, message2
的顺序收到这些消息?我不关心所有消息来自所有不同进程的总顺序,我只需要知道它是否能保证消息来自同一个进程的顺序。对了,我用MPI_Send()
发消息的时候,消息的大小是有限制的吧? MPI_Bcast()
呢?
只要message0
、message1
、message2
有相同的tag
并且在同一个communicatorcomm
内发送,MPI标准保证 MPI_Recv(..., source, tag, comm, ...)
将以完全相同的顺序接收消息。
消息的大小受实现的限制,但大多数现代消息支持大小超过 2 GiB 的消息。您必须使用用户定义的数据类型,因为 MPI_Send
一次不能发送超过 231-1 个元素。