Abstract | 본 발명은 내포병렬성을 가진 병렬프로그램에서의 효과적인 디버깅 기법으로서 프로그램의 비결정적 수행을 최초로 초래하여 이 후에 발생하는 다른 경합에 영향을 미치는 최초경합을 프로그램 수행 중에 효율적으로 탐지하는 방법에 관한것이다. 이를 위하여 본 발명은 프로그램을 두 번 수행하여 감시할 때, 각 공유변수에 대한 접근 역사를 상수적 크기로 유지하여 각 접근 사건의 수행 시에 상수적 복잡도의 수행 시간과 기억 공간만을 요구사는 특징이 있다. 첫 번째 수행에서는 각 공유 변수의 접근사건들은 성행(happened-before) 관계와 조우(left-of) 관계로써 비교하여 접근역사 내의 접근들을 상수개로 유지하고, 접근역사 내의 사건들과 처음으로 경합을 구성하는 사건들을 최초경합을 발생시키는 후보 사건으로 수집한다. 두 번째 수행에서는 각 접근 사건들을 감시하면서 첫 번째 수행에서 수집된 후보사건들과의 선행관계와 좌우 관계를 검사하여 최초경합을 구성하는 후보사건들의 집합을 완성하여 최초경합으로 보고한다. 본 발명은 기존의 기법과는 달리, 각 접근 사건의 수행 시에 프로그램의 최대병렬성에 무관하게 상수적 복잡도의 사건비교 횟수와 기억 공간만으로 수행중 최초경합 탐지를 보장하므로, 내포병렬성을 가진 공유메모리 병렬프로그램의 디버깅을 위해서 효율적이고 실용적인 경합탐지를 가능하게 한다. |