2012-07-03 3 views

답변

1

통신없이 모든 프로세스에서 MPI 응용 프로그램을 완전히 종료 할 방법이 없습니다. 즉, MPI 응용 프로그램의 프로세스 중 일부에서만 발생하는 조건 (예 : 프로세스 중 하나에 오류가 있음)이있는 경우 응용 프로그램을 일방적으로 종료하는 유일한 방법은 MPI_Abort으로 전화하는 것입니다. 그 결과 각 단계의 코드가 어디에 있든 상관없이 모든 MPI 프로세스가 갑자기 끝나게됩니다. MPI_Abort은 집합 루틴이 아니므로 다른 순위에서 정리를 수행 할 수 없습니다.

깨끗한 이탈을 원할 경우 모든 순위에서 모든 작업이 계속 진행되고 있는지 또는 종료 할 시간인지 여부에 관계없이 모든 순위간에 정기적으로 통신해야합니다. 예를 들어 MPI_AllreduceMPI_SUM으로 정기적으로 호출 할 수 있습니다. 프로세스의 종료 조건이 충족되면 데이터로 1을 보내고, 그렇지 않으면 0을 보내도록합니다. 이제 sum이 0보다 큰 경우 MPI_Allreduce을 확인하기 만하면됩니다. 그렇다면 규칙적인 방식으로 응용 프로그램을 종료하십시오.

관련 문제