在C+;中使用MPI_Send()或MPI_Bcast发送类安装+; 我如何传输类的代码或代码> STD::vector < /COD>使用 MPIYSDENER()/或 MPIYBCAST()>在C++中?/P> > P>不能简单地发送随机类的实例,因为C既不调用 MPIIOSDEND()/也不 MPIYBCAST()/理解这些类的结构。通过将&vector[0]提供给MPI_send()可以发送std::vector的实例(因为它使用连续内存存储),但是接收操作应该分几个步骤来实现:MPI_Probe()->获取消息中的元素数->调整向量实例的大小->MPI_Recv()插入已调整大小的实例中。对于所有其他情况,您应该使用类似或应该使用MPI_-Pack()和MPI_-Unpack()将类实例与MPI消息进行序列化和反序列化。

在C+;中使用MPI_Send()或MPI_Bcast发送类安装+; 我如何传输类的代码或代码> STD::vector < /COD>使用 MPIYSDENER()/或 MPIYBCAST()>在C++中?/P> > P>不能简单地发送随机类的实例,因为C既不调用 MPIIOSDEND()/也不 MPIYBCAST()/理解这些类的结构。通过将&vector[0]提供给MPI_send()可以发送std::vector的实例(因为它使用连续内存存储),但是接收操作应该分几个步骤来实现:MPI_Probe()->获取消息中的元素数->调整向量实例的大小->MPI_Recv()插入已调整大小的实例中。对于所有其他情况,您应该使用类似或应该使用MPI_-Pack()和MPI_-Unpack()将类实例与MPI消息进行序列化和反序列化。,mpi,Mpi,MPI不在对象上运行,它在内存位置上运行。因此,要从自己的类发送对象,需要从类中了解内存布局。然后可以使用它来构建MPI数据类型。MPI规范(第4章)有一整章专门介绍如何做到这一点。基本前提是基于标准MPI类型构建一个数据类型,按照指定的内存布局进行排列。构建并提交此类型后,您就可以在MPI操作中使用它了。好的,我已经找到了一个解决方案: 在第5个示例中您尝试过什么吗?LMGTFY

MPI不在对象上运行,它在内存位置上运行。因此,要从自己的类发送对象,需要从类中了解内存布局。然后可以使用它来构建MPI数据类型。MPI规范(第4章)有一整章专门介绍如何做到这一点。基本前提是基于标准MPI类型构建一个数据类型,按照指定的内存布局进行排列。构建并提交此类型后,您就可以在MPI操作中使用它了。

好的,我已经找到了一个解决方案:


在第5个示例中

您尝试过什么吗?LMGTFY