如何通过 mpi send 在另一个结构内发送一个结构

Posted

技术标签:

【中文标题】如何通过 mpi send 在另一个结构内发送一个结构【英文标题】:How to send a struct inside another struct over mpi send 【发布时间】:2021-11-19 15:56:02 【问题描述】:

如果我有 2 个结构,

struct 
   int a;
   int b;
 st_a;

struct 
  double c;
  st_a d;
 st_b;

有没有办法使用 mpi_Send 发送 st_b?

【问题讨论】:

MPI 类型构造是递归的。所以你可以为st_a创建一个结构或连续类型,然后为st_b创建一个结构类型。 【参考方案1】:

你以同样的方式发送结构。结构只是连续的字节,嵌套结构也不例外。根据文档https://www.mpich.org/static/docs/v3.3/www3/MPI_Send.html,您只需要注意大小,但这应该不是问题,因为您有多种方法可以在 C 中获得所需的 sizeof。 你也可能想看看这篇文章: How to send nested structure using MPI_Datatype in MPI using C

【讨论】:

以上是关于如何通过 mpi send 在另一个结构内发送一个结构的主要内容,如果未能解决你的问题,请参考以下文章

C ++ MPI创建并发送具有字段char [16]和整数的结构数组

MPI - 在使用 MPI_Probe() 时发送我自己的结构

探测 MPI_Bcast 或 MPI_Send

mpi_recv 只接收 mpi_send 发送的一半数据?完全糊涂

分段错误:C++ 中的结构序列化和 MPI 数据传输

我可以创建一个用于存储数据的结构并通过 MPI 发送它吗?