【发布时间】:2018-05-27 16:15:06
【问题描述】:
我想创建一个派生数据类型。特别是我想要这样的结构:
struct {
int provider;
double service;
double cost;
} MPI_Struct;
按照网络手册,我应该这样写:
int blocks[3] = {1,1,1};
MPI_Datatype types[3] ={MPI_INT,MPI_DOUBLE,MPI_DOUBLE};
MPI_Aint displacements[3];
MPI_Datatype MPI_Struct;
MPI_Aint doublex;
MPI_Type_extent(MPI_DOUBLE,&doublex);
displacements[0]=static_cast<MPI_Aint>(0);
displacements[1]=doublex;
displacements[2]=doublex+doublex;
MPI_Type_struct(3,blocks,displacements,types,&MPI_Struct)
我的问题是MPI_Type_extent的使用,它应该类似于size_of()功能。由于我的程序将在具有不同机器的集群上运行,使用MPI_Datatype_exent,我可以确定将My_Struct 从一个进程传递到另一台机器上的另一个进程没有问题吗?
如果我没记错的话,类型的位长不是标准的..
【问题讨论】:
-
你的机器有什么不同?
-
目前我不知道确切的区别。它们是大学计算机,我还没有使用它们。
-
一切都应该是绝对同质的。不要在混合不同的操作系统/安装/版本/MPI 实现/编译器选项/二进制文件/CPU 上运行 MPI,除非您真的知道自己在做什么。
-
你是对的。谢谢!
标签: c++ mpi cluster-computing