On defining application-specific high-level array operations by means of shape-invariant programming facilities

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.