Most of the existing high-level array-processing languages support a fixed set of pre-defined array operations and a few higher-order functions for constructing new array operations from existing ones. In this paper, we discuss a more general approach made feasible by S AC (for Single Assignement C), a functional variant of C.S AC provides a meta-level language construct called WITH -loop which may be considered a sophisticated variant of the FORALL -loops in H PF or of array comprehensions in functional languages. It allows for the element-wise specification of high-level operations on arrays of any dimensionality: any set of high-level array operations can be specified by means of WITH -loops and be made available in a library. This not only improves the flexibility of specifications, but also simplifies the compilation process.By means of a few examples it is shown that the high-level operations that are typically available in array processing languages such as A PL or F ORTRAN 90 can be easily specified as WITH -loops in S AC . Furthermore, we briefly outline the most important optimization techniques used in the current S AC compiler for achieving efficiently executable code.The paper finally presents a performance comparison between a high-level specification for the multigrid relaxation kernel of the NAS benchmarks in S AC on the one hand and low-level specifications in S ISAL and in F ORTRAN 77 on the other hand. It shows that the S AC implementation, despite its higher level of abstraction, is competitive with the other two both in terms of program runtimes and memory consumption.
[1]
David F. Bacon,et al.
Compiler transformations for high-performance computing
,
1994,
CSUR.
[2]
David A. Padua,et al.
Advanced compiler optimizations for supercomputers
,
1986,
CACM.
[3]
Kenneth E. Iverson,et al.
A programming language
,
1899,
AIEE-IRE '62 (Spring).
[4]
Sven-Bodo Scholz,et al.
On Programming Scientific Applications in SAC - A Functional Language Extended by a Subsystem for High-Level Array Operations
,
1996,
Implementation of Functional Languages.
[5]
Alfred V. Aho,et al.
Compilers: Principles, Techniques, and Tools
,
1986,
Addison-Wesley series in computer science / World student series edition.
[6]
Timothy Budd,et al.
An APL Compiler
,
1987,
Springer New York.
[7]
Jerrold L. Wagener,et al.
Fortran 90 Handbook: Complete Ansi/Iso Reference
,
1992
.
[8]
L. Mullin.
A mathematics of arrays
,
1988
.
[9]
Wil Plouffe,et al.
An asynchronous programming language and computing machine
,
1978
.
[10]
Sven-Bodo Scholz,et al.
WITH-Loop-Folding in SAC - Condensing Consecutive Array Operations
,
1997,
Implementation of Functional Languages.
[11]
Barbara M. Chapman,et al.
Supercompilers for parallel and vector computers
,
1990,
ACM Press frontier series.
[12]
Michael Wolfe,et al.
High performance compilers for parallel computing
,
1995
.
[13]
James A. Brown.
Inside the APL2 workspace
,
1985,
APL '85.