MPI计数为零通常是有效的

时间:2012-05-01 19:36:28

标签: c fortran mpi

我今天遇到了this

  

MPI_ERR_COUNT           计数参数无效。计数参数必须是非负的;零计数通常是有效的。

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

2 个答案:

答案 0 :(得分:9)

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

如果消息标记不需要参数,那么仅发送零(实际上可能无效以发送更多信息)是有效的。你必须记住,没有参数与没有数据是不一样的,因为消息标记是一个“参数”,它本身就是一个“参数”。

答案 1 :(得分:6)

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

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

在MPI中广泛接受零,因为这样可以编写更加对称的代码(例如,没有大量if (count != 0) ...的代码