A Compilation Scheme for a Hierarchy of Array Types

In order to achieve a high level of abstraction, array-oriented languages provide language constructs for defining array operations in a shape-invariant way. However, when trying to compile such generic array operations into efficiently executable code, static knowledge of exact shapes is essential. Therefore, modern compilers try to infer the shapes of all arrays used in a program.Unfortunately, shape inference is generally undecidable. Therefore,most compilers either rule out all programs for which shape inference fails, or they perform no shape inference at all. In the first case the expressive power of the language is restricted, in the latter the generated code has a weak runtime performance.This paper presents a new compilation scheme for the language Sac which combines these two approaches in order to avoid their individual shortcomings. A preliminary performance evaluation demonstrates the benefits of this compilation scheme.

[1]  David F. Bacon,et al.  Compiler transformations for high-performance computing , 1994, CSUR.

[2]  Donald L. Orth,et al.  Compiling APL: The Yorktown APL Translator , 1986, IBM J. Res. Dev..

[3]  Sven-Bodo Scholz On defining application-specific high-level array operations by means of shape-invariant programming facilities , 1999 .

[4]  Sven-Bodo Scholz,et al.  Single assignment C: Entwurf und Implementierung einer funktionalen C-Variante mit spezieller Unterstützung shape-invarianter Array-Operationen , 1997 .

[5]  Chuan-jie Lin Zpl language reference manual , 1994 .

[6]  Jim Weigang An introduction to STSC's APL compiler , 1985, APL '85.

[7]  Lennart Augustsson,et al.  Implementing Haskell overloading , 1993, FPCA '93.

[8]  Olivier Zendra,et al.  Efficient dynamic dispatch without virtual function tables: the SmallEiffel compiler , 1997, OOPSLA '97.

[9]  Jacques Cohen,et al.  Garbage Collection of Linked Data Structures , 1981, CSUR.

[10]  Robert Bernecky Apex: the apl parallel executor , 1997 .

[11]  James A. Brown Inside the APL2 workspace , 1985, APL '85.

[12]  C. Barry Jay Programming in FISh , 1999, International Journal on Software Tools for Technology Transfer.

[13]  Sven-Bodo Scholz On defining application-specific high-level array operations by means of shape-invariant programming facilities , 1998, APL.

[14]  Clemens Grelck,et al.  HPF vs. SAC - A Case Study (Research Note) , 2000, Euro-Par.

[15]  Timothy Budd,et al.  An APL Compiler , 1987, Springer New York.

[16]  Ross J. Anderson,et al.  HPF: A comparison of performance and programming style , 1995 .

[17]  Mark P. Jones Dictionary-free overloading by partial evaluation , 1995, LISP Symb. Comput..

[18]  Sven-Bodo Scholz,et al.  A Case Study: Effects of WITH-Loop-Folding on the NAS Benchmark MG in SAC , 1998, IFL.

[19]  Steven J. Deitz,et al.  A Comparative Study of the NAS MG Benchmark across Parallel Languages and Architectures , 2000, ACM/IEEE SC 2000 Conference (SC'00).

[20]  Kenneth E. Iverson,et al.  A programming language , 1899, AIEE-IRE '62 (Spring).