A Systolizing Compiler

We present an automatic scheme to generate programs for distributed-memory multiprocessors. We begin with a source program that contains no references to concurrency or communication. The source program corresponds to a systolic array: as such, it is a nested loop program with regular data dependences. The loop bounds may be any linear function of enclosing indices and of variables representing the problem size. The target programs are in an abstract syntax that can be translated to any distributed programming language with asynchronous parallelism and rendezvous communication; so far, a translator to occam 2 has been completed. The scheme is based on a formal theory of linear transformations and has been formally verified. The complexity of the scheme is independent of the problem size. It has been implemented. In contrast to other compilation methods, the scheme derives every aspect of the distributed program, including i/o and communication directives. It represents the first complete software realization of general systolic arrays.

[1]  Robin Milner,et al.  Communication and concurrency , 1989, PHI Series in computer science.

[2]  S. Kung,et al.  VLSI Array processors , 1985, IEEE ASSP Magazine.

[3]  David L. Kuck,et al.  The Structure of Computers and Computations , 1978 .

[4]  Leslie Lamport,et al.  The parallel execution of DO loops , 1974, CACM.

[5]  D.I. Moldovan,et al.  On the design of algorithms for VLSI systolic arrays , 1983, Proceedings of the IEEE.

[6]  Guy L. Steele,et al.  Common Lisp the Language , 1984 .