通过MPI_ Send/recv发送和接收多个元素

  • 本文关键字:元素 MPI Send recv 通过 mpi
  • 更新时间 :
  • 英文 :


我开始学习MPI了。我刚开始做一个简单的例子:我有一个矩形,它被分成两个子框。我假设每个盒子里有N/2个粒子(总共N个粒子)。我使用两个进程/核心来完成这项工作。第一芯处理第一子盒,第二芯处理第二子盒。在时间过程中,粒子会从一个子框交叉到另一个子框。我确信我必须使用MPI_Send和MPI_Recv来完成这项工作。但我不明白的是,如果每次都有多个粒子交叉(从一个核心到另一个核心),我如何有效地使用MPI_Send/Recv或MPI_Sandrecv?我忘了说我不知道每次穿越的粒子数。对不起,如果问题太简单/太傻。

有很多选项:

  • 你可以做一些简单的事情,比如使用MPI_ALLTOALL来交换所有子框之间的粒子数量。然后使用点对点通信来通信实际粒子
  • 你可以使用社区集体只使用MPI_NEIGHBOR_ALLTOALL与邻居交流
  • 您可以使用所有邻居之间的点对点非阻塞通信来交换粒子的数量,然后交换粒子的内容
  • 您可以使用MPI_PROBE来确定发送给您的粒子数(如果没有发送粒子,则会以某种方式传递此信息)

所以,是的,这是可能的。有很多选择。不过,您可能需要了解更多关于MPI的信息才能使用它们中的任何一个。

最新更新