2017-09-23 7 views
0

mpi_send 및 mpi_recv 함수에 mpi_reduce와 유사한 반올림 오류가 있는지 묻고 싶습니다. mpr_reduce 함수의 반올림 오류는 프로세서 실행 순서의 차이에서 비롯되었지만 mpi_send 및 mpr_recv 함수는 비슷한 프로 시저를 갖고 있지 않기 때문에 안된다고 생각했습니다.mpi_send mpi_recv 반올림 오류

그런 다음 mpi_send 및 mpi_recv 함수가있는 병렬 코드 계산 결과를 직렬 코드와 비교하여 논리적인지 확인하고 싶습니다.

감사합니다.

답변

0

MPI_SendMPI_Recv그 자체는입니다. 그러나 더 높은 내부 정밀도가 사용되는 시스템의 직렬 코드와 병렬 코드의 결과 간에는 여전히 차이가있을 수 있습니다. 일반적인 예는 x87 FPU가 사용되는 경우 (주로 32 비트 코드에서) x86입니다. x87은 80 비트 값의 작은 스택에서 작동하며 정밀도가 낮은 값을 포함하여 모든 연산이 80 비트 내부 정밀도로 수행됩니다. 중간 값을 다른 MPI 랭크로 전송해야 할 때마다 비표준 확장 정밀도 유형을 사용하지 않는 한 먼저 반올림되어 float 또는 double으로 반올림됩니다. 값이 남아 있으면 중요한 비트는 제거됩니다. x87 스택 이는 컴파일러가 수행하는 레지스터 최적화 수준에 따라 다른 결과로 직렬 코드에서 나타날 수 있으므로 MPI 관련 문제는 아닙니다.