A uniform way of reasoning about array-based computation in radar: Algebraically connecting the hardware/software boundary

Embedded software processing requirements will exceed 1 trillion operations per second in the 2005-2010 time frame. Consequently, efficient use of processors and memory, at all levels, is essential. In many defense environments, e.g., radar, as well as medical and other real-time embedded systems, operations are primarily array-based. Although languages support high level, monolithic, array based computation through classes, functions, templates (C++), and grammars (Fortran 95, ZPL), limited optimizations occur to eliminate array valued temporaries, which for embedded real time systems, is enormous. Without an underlying theory of arrays, e.g., an algebra and index calculus, it is difficult, if not impossible to provide such optimizations. This paper presents a Mathematics of Arrays and Psi Calculus. Together they are used to reason about array based computation in radar; the algorithm, decomposition, mapping to processors and memory, performance.

[1]  Todd L. Veldhuizen C++ Templates as Partial Evaluation , 1999, PEPM.

[2]  John Feo,et al.  SISAL reference manual. Language version 2.0 , 1990 .

[3]  A. Church The calculi of lambda-conversion , 1941 .

[4]  Izzet Kale,et al.  Simulink/Matlab-to-VHDL Route for Full-Custom/FPGA Rapid Prototyping of DSP Algorithms , 1999 .

[5]  Henk Barendregt,et al.  Introduction to Lambda Calculus , 1984 .

[6]  Alex K. Jones,et al.  A MATLAB compiler for distributed, heterogeneous, reconfigurable computing systems , 2000, Proceedings 2000 IEEE Symposium on Field-Programmable Custom Computing Machines (Cat. No.PR00871).

[7]  A. Church The Calculi of Lambda Conversion. (AM-6) (Annals of Mathematics Studies) , 1985 .

[8]  Lenore M. R. Mullin Psi, the Indexing Function: a basis for FFP with arrays , 1991 .

[9]  David Turner An overview of Miranda , 1986, SIGP.

[10]  Frederick J. Hill,et al.  Digital systems: hardware organization and design , 1973 .

[11]  W. Eatherton,et al.  An FPGA Based Reconfigurable Coprocessor Board Utilizing a Mathematics of Arrays , 1995, Third International ACM Symposium on Field-Programmable Gate Arrays.

[12]  Robert Bond,et al.  Monolithic Compiler Experiments Using C++ Expression Templates , 2002 .

[13]  E.M.R.M. Paalvast,et al.  Programming for Parallelism and Compiling for Efficiency , 1992 .

[14]  Jay Earley,et al.  An efficient context-free parsing algorithm , 1970, Commun. ACM.

[15]  J. J. Sylvester,et al.  Lectures on the Principles of Universal Algebra , 1883 .

[16]  Gaétan Hains,et al.  Parallel Functional Programming with Arrays , 1993, Comput. J..

[17]  K. Keane,et al.  A MATLAB to VHDL Conversion Toolbox for Digital Control , 2000 .

[18]  Kenneth E. Iverson,et al.  A Formal Description of SYSTEM/360 , 1964, IBM Syst. J..

[19]  Alan J. Perlis,et al.  FAC: A Functional APL Language , 1986, IEEE Software.

[20]  Michael Leuschel Proceedings of the 2003 ACM SIGPLAN Workshop on Partial Evaluation and Semantics-based Program Manipulation, 2003, San Diego, California, USA, June 7, 2003 , 2003, PEPM.

[21]  Todd L. Veldhuizen,et al.  Expression templates , 1996 .

[22]  M. A. Jenkins,et al.  Effective data parallel computation using the Psi calculus , 1996 .

[23]  R. H. Lathwell System Formulation and APL Shared Variables , 1973, IBM J. Res. Dev..

[24]  Sven-Bodo Scholz,et al.  On Programming Scientific Applications in SAC - A Functional Language Extended by a Subsystem for High-Level Array Operations , 1996, Implementation of Functional Languages.

[25]  Alfred V. Aho,et al.  Compilers: Principles, Techniques, and Tools , 1986, Addison-Wesley series in computer science / World student series edition.

[26]  Jeremy Kepner,et al.  PVL: an object oriented software library for parallel signal processing , 2001, Proceedings 42nd IEEE Symposium on Foundations of Computer Science.

[27]  A. Turing,et al.  On Computable Numbers, with an Application to the Entscheidungsproblem. A Correction , 1938 .

[28]  Ed F. Deprettere,et al.  Compilation from Matlab to process networks realised in FPGA , 2001 .

[29]  J. W. Backus,et al.  The FORTRAN automatic coding system , 1899, IRE-AIEE-ACM '57 (Western).

[30]  Rice UniversityCORPORATE,et al.  High performance Fortran language specification , 1993 .

[31]  Harry B. Hunt,et al.  On Materializations of Array-Valued Temporaries , 2000, LCPC.

[32]  Philip S. Abrams,et al.  An APL machine , 1970 .

[33]  S. Kleene $\lambda$-definability and recursiveness , 1936 .

[34]  Robert S. Boyer,et al.  Proving Theorems about LISP Functions , 1973, JACM.

[35]  Gene H. Golub,et al.  Matrix computations , 1983 .

[36]  David C. Cann,et al.  Retire Fortran?: a debate rekindled , 1992, CACM.

[37]  E. A. Ashcroft Towards an APL compiler , 1974, APL '74.

[38]  Janice I. Glasgow,et al.  A Logical Basis for Nested Array Data Structures , 1989, Comput. Lang..

[39]  Jeremy G. Siek,et al.  The Matrix Template Library: A Generic Programming Approach to High Performance Numerical Linear Algebra , 1998, ISCOPE.

[40]  Simon L. Peyton Jones,et al.  Report on the programming language Haskell: a non-strict, purely functional language version 1.2 , 1992, SIGP.

[41]  Timothy A. Budd,et al.  An APL Compiler for a Vector Processor , 1984, TOPL.

[42]  Susan Lucille Gerhart,et al.  Verification of apl-programs. , 1972 .

[43]  Gaétan Hains,et al.  Arrays, Functional Languages, and Parallel Systems , 1991, Springer US.

[44]  Jack B. Dennis,et al.  VAL -- A Value-Oriented Algorithmic Language (Preliminary Reference Manual), , 1979 .

[45]  Jaeyoung Choi,et al.  Design and Implementation of the ScaLAPACK LU, QR, and Cholesky Factorization Routines , 1994, Sci. Program..

[46]  Trenchard More,et al.  Axioms and Theorems for a Theory of Arrays , 1973, IBM J. Res. Dev..

[47]  Daniel J. Rosenkrantz,et al.  Compiler design theory , 1976 .

[48]  Wang Chen,et al.  An FPGA implementation of the two-dimensional finite-difference time-domain (FDTD) algorithm , 2004, FPGA '04.

[49]  Michael R. Lowry,et al.  A formal approach to domain-oriented software design environments , 1994, Proceedings KBSE '94. Ninth Knowledge-Based Software Engineering Conference.

[50]  Todd L. Veldhuizen,et al.  Arrays in Blitz++ , 1998, ISCOPE.

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

[52]  William Celmaster Modern Fortran Revived as the Language of Scientific Parallel Computing , 1996, Digit. Tech. J..

[53]  Lenore M. Restifo Mullin,et al.  Formal method for scheduling, routing and communication protocol , 1993, [1993] Proceedings The 2nd International Symposium on High Performance Distributed Computing.

[54]  Klaus Berkling Arrays and the Lambda Calculus , 1991 .

[55]  Todd L. Veldhuizen,et al.  Using C++ template metaprograms , 1996 .

[56]  Adin D. Falkoff Algorithms for Parallel-Search Memories , 1962, JACM.

[57]  Terrence C. Miller Tentative compilation: A design for an APL compiler , 1979 .

[58]  Frederick J. Hill,et al.  Digital systems: hardware organization and design (3rd ed.) , 1987 .

[59]  Sharon G. Small,et al.  Four Easy Ways to a Faster FFT , 2002, J. Math. Model. Algorithms.

[60]  K. A. Gallivan,et al.  Parallel Algorithms for Dense Linear Algebra Computations , 1990, SIAM Rev..

[61]  Todd L. Veldhuizen Just When You Thought Your Little Language Was Safe: "Expression Templates" in Java , 2000, GCSE.

[62]  Leonidas J. Guibas,et al.  Compilation and delayed evaluation in APL , 1978, POPL.