Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/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
Mpi 并行归约中与浮点相关的数值稳定性问题_Mpi_Openmp_Openmpi - Fatal编程技术网

Mpi 并行归约中与浮点相关的数值稳定性问题

Mpi 并行归约中与浮点相关的数值稳定性问题,mpi,openmp,openmpi,Mpi,Openmp,Openmpi,我一直在看一些与浮点求和和相关精度问题相关的在线资源。 例如。: 大多数人建议在处理任何现代硬件的浮点求和时使用某种形式的手动干预。例如。 (1) 使用Kahan的浮点求和算法,或(2)对更接近的数量级进行排序和求和,等等。 这些细微差别是由MPI_AllReduce还是OpenMP Reduce内核处理的 仅就OpenMP而言:该标准没有说明应用缩减操作的顺序,事实上,在每次代码执行时甚至可能有所不同。(一些OpenMP运行时,如LLVM/Intel one实现了确定性缩减*,但仅保证相同

我一直在看一些与浮点求和和相关精度问题相关的在线资源。 例如。:

大多数人建议在处理任何现代硬件的浮点求和时使用某种形式的手动干预。例如。 (1) 使用Kahan的浮点求和算法,或(2)对更接近的数量级进行排序和求和,等等。
这些细微差别是由MPI_AllReduce还是OpenMP Reduce内核处理的

仅就OpenMP而言:该标准没有说明应用缩减操作的顺序,事实上,在每次代码执行时甚至可能有所不同。(一些OpenMP运行时,如LLVM/Intel one实现了确定性缩减*,但仅保证相同线程数的运行之间的确定性)

如果您想要排序,或者以其他方式执行缩减,您将需要自己实现它

  • 有关详细信息,请参阅并搜索KMP_确定性_缩减

您是正确的,某些可能的归约求和顺序可能不令人满意,例如按线程到达顺序进行无额外精度的求和。卡汉的算法本质上是顺序的。Simd并行程序通常在精度上有一点提高;如果你想更精确,你必须把它写进去。如果您的MPI没有额外精度的隐藏或默认选项,您可以测试显式写入它,或者保存单个线程和并将它们与显式额外精度组合,可能是以树的方式。