A Study on Generation of Parallel Task in High Performance Language

고성능 언어에서의 병렬 태스크 생성에 관한 연구

  • Published : 1997.06.01

Abstract

In task parallel language like Fortran M, programmer writes a task parallel program using parallel constructs which is provided. When some data dependencies exist between called procedures in various applications, it is difficult for programmer to write program according to their dependencies. Therefore, it is desirous that compiler can detect some implicit parallelisms and transform a program to parallelized form by using the task parallel constructs like PROCESSES block or PROCESSDO loop of Fortran M. But current task parallel language compilers can't provide these works. In this paper, we analyze the cases according to dependence relations and detect the implicit parallelism which can be transformed to task parallel constructs like PROCESSES block and PROCESSDO loop of Fortran M. Also, For the case which program can be paralleized both PROCESSES block and PROCESSDO loop, we analyze that which construct is more effective for various conditions.

포트란 M 등의 태스크 병렬언어에서는 프로그래머가 태스크 병렬구조를 사용하여 프로그래밍한다. 그런데 응용 프로그램에서 프로시쥬어간에 종속성 관계가 존재하는 경우 프로그래머가 이 종속성을 고려하여 태스크 병렬 프로그램을 작성하기는 쉽지 않다. 그러므로 컴파일러 단계에서 묵시적 병렬성을 추출한 후, 태스크 병렬언어에서 제공하는 병렬구조로 변환하는 병렬화가 필요하다. 그러나 현재의 태스크 병렬언어 컴파일러에서는 이러한 기능을 제공하지 못하고 있다. 본 논문에서는 종속성 관계에 따라 각 경우를 분석하여, 순차 수행되어야하는 루프 구조에 대해 컴파일러 단계에서 포트란 M의 태스크 병렬 구조인 PROCESSDO 루프와 PROCESSES 블록구조로 병렬화하기 위해 묵시적 병렬성을 가지고 있는 경우를 추출하는 방안을 제안한다. 그리고 PROCESSDO 루프와 PROCESSES 블록 구조 모두로 병렬화 가능한 경우, 조건에 따라 어느 구조로 변환하는 것이 효과적인가를 분석한다.

Keywords