OpenMPI를 통해 연결된 여러 시스템을 사용하여 Amazon EC3 플랫폼에서 계산을 수행합니다. 계산 비용을 줄이기 위해 스폿 인스턴스가 사용되며, 기계의 비용이 최대 사전 설정 가격 인 : http://aws.amazon.com/ec2/spot-instances/을 초과하면 자동으로 종료됩니다. 이상한 동작이 발생합니다 : 컴퓨터가 종료되면 MPI 통신기의 다른 프로세스가 계속 실행됩니다. 네트워크 인터페이스는 프로세스가 kill 신호를받은 다른 프로세스에게 알려줄 시간을 갖기 전에 잠잠 해졌다고 생각합니다.저 결합 병렬 프로세스에 대한 OpenMPI 사용자 정의 내결함성
MPI가 내결함성과 관련하여 많은 수준의 리소스를 제공하지 않는다는 여러 게시물을 읽었습니다. 다른 한편, 내 프로그램의 구조는 매우 간단하다 : 코드의 일부를 실행할 권한을 얻기 위해, 마스터 프로세스는 슬레이브 프로세스에 의해 쿼리된다. 마스터 프로세스는 응답 한 쿼리 수만 추적하고 상한에 도달하면 슬레이브에게 중지하도록 지시합니다. 노예들 사이에는 커플 링이 없다.
이전에 언급 한 것처럼 프로세스가 자동으로 중지되었을 때이를 감지 할 수 있기를 바랍니다. 그 경우 나는 그가하고있는 일을 여전히 살아있는 노예로 돌릴 것입니다. 사망 여부를 확인하는 간단한 방법이 있습니까? 나는 스레드와 소켓을 MPI 레이어의 나머지 부분과 독립적으로 사용하는 것을 생각했지만, 그것은 번거롭고 보입니다. 또한 마스터 프로세스 (비 스포트 인스턴스에서 시작됨)에서 각 프로세스와의 마지막 통신 시간 목록을 유지 관리하고 제한 시간을 지정하지만 슬레이브 프로세스가 종료되었음을 보장하지는 않습니다. "장벽"과 "마무리 함수가 모든 프로세스를 볼 수없고 잠재적으로 멈추는 문제도 있습니다."
내 질문은 프로세스가 조용히 죽었는지 여부를 감지하기 위해 어떤 종류의 솔루션을 구현하겠습니까? 당신은 내가 열기 MPI는 일을 할 수 정확히 모르겠어요?
사용하고있는 오픈 MPI 버전? 프로세스의 수가 감소와 호환되도록
사용 된 OpenMPI 버전은 1.4.1입니다. 만약 그들이 내결함성 메커니즘을 구현하는 간단한 방법이 아니라면, 아마 프로세스가 죽었는지 아닌지를 주기적으로 점검 할 별도의 스크립트를 생성 할 것입니다. – vkubicki