MPI基本数据类型对应于主机语言的数据类型,MPI_BYTE和MPI_PACKED除外.我的问题是使用这些MPI基本数据类型有什么好处?或者等效地,为什么仅使用主机语言数据类型是不好的?
我阅读了William Gropp等人的教程.在幻灯片31"为什么是数据类型"中,它说:
(http://www.mcs.anl.gov/research/projects/mpi/tutorial/mpiintro/ppframe.htm)
我没有理解这个解释.首先,如果基本数据类型不同,我不明白为什么使用MPI数据类型可以解决差异,因为基本MPI数据类型对应于主机语言的基本数据类型(基本数据类型).其次,为什么这种面向应用的内存数据布局有两个好处?
任何解答我原始问题的答案都将被接受.任何答案都可以解决我的问题,威廉格罗普的解释也将被接受.
简而言之,该系统为 MPI 添加了一定程度的强类型。
长的答案是 MPI 数据类型的目的是告诉 MPI 函数它们正在使用什么。因此,例如,如果您将 int 从小端机器发送到大端机器,那么 MPI 可以为您进行字节顺序转换。另一个更常见的好处是 MPI 知道 MPI_DOUBLE 有多大,因此您不必到处sizeof都有一堆语句。
请注意,MPI 数据类型是标记,而不是实际数据类型。换句话说,你使用
double d;
Run Code Online (Sandbox Code Playgroud)
不是
MPI_DOUBLE d;
Run Code Online (Sandbox Code Playgroud)