MPI计数为零通常是有效的

mgi*_*son 7 c fortran mpi

我今天遇到了这个问题(http://www.mcs.anl.gov/research/projects/mpi/www/www3/MPI_Send.html)

__PRE__

零计数通常有效意味着什么?这是否意味着它依赖于实现?

Mah*_*dsi 9

我觉得你读得太多了.我认为这仅仅意味着取决于用户实现,从0到随机正整数的任何内容都是有效计数.不难想象一个不需要参数的消息标签.

如果消息标记不需要参数,那么仅发送零(实际上,发送更多信息可能无效)是有效的.您必须记住,没有参数与没有数据不同,因为消息标记是其自身的"参数".

  • 你说的没错.零始终有效.我查看了标准(MPI 2.2标准的3.2.2节) (2认同)

Hri*_*iev 6

这意味着要求指定消息数据大小的MPI中的任何函数都接受零,但这并不意味着它将导致正确的应用程序代码.

例如,MPI_Send接受0作为计数,并且将始终发送一个空消息,该消息不携带任何数据,但仍然有一个信封,并且可以通过任何匹配接收MPI_Recv.另一方面,如果您将0指定为计数,MPI_Recv则会收到任何已到达的匹配非空消息的消息截断错误.MPI_Recv尽管它对于MPI是完全可以接受的,但是0几乎从来都不是有效的(从应用程序的角度来看)计数值.

零在MPI中被广泛接受,因为它使人们能够编写更对称的代码(例如,没有大量代码的代码) if (count != 0) ...