MPI派生的Eigen数组的数据类型

时间:2017-09-17 14:49:43

标签: c++ types mpi eigen

我正在开发一个项目,我使用Eigen的数组创建了一个类

class Cartesian{
   public:
      double x() const { return r_(0); }
      double y() const { return r_(1); }
      double z() const { return r_(2); }
   private:
      Eigen::Array3d r_; 
 }

 Eigen::Array<Cartesian, Eigen::Dynamic, 1> Cart_Array(10); 

所以现在我想使用从Proc 0到Proc 1的MPI_Send发送Cart_Array。最好的方法是什么?我想创建一个派生的MPI数据类型;例如,Cart_Type,然后将其作为

发送
 MPI_Send(&Cart_Array, 10, Cart_Type, 1, TAG, MPI_COMM_WORLD).

我知道如何使用MPI_Type_create_struct等为简单的事物创建MPI派生类型。但是我不知道如何针对我展示的案例进行操作。请给我看。如果可能,我想避免其他库,如Boost。

编辑:

我问了这个问题,因为我想避免使用序列化方法。这是因为这是强调效率的大型计划的一部分。

1 个答案:

答案 0 :(得分:0)

您应该执行以下操作。只需将一个或多个myltraj$dist序列化为双精度矢量,发送和接收这些双精度数并进行反序列化。我希望这可以编译,因为我只是在没有MPI的机器上键入它。我没有安装Eigen,但你明白了。

Cartesian