초록
메세지 전달 병렬 프로그램은 프로세스 사이의 메세지 경합에 의하여 실행의 비결정성이 발생하여 순차 프로그램에서 널리 사용되는 순환 디버깅 기법을 사용하기 어렵다. 본 논무은 MPI 병렬 프로그램에서 비결정적 실행에 영향을 미치는 메세지 전달 사건을 정의한 후, 기본실행에서의 사건의 발생순서가 다음의 재실행시 똑 같이 유지되도록 병행실행을 순차생행으로 변환하여 결정적 재실행을 보장함으로써 실행시 마다 같은 오류가 재현되도록 한다. 또한 MPI 병렬 프로그램의 디버깅을 보다 쉽게 하기 위하여 임의의 프로세스를 정짓켰을 때, 다른 모든 프로세스는 정지점 이전에 발생한 모든 사건을 반영하는 최초의 상태에 정지하게 하는 인과관계 정지점을 구현한다. 따라서 인과관계 재실행 기법을 이용하여 병렬 프로그램에서도 순차 프로그램 환경에서와 같이 순환 디버깅 기법을 사용할 수 있게 한다.
The cyclic debugging approach often fails for message passing parallel programs because they non-deterministic characteristics due to message race conditions. This paper identifies the MPI events that affect non-deterministic executions, and then converts the concurrent execution to the sequential one that is controlled in order to make it equivalent to a reference execution by keeping their orders of events in two executions identical. This paper also presents an efficient algorithm for the causal distributed breakpoint which is initiated by any sequential breakpoint in one process, and restores each process to the earliest state that reflects all events that happened causally before the sequential breakpoint. So a cyclic debugging approach can be used in debugging MPI parallel programs as like as in debugging sequential programming environments.