Implementing the NAS Benchmark MG in SAC

C. Grelck


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.

TitelProceedings 16th International Parallel and Distributed Processing Symposium
Herausgeber (Verlag)IEEE
ISBN (Print)0-7695-1573-8
PublikationsstatusVeröffentlicht - 01.01.2002
Veranstaltung16th International Parallel and Distributed Processing Symposium - Fort Lauderdale, USA / Vereinigte Staaten
Dauer: 15.04.200219.04.2002
Konferenznummer: 116352


Untersuchen Sie die Forschungsthemen von „Implementing the NAS Benchmark MG in SAC“. Zusammen bilden sie einen einzigartigen Fingerprint.