2014-07-11 5 views
1

현재 MPI 응용 프로그램에 문제가 있습니다. 내가 산발적 형태의 MPI 오류를 수신하고MPI 메시지 잘림 오류의 출처를 찾는 방법은 무엇입니까?

: 내가 볼 수있는 위치에 모르는 그러나

Fatal error in MPI_Allreduce: Message truncated, error stack: 
MPI_Allreduce(1339)...............: MPI_Allreduce(sbuf=0x7ffa87ffcb98, rbuf=0x7ffa87ffcba8, count=2, MPI_DOUBLE, MPI_SUM, MPI_COMM_WORLD) failed 
MPIR_Allreduce_impl(1180).........: 
MPIR_Allreduce_intra(755).........: 
MPIDI_CH3U_Receive_data_found(129): Message from rank 0 and tag 14 truncated; 384 bytes received but buffer size is 16 
rank 1 in job 1 l1442_42561 caused collective abort of all ranks 
exit status of rank 1: killed by signal 9 

. Allreduce 함수 호출에서 오류가 발생하지만 여러 개가있는 것을 알고 있습니다.

어떤 함수 호출이 오류를 생성하는지 어떻게 알 수 있습니까? 간단한 printf 디버깅은 오류가 처음 발생하기 전에 함수가 백만 번 호출 될 수 있으므로 도움이되지 않습니다.

또한 프로그램 시작 후 또는 바로 시작되지 않을 수도 있습니다.

답변

1

제가

MPI_Errhandler_set(MPI_COMM_WORLD, MPI_ERRORS_RETURN) 

호출하고 MPI_SUCCESS 동일없는 대한 Allreduce 함수의 각각의 복귀 값을 검사하여 오류의 원인을 추적 할 수 있었다. 오류가 발생한 위치입니다.

+0

오류가 있음은 분명합니다. 더 큰 문제는 그 시점에서 잘못하고있는 것입니다. 당신이 그것을 알아낼 수 있었습니까? –

+1

오류가 발생하여 잠자기를 추가하고 gdb를 사용하여 다른 프로세스에 연결 한 다음 호출을 다시 추적함으로써이를 파악할 수있었습니다. 그것은 다른 경로가 동일한 경로를 따르고 있다고 가정하는 발산하는 코드 경로로부터 비롯된 것입니다. – Blackclaws

관련 문제