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() 呢?

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

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