MPI_Double_Precision 对比 MPI_Real8
MPI_Double_Precision vs MPI_Real8
MPI 的 MPI_REAL8
和 MPI_DOUBLE_PRECISION
之间有实际区别吗?换句话说,是否有任何现代机器架构不能保证这两种类型占用相同数量的内存?它们可以互换使用吗?
MPI_REAL8
和 MPI_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 对象。
MPI 的 MPI_REAL8
和 MPI_DOUBLE_PRECISION
之间有实际区别吗?换句话说,是否有任何现代机器架构不能保证这两种类型占用相同数量的内存?它们可以互换使用吗?
MPI_REAL8
和 MPI_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 对象。