当您在一个进程中发送包含某些n
的{{1}}个元素的一条MPI消息,然后又以接收MPI_type
为count
的方式接收另一个消息时,您一定会总是收到所有> n
元素吗?
从本质上讲,如果您通过阻塞模式n
发送一条消息,然后通过一个具有足够大接收缓冲区的阻塞模式MPI_Send
接收消息,您是否可以确保获得全部消息?
或者有机会您可能只获得拳头MPI_Recv
元素,并且应该反复调用k < n
直到获得完整内容。
我很确定答案是肯定的,但同时查看官方documentation和specification notes都找不到肯定的答案。
答案 0 :(得分:0)
正如吉尔斯和戴维在评论中所说,答案是肯定的。正如Gilles所说,您永远不会收到截断的消息。如果n > count
,则MPI将报告错误并失败。
如果n <= count
将完成receive
,但通常您不知道n
的值是什么(传入消息的大小)。您需要通过调用MPI_Get_count()
从状态变量中提取出来。