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_Allreduce传递错误的参数,会发生什么情况?_Fortran_Mpi - Fatal编程技术网

Fortran 如果向MPI_Allreduce传递错误的参数,会发生什么情况?

Fortran 如果向MPI_Allreduce传递错误的参数,会发生什么情况?,fortran,mpi,Fortran,Mpi,我在用MPI_Allreduce编写fortran。我意外地将MPI_DOUBLE_PRECISION而不是MPI_INTEGER放入以获得整数和。有时我会得到一个正确的答案,有时我会得到一些非常大的负数。我正在学习并行计算课程,并检查我的课本。我没有发现如果我将错误的MPI_数据类型传递给MPI_Allreduce会发生什么另外,编译器或代码根本没有抱怨,这使得调试非常困难是否有方法识别传递到MPI\u Allreduce的错误MPI\u数据类型?如果传入错误的参数,有人能解释一下MPI_AL

我在用MPI_Allreduce编写fortran。我意外地将MPI_DOUBLE_PRECISION而不是MPI_INTEGER放入以获得整数和。有时我会得到一个正确的答案,有时我会得到一些非常大的负数。我正在学习并行计算课程,并检查我的课本。我没有发现如果我将错误的MPI_数据类型传递给MPI_Allreduce会发生什么另外,编译器或代码根本没有抱怨,这使得调试非常困难是否有方法识别传递到MPI\u Allreduce的错误MPI\u数据类型?如果传入错误的参数,有人能解释一下MPI_ALlreduce将如何工作吗


非常感谢

一般来说,不正确的程序具有未定义的行为

在您的情况下,使用
MPI\u DOUBLE\u PRECISION
而不是
MPI\u INTEGER
可能会导致数组溢出,从而导致内存损坏,然后所有赌注都被取消

此外,您将使用一个运算符(
+
is
MPI_SUM
),该运算符对浮点数而不是整数进行运算,这是不正确的。 请随意学习双精度数字的格式,看看如果您将它们视为整数并执行加法会发生什么。

(a)Fortran在这方面不会欺骗您。您有责任编写正确的代码。(b) 为什么不解决这个问题呢?在这个失败的案例中,你希望通过学习它如何工作来获得什么?