MPI_Double_Precision 对比 MPI_Real8

MPI_Double_Precision vs MPI_Real8

MPI 的 MPI_REAL8MPI_DOUBLE_PRECISION 之间有实际区别吗?换句话说,是否有任何现代机器架构不能保证这两种类型占用相同数量的内存?它们可以互换使用吗?

MPI_REAL8MPI_DOUBLE_PRECISION 不可互换。

出于一个原因,MPI_REAL8 是一个可选的命名常量,因此可能根本不存在于您的实现中。

除此之外,MPI_REAL8 如果存在,则映射到 REAL*8“Fortran”对象,MPI_DOUBLE_PRECISION 映射到 DOUBLE PRECISION 对象。这些不一定是同一件事:对于 gfortran,请考虑编译时选项 -fdefault-real-8 和以下程序:

 implicit none

 real*8 x
 double precision y

 print*, STORAGE_SIZE(x), STORAGE_SIZE(y)
end

更一般地说,您可以使用 answer to this related question 中的技术来避免担心将哪个 MPI 命名常量用于您的 Fortran 对象。