【发布时间】:2021-06-09 19:33:21
【问题描述】:
我正在编写一个具有抽象结构的面向对象程序。每个结构都有成员变量,具体取决于继承者的实现。
struct abstract
{};
struct concrete: abstract
{
int data[5][10];
};
struct concrete2: abstract
{
int data[20];
std::string s;
};
我需要一种方法来使用 MPI_Send 在 MPI 进程之间序列化和发送这些结构。
有没有办法以编程方式为每个单独的结构实现定义 MPI_Datatypes?理想情况下,我可以使用函数来定义类型,而不管结构内部是什么。这样的事情可能吗?
MPI_Datatype myType;
concrete2 myStruct;
figureOutMPIType(&myStruct, &myType);
MPI_Send(&myStruct, 1, myType, 1, 0, MCW);
【问题讨论】:
-
std::string绝对做不到。对于基本类型的struct,请参阅MPI_Type_create_struct。 -
您可能需要考虑 C++ 抽象,例如 Boost.MPI 或 Elementals
标签: c++ struct multiprocessing mpi