[MPi-C++]종료 할 모든 프로세스 (MPI)에 대한 브로드 캐스트 메시지
특정 조건에서 모든 프로세스에서 응용 프로그램을 닫아야하는 응용 프로그램을 만들었습니다. 루트 프로세스를 사용하여 만들려고했지만 다른 모든 프로세스에도 메시지를 보내서 종료하려고합니다. 내가 어떻게 이걸 만들 수 있니?
[MPi-C++]종료 할 모든 프로세스 (MPI)에 대한 브로드 캐스트 메시지
특정 조건에서 모든 프로세스에서 응용 프로그램을 닫아야하는 응용 프로그램을 만들었습니다. 루트 프로세스를 사용하여 만들려고했지만 다른 모든 프로세스에도 메시지를 보내서 종료하려고합니다. 내가 어떻게 이걸 만들 수 있니?
통신없이 모든 프로세스에서 MPI 응용 프로그램을 완전히 종료 할 방법이 없습니다. 즉, MPI 응용 프로그램의 프로세스 중 일부에서만 발생하는 조건 (예 : 프로세스 중 하나에 오류가 있음)이있는 경우 응용 프로그램을 일방적으로 종료하는 유일한 방법은 MPI_Abort
으로 전화하는 것입니다. 그 결과 각 단계의 코드가 어디에 있든 상관없이 모든 MPI 프로세스가 갑자기 끝나게됩니다. MPI_Abort
은 집합 루틴이 아니므로 다른 순위에서 정리를 수행 할 수 없습니다.
깨끗한 이탈을 원할 경우 모든 순위에서 모든 작업이 계속 진행되고 있는지 또는 종료 할 시간인지 여부에 관계없이 모든 순위간에 정기적으로 통신해야합니다. 예를 들어 MPI_Allreduce
을 MPI_SUM
으로 정기적으로 호출 할 수 있습니다. 프로세스의 종료 조건이 충족되면 데이터로 1
을 보내고, 그렇지 않으면 0
을 보내도록합니다. 이제 sum이 0
보다 큰 경우 MPI_Allreduce
을 확인하기 만하면됩니다. 그렇다면 규칙적인 방식으로 응용 프로그램을 종료하십시오.