Array Language Support for Wavefront and Pipelined Computations

Bradford L. Chamberlain
E Christopher Lewis
Lawrence Snyder

University of Washington Technical Report UW-CSE-98-11-02
(revised version published at LCPC'99)

Abstract: Array Languages such as Fortran 90, High Performance Fortran and ZPL are convenient vehicles for expressing data parallel computation. Unfortunately, array language semantics prohibit the natural expression of wavefront and pipelined computations, characterized by a sequential propagation of computed values across one or more dimensions of the problem space. As a result, programmers scalarize (i.e., use loop nests and scalar indexing instead of array operations) wavefront computations, sacrificing the benefits of the array language. We propose an extension to array languages that provides support for wavefront computation without scalarization and with minimal impact on the language. Our extension is particularly valuable in that it identifies parallelism to both the programmer and the compiler just as conventional array operations do. In this paper we motivate the problem, introduce our language extension, describe its implementation in the ZPL data parallel array language compiler, and experimentally evaluate the parallel performance improvement due to its optimization for parallelism.

postscript | PDF