关于消息的更多内容

  消息:分为数据(data)和信封(envelope)两个部分,其中,信封中的对象可能有四种:接收进程序号发送进程序号消息标签(tag)和通信域,它封装了关于这条信息的一些管理信息。数据则包含用户将要传递的内容,它包括数据说明和实际内容两个部分。数据说明包括数据起始地址,数据数目和数据类型信息;

  消息接收时,根据信封中的数据来进行消息匹配。即接收者通过比较比较源,通信域和消息标签来确定是否是自己想要的消息。消息标签用来区分来自相同源的多个消息,可以当作消息序号,这是为了解决因为网络原因而造成的消息到达序列与发送序列不同的问题。

  通过设定RECV的源处理器为MPI_ANY_SOURCE,接收者可以使这个接收操作从通信域内的任意一个进程接收数据,但其它的要求仍然需要满足。同样,MPI也定义了一个MPI_ANY_TAG,设定消息标签为MPI_ANY_TAG的接收可以忽略对到达消息的tag检查。