Parallel Machine에 있어서의 Functional, Declarative 언어의 Algorithm

Algorithm for Functional and Declarative Language in Parallel Machine

  • 김진수 (배재대학교 국제산업대학 전자계산학과)
  • Kim, Jin-Su (Dept. of Computer Science, Pai Chai University)
  • 발행 : 1992.09.30

초록

사용자의 관점에서 볼때는 compiler가 parallelism을 발견할 수 있게 하는것이 매우 요구되지만, 아무리 잘 만들어진 compiler 라 할지라도 conditional, functional 또는 I/O statement 등 프로그램내에 존재하는 많은 parallelism을 인식 하기가 결코 쉬운 일이 아니다. 경우에 따라서는 compiler의 parallelism 결정이 곤란할경우 사용자에게 feedback 시키는 경우가 종종 있다. 이런 입장에서 프로그래머는 parallelism을 바로 전달하기 위해서 프로그램의 일부를 재구성 시킬 필요가 자주 발생한다. 그러한 관점에서 Functional, Declarative 언어의 잇점이 있다고 할 수 있고, 그러기 위해서는 paralled machine에 적합한 Algorithm 이 필요하다. 그러나, 이미 사용중인 Algorithm이 Parallel Machine에 부적절 하다는 것을 의미 하는것은 아니다. 본 연구에서는, Fortran을 이용하여 Parallel Algorithm을 구현 시키기위한 Declarative 언어에 있어서 Array 및 Matrix 를 다루기위한 Abstraction 방법을 제시 하고자 한다.

Detection of parallelism by a compiler is very desirable from a user's point of view. However, even the most sophisticated techniques to detect parallelism trip on trivial impediments, such as conditionals, function calls, and input/output statements, fail to detect most of the parallelism present in a program. Some parallelizing compilers provide feedback to the user when they have difficulty in deciding about parallel execution. Under these circumstances, a programmer has to restructure the source code to aid the detection of parallelism. But, functional and declarative languages can be said to offer many advantages in this context. Functional programs are easier to reason about because their output is determinate, that is, independent of the order of evaluation. However, functional languages traditionally have lacked good facilities for manipulating arrays and matrices. In this paper, a declarative language called Id has been proposed as a solution to some of these problems.

키워드