【发布时间】:2011-02-14 19:04:27
【问题描述】:
我不得不承认,看到使用 MPI 传输一个 C 结构体需要多少行代码,我感到非常震惊。
在什么情况下,使用预定义的数据类型MPI_CHAR 简单地传输结构会起作用?考虑以下示例:
struct particle {
double x;
double y;
long i;
};
struct particle p;
MPI_Isend(&p, sizeof(particle), MPI_CHAR, tag, MPI_COMM_WORLD, &sendr);
就我而言,所有进程都在相同的架构上运行。填充是唯一的问题吗?
【问题讨论】:
-
我想借此机会说,如果 MPI 不是严格要求,请使用 Google 的协议缓冲区。 code.google.com/apis/protocolbuffers
-
您不必担心填充,sizeof 会报告正确的值,包括填充
-
是的,但可能因架构而异...