Abstract
SAC is a purely functional array processing language designed with numerical applications in mind. It supports generic, high-level program specifications in the style of APL. However, rather than providing a fixed set of built-in array operations, SAC provides means to specify such operations in the language itself in a way that still allows their application to arrays of any dimension and size. This paper illustrates the specificational benefits of this approach by means of a high-level SAC implementation of the NAS benchmark MG realizing 3-dimensional multigrid relaxation with periodic boundary conditions. Despite the high-level approach, experiments show that by means of aggressive compiler optimizations SAC manages to achieve performance characteristics in the range of low-level Fortran and C implementations. For benchmark size class A, SAC is outperformed by the serial Fortran-77 reference implementation of the benchmark by only 23%, whereas SAC itself outperforms a C implementation by the same figure. Furthermore, implicit parallelization of the SAC code for shared memory multiprocessors achieves a speedup of 7.6 with 10 processors. With these figures, SAC outperforms both automatic parallelization of the serial Fortran-77 reference implementation as well as an OpenMP solution based on C code.
Original language | English |
---|---|
Title of host publication | Proceedings 16th International Parallel and Distributed Processing Symposium |
Number of pages | 1 |
Publisher | IEEE |
Publication date | 01.01.2002 |
Pages | 104-104 |
Article number | 1016488 |
ISBN (Print) | 0-7695-1573-8 |
DOIs | |
Publication status | Published - 01.01.2002 |
Event | 16th International Parallel and Distributed Processing Symposium - Fort Lauderdale, United States Duration: 15.04.2002 → 19.04.2002 Conference number: 116352 |