A parallel programming aid, KAPPA, which provides a paralled programming environment and tools for message passing multicomputer system are implemented in this thesis. KAPPA is designed for KAICUBE II, a message passing multicomputer system of hypercube topology.
The programming model for KAPPA allows the user to develop parallel programs more easily through the augmented programming language based on the C programming language. KAPPA detects dependence relations in the source program so as to generate a Macro Dataflow Graph (MDG) which encapsulates the parallel nature of a given program. Then, KAPAA schedules this graph to reduce the execution time within given number of processors. Finally, a parallel code for the target computer system is generated, which is efficient and suitable for the target system. For the performance estimation, a hypercube computer simulator is embedded in KAPPA. A graphical user interface using X-window system is provided to help users get the information easily.
KAPPA relieves the large amount of the tedious and routine tasks of the programmer so that they can devote themselves to the more creative jobs like the development of the more efficient algorithms. The efficiency of the generated parallel code is high enough to be comparable with that of the code designed by the experienced programmer. Moreover, as the size and complexity of the program increases, it outperforms that of manually written code in performance.
In consequence, KAPPA can be used as a workbench in which the programmer is able to develop a parallel program, translate it into the conventional parallel program of the KAICUBE II, and finally pre-execute to get the information about the performance estimates of a given program.
본 논문에서는 메시지 전달형 다중 컴퓨터를 위한 프로그래밍 환경인 KAPPA 의 설계와 구현에 대해 기술하였다. KAPPA 는 하이퍼큐브 구조의 연결 형태를 갖는 메시지 전달형 다중 컴퓨터인 KAICUBE II 를 위하여 제작되었다.
KAPPA 에서는 C 프로그래밍 언어에 기초한 병렬 프로그래밍 언어가 제공되며, 프로그래머는 이의 도움으로 효율적인 병렬 프로그램을 보다 쉽게 작성할 수 있다. KAPPA는 주어진 프로그램에 대한 연관성 분석을 통하여, 프로그램의 병렬성에 대한 정보를 담고 있는 매크로 데이타 흐름 그래프 (MDG) 를 생성한다. 그다음으로, 이 그래프의 각 노드를 전체 수행 시간이 최소가 되도록 수행 순서를 결정하고 각 노드 프로세서에 할당하는 작업인 스케쥴링을 행한다. 마지막으로, 스케쥴링의 결과에 따라 목적 시스템에 적합한 효율적인 병렬 프로그램이 생성된다. 이 외에도, 생성된 프로그램의 성능 분석을 위하여 하이퍼큐브 컴퓨터의 시뮬레이터가 제공되며, 프로그래머가 병렬 프로그램에 대한 정보를 보다 쉽게 얻을 수 있게 하기 위하여 X 윈도우 상에서 동작하는 그래픽 사용자 환경이 제공된다.
프로그래머는 많은 양의 단순하고 반복적인 작업을 KAPPA 를 이용하여 쉽게 처리할 수 있기 때문에 알고리즘의 개선 등과 같은 보다 창조적인 작업에 전념할 수 있다. KAPPA에 의하여 생성된 프로그램은 숙련된 프로그래머에 의해 작성된 프로그램에 비교할 수 있을 만큼 효율적이며, 특히 프로그램이 크고 복잡한 경우에는 오히려 더 좋은 성능을 가진다.
결론적으로, KAPPA 는 병렬 프로그램의 개발을 위한 통합 환경을 제공하여 프로그래머가 보다 손쉽게 효율적인 병렬 프로그램을 작성할 수 있도록 하여 준다.