Volume 7, Issue 1 -
Spring/Summer 1999

Volume 6, Issue 3
Fall 1998

Volume 6, Issue 2
Spring/Summer 1998

Volume 6, Issue 1
Winter 1998

Volume 5, Issue 4
Fall 1997

Volume 5, Issue 3
Summer 1997

Volume 5, Issue 2
Spring 1997

Volume 5, Issue 1
Winter 1997

Volume 4, Issue 4
Fall 1996

Volume 4, Issue 3
Summer 1996

Volume 4, Issue 2
Spring 1996

Volume 4, Issue 1
Winter 1996

Volume 3, Issue 4
Fall 1995

Volume 3, Issue 3
Summer 1995

Volume 3, Issue 2
Spring 1995

Volume 3, Issue 1
January 1995

Volume 2, Issue 4
October 1994

Volume 2, Issue 3
July 1994

Volume 2, Issue 2
April 1994

Volume 2, Issue 1
January 1994

Volume 1, Issue 4
October 1993

Volume 1, Issue 3
July 1993

Volume 1, Issue 2
April 1993

Volume 1, Issue 1
January 1993

Stencil Compiler for the Thinking Machines CM-2 and CM-200

Ralph G. Brickner, Los Alamos National Laboratory; William George, Clemson University; S. Lennart Johnson, Alan Ruttenberg, Thinking Machines Corporation


A stencil is a weighted sum of circularly-shifted CM Fortran arrays. The stencil compiler optimizes the data motion between processing nodes, minimizes the data motion within a node, and minimizes the data motion between registers and local memory in a node. The compiler that was developed for this project makes novel use of the communication system and has highly optimized register use.

The stencil compiler has three major software components: customized microcode, a compiler to generate calls to the microcode and supply the precise register and memory access patterns required, and a runtime system that resolves some data distribution issues unknown at compile time and applies the microcode to a set of user arrays at run time.

Performance of the stencil compiler is highly dependent upon a number of factors including number of stencil points, stencil size and shape, data type, coefficient type and rank, and the geometries of the actual CM Fortran arrays passed in as arguments. One crucial factor is whether a given stencil will "fit" into the Floating Point Unit and sequencer register set at all, and if so, what the maximum "multiwidth" is. Here, "multiwidth" refers to the number of stencils that can be stacked together along one axis in order to re-use FPU registers along that axis. As a general consideration, the greater the multiwidth, the better the performance. If a multiwidth-one multistencil cannot be made to fit into the register set, the stencil compiler returns with an informatory message. The user is then free to decompose the stencil into smaller stencils by hand. Future work will address automatic work for such decomposition.

The compiler is available as part of the Connection Machine Scientific Software Library, Release 3.1.


Table of Contents

News | From the Director | Parallel Profile | Research Focus |
Work in Progress | Education Resources | Resources | Calendar | CRPC Home