2017-09-23 20 views
0

関数mpi_sendとmpi_recvにmpi_reduceと同様の丸め誤差があるかどうか尋ねます。 mpr_reduce関数の丸め誤差はプロセッサの実行順序の違いから来るものであるが、関数mpi_sendとmpr_recvには似たような手順がないので、そうしてはいけないと思った。mpi_send mpi_recv丸め誤差

次に、シリアルコードとその結果を比較してmpi_sendとmpi_recv関数だけで並列コードの計算を検証するのが論理的かどうか質問したいと思いますか?

ありがとうございます。

答えて

0

MPI_SendおよびMPI_Recvそれ自体がです。しかし、内部コードの精度が高いシステムでは、シリアルコードの結果と並列コードの結果との間に差異が生じることがあります。典型的な例は、x87 FPUが使用されている場合(主に32ビットコード)のx86です。 x87は80ビット値の小さなスタックで動作し、精度の低い値を含むすべての操作は80ビットの内部精度で実行されます。中間値を別のMPIランクに転送する必要があるときはいつも、非標準の拡張精度タイプが使用されていないかぎり、floatまたはdoubleのいずれかに丸められます。 x87スタックこれは、MPI固有の問題ではないため、コンパイラによって実行されるレジスタ最適化のレベルに応じて、異なる結果としてシリアルコードに現れることもあります。

関連する問題