[논문 리뷰] Support for Debugging Automatically Parallelized Programs
이 논문은 상대적 디버깅을 사용하여 순차적 실행과 병렬 실행을 비교함으로써 자동 병렬화된 프로그램에서 오류를 간편하게 식별하는 디버깅 시스템을 제시한다. 병렬화 도구의 메타데이터와 동적 인스트루멘테이션을 활용하여 사용자 노력과 오버헤드를 최소화하고, 세밀한 정도로 오류를 탐지함으로써 병렬화 과정에서 유도된 결함을 효과적으로 고립한다. 이는 디버깅 오버헤드를 크게 줄이고도 효과적인 결함 고립을 가능하게 한다.
We describe a system that simplifies the process of debugging programs produced by computer-aided parallelization tools. The system uses relative debugging techniques to compare serial and parallel executions in order to show where the computations begin to differ. If the original serial code is correct, errors due to parallelization will be isolated by the comparison. One of the primary goals of the system is to minimize the effort required of the user. To that end, the debugging system uses information produced by the parallelization tool to drive the comparison process. In particular, the debugging system relies on the parallelization tool to provide information about where variables may have been modified and how arrays are distributed across multiple processes. User effort is also reduced through the use of dynamic instrumentation. This allows us to modify the program execution without changing the way the user builds the executable. The use of dynamic instrumentation also permits us to compare the executions in a fine-grained fashion and only involve the debugger when a difference has been detected. This reduces the overhead of executing instrumentation.
연구 동기 및 목표
- 자동 병렬화 도구에 의해 생성된 프로그램을 디버깅하는 데 소요되는 복잡성과 노력의 감소를 목표로 한다.
- 순차적 실행과 병렬 실행을 비교하여 자동 병렬화 과정에서 유도된 결함을 고립하는 것을 목표로 한다.
- 병렬화 도구의 메타데이터와 동적 인스트루멘테이션을 활용하여 사용자 참여를 최소화하는 것을 목표로 한다.
- 차이점이 감지될 경우에만 실행을 세밀하게 비교하여 런타임 오버헤드를 줄이는 것을 목표로 한다.
제안 방법
- 시스템은 순차적 및 병렬 버전 프로그램의 실행 트레이스를 비교하기 위해 상대적 디버깅을 사용한다.
- 병렬화 도구로부터의 메타데이터에 의존하여 변수의 수정 여부와 프로세스 간 배열 분포를 식별한다.
- 재컴파일 없이 프로그램 동작을 수정할 수 있도록 동적 인스트루멘테이션을 적용하여 런타임 비교를 가능하게 한다.
- 실행 간의 이질성이 감지될 경우에만 디버거를 활성화함으로써 오버헤드를 줄인다.
- 실행 비교를 변수 상태 및 제어 흐름의 차이점에 집중하여 세밀한 수준에서 수행한다.
- 기존 컴파일러 및 디버깅 도구와의 통합을 통해 사용성과 툴체인 호환성을 유지한다.
실험 결과
연구 질문
- RQ1정확한 결함 위치 특정을 보장하면서도 자동 병렬화된 프로그램의 디버깅 노력은 어떻게 최소화할 수 있는가?
- RQ2병렬화 도구의 메타데이터는 디버깅 과정을 어떻게 안내할 수 있는가?
- RQ3동적 인스트루멘테이션은 순차적 및 병렬 실행 간의 효율적이고 세밀한 비교를 어떻게 지원하는가?
- RQ4기존 디버깅 방식에 비해 상대적 디버깅은 병렬화로 인한 오류 고립에 어떤 방식으로 개선을 이룰 수 있는가?
- RQ5실행 이질점에만 디버거의 참여를 제한함으로써 인스트루멘테이션의 오버헤드를 줄일 수 있는가?
주요 결과
- 원본 순차 코드가 정확하다는 가정 하에, 시스템은 순차적 및 병렬 실행을 비교함으로써 병렬화로 인한 오류를 성공적으로 고립한다.
- 병렬화 도구의 메타데이터 사용으로 디버깅 과정에서 수동 사용자 입력의 필요성이 크게 감소한다.
- 동적 인스트루멘테이션은 실행 파일을 비침습적으로 수정할 수 있게 하여 사용자의 빌드 프로세스를 그대로 유지한다.
- 실제로 차이점이 감지될 경우에만 디버거를 활성화함으로써 디버깅 오버헤드가 감소한다.
- 세밀한 비교를 통해 이질점의 정확한 위치를 특정할 수 있어 결함 진단의 효율성이 향상된다.
- AADEBUG 2000 워크숍에서의 검증을 통해 실제 디버깅 환경에서의 실용성과 타당성이 입증되었다.
더 나은 연구,지금 바로 시작하세요
논문 읽기부터 검토까지, 연구 시간을 획기적으로 줄여보세요.
카드 등록 없음 · 무료 플랜 제공
이 리뷰는 AI가 만들고, 인간 에디터가 검토했습니다.