【问题标题】:In MPI_Gather(), MPI_Scatter() what is the difference between send count and receive count?在 MPI_Gather()、MPI_Scatter() 中发送计数和接收计数有什么区别?
【发布时间】:2017-07-16 20:35:03
【问题描述】:

在 MPI 收集和分散中,发送和接收有两个计数。我检查了文档,发现两者应该具有相同的值。

例如:- 在MPI_Gather() 中,send_countreceive_count 的大小应与发送缓冲区大小相同。 https://www.mpich.org/static/docs/v3.1/www3/MPI_Gather.html

有人能解释一下这个冗余参数的目的是什么吗?

【问题讨论】:

  • 只有在发送和接收数据类型相同时,大小才应该相等。

标签: c++ c memory mpi message-passing


【解决方案1】:

在某种程度上,您可以使用不同的类型 - 但总大小需要匹配。

或者更准确地说,the standard 解释说:

每个进程上sendcountsendtype的类型签名必须是 等于根的recvcountrecvtype的类型签名。这 意味着发送的数据量必须等于 在每个进程和根之间成对接收到的数据。清楚的 仍然允许发送者和接收者之间的类型映射。

【讨论】:

  • 举例来说,可以发送一个1000 MPI_DOUBLE(sendcount=1,sendtype=派生数据类型)的向量,接收1000个MPI_DOUBLE(recvcount=1000,recvtype=MPI_DOUBLE)。如果您使用的是 Open MPI,请记住默认的 coll/tuned 集合模块没有正确处理用例
  • 您的意思是,如果我们在发送和接收呼叫时使用不同的数据类型,它们可能有不同的计数。好的 :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-03-26
  • 2013-10-24
  • 2016-09-29
  • 2013-05-25
  • 2011-12-14
相关资源
最近更新 更多