Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Fortran MPI\u双精度vs MPI\u Real8_Fortran_Mpi - Fatal编程技术网

Fortran MPI\u双精度vs MPI\u Real8

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的
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(和相关),因为这可以用于直接匹配编译器的种类值。