Fortran MPI\u双精度vs MPI\u Real8
MPI的Fortran MPI\u双精度vs MPI\u Real8,fortran,mpi,Fortran,Mpi,MPI的MPI\u REAL8和MPI\u DOUBLE\u精度之间是否存在实际差异?换句话说,有没有哪种现代机器架构不能保证这两种类型占用相同数量的内存?它们可以互换使用吗?MPI\u REAL8和MPI\u DOUBLE\u PRECISION不能互换 一个原因是,MPI_REAL8是一个可选的命名常量,因此可能根本不存在于您的实现中 除此之外,MPI\u REAL8(如果存在)映射到REAL*8“Fortran”对象,而MPI\u DOUBLE\u PRECISION映射到DOUBLE P
MPI\u REAL8
和MPI\u DOUBLE\u精度之间是否存在实际差异?换句话说,有没有哪种现代机器架构不能保证这两种类型占用相同数量的内存?它们可以互换使用吗?MPI\u REAL8
和MPI\u DOUBLE\u PRECISION
不能互换
一个原因是,MPI_REAL8
是一个可选的命名常量,因此可能根本不存在于您的实现中
除此之外,MPI\u REAL8
(如果存在)映射到REAL*8
“Fortran”对象,而MPI\u DOUBLE\u PRECISION
映射到DOUBLE PRECISION
对象。这些不必是同一件事:用GoFrTRAN考虑编译时选项<代码> -FDEFAUTHORT 8/CODE >和以下程序:
implicit none
real*8 x
double precision y
print*, STORAGE_SIZE(x), STORAGE_SIZE(y)
end
更一般地说,您可以使用中的技术来避免担心Fortran对象使用哪个MPI命名常量。在现代Fortran中,一个确定要使用什么的好方法是通过MPI_TYPE_CREATE_REAL(和相关),因为这可以用于直接匹配编译器的种类值。