Compiler Technology for Parallel Scientific Computation C. Ozturan Balaram Sinharoy Boleslaw K. Szymanski There is a need for compiler technology that, given the source program, will generate efficient parallel codes for different architectures with minimal user involvement. Parallel computation is becoming indispensable in solving large-scale problems in science and engineering. Yet, the use of parallel computation is limited by the high costs of developing the needed software. To overcome this difficulty we advocate a comprehensive approach to the development of scalable architecture-independent software for scientific computation based on our experience with Equational Programming Language, EPL. Our approach is based on a program decomposition, parallel code synthesis and run-time support for parallel scientific computations. The program decomposition is guided by the source program annotations provided by the user. The synthesis of parallel code is based on configurations that describe the overall computation as a set of interacting components. Run-time support is provided by the compiler-generated code that redistributes computation and data during object program execution. The generated parallel code is optimized using techniques of data alignment, operator placement, wavefront determination and memory optimization. In this paper we discuss annotations, configurations, parallel code generation and run-time support suitable for parallel programs written in the functional parallel programming language EPL and in Fortran. Department of Computer Science, Rensselaer Polytechnic Institute, Troy, NY cs-92-34
Compiler Technology for Parallel Scientific Computation
C. Ozturan
Balaram Sinharoy
Boleslaw K. Szymanski
There is a need for compiler technology that, given the source program, will generate efficient parallel codes for different architectures with minimal user involvement. Parallel computation is becoming indispensable in solving large-scale problems in science and engineering. Yet, the use of parallel computation is limited by the high costs of developing the needed software. To overcome this difficulty we advocate a comprehensive approach to the development of scalable architecture-independent software for scientific computation based on our experience with Equational Programming Language, EPL. Our approach is based on a program decomposition, parallel code synthesis and run-time support for parallel scientific computations. The program decomposition is guided by the source program annotations provided by the user. The synthesis of parallel code is based on configurations that describe the overall computation as a set of interacting components. Run-time support is provided by the compiler-generated code that redistributes computation and data during object program execution. The generated parallel code is optimized using techniques of data alignment, operator placement, wavefront determination and memory optimization. In this paper we discuss annotations, configurations, parallel code generation and run-time support suitable for parallel programs written in the functional parallel programming language EPL and in Fortran.
Department of Computer Science, Rensselaer Polytechnic Institute, Troy, NY
cs-92-34