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.

Original languageEnglish
Title of host publicationProceedings 16th International Parallel and Distributed Processing Symposium
Number of pages1
Publication date01.01.2002
Article number1016488
ISBN (Print)0-7695-1573-8
Publication statusPublished - 01.01.2002
Event16th International Parallel and Distributed Processing Symposium - Fort Lauderdale, United States
Duration: 15.04.200219.04.2002
Conference number: 116352


Dive into the research topics of 'Implementing the NAS Benchmark MG in SAC'. Together they form a unique fingerprint.

Cite this