使用MPI集体通信发送Struct

时间:2015-11-28 11:32:16

标签: c++ c struct mpi

我正在研究C上的MPI。我有这个自定义结构,我希望使用MPI Collective communication(Gather,Scatter,Broadcast)序列化并发送到其他节点

结构如下

typedef struct {
double x[2];        /* Old and new X-axis coordinates */
double y[2];        /* Old and new Y-axis coordinates */
double xf;          /* force along X-axis */
double yf;          /* force along Y-axis */
double xv;          /* velocity along X-axis */
double yv;          /* velocity along Y-axis */
double mass;        /* Mass of the body */
double radius;      /* width (derived from mass) */
} bodyType;

我试图了解MPI上自定义结构的序列化,但无法真正理解该过程。如果有人能在这里帮助我,那就太棒了

谢谢

2 个答案:

答案 0 :(得分:0)

你的结构只是十个连续的双打。因此,您无需通知MPI您的类型,因为它可以被视为一个数组。如果你有七个结构的数组,只需告诉MPI你有一个70个双打的数组。你应该告诉你的编译器“打包”你的结构(例如GCC或Clang中的__attribute__((__packed__))),这样它就没有填充。

答案 1 :(得分:0)

好的,所以我能够浏览文件并写下这个

m>5