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

时间:2019-06-08 15:41:21

标签: c++ struct segmentation-fault mpi

我正在尝试将序列化的结构从一个等级发送到另一个等级。结果为

  

分段错误:11

我不知道它来自哪里。

我试图通过打印一些值来定位问题,并且代码总是在OrderedList xsMPI_Send之间中断,但是由于它是分段错误,因此无法确定它是问题。请赐教。

MPI_Recv

1 个答案:

答案 0 :(得分:1)

您的MPI派生数据类型描述了以下C struct

struct tests{
    int number;
    double fx[N];
};

但是您使用的是另一种

struct tests{
    int number;
    double *fx;
};

如果N不是常量,则可以声明

struct tests{
    int number;
    double fx[];
};

由您自己来正确分配这样的struct

另一种选择是保持相同的struct定义,并手动将MPI_Pack()MPI_Unpack()的数据移入/移出临时缓冲区。