The Data Field Model

Indexed data structures are prevalent in many programming applications. Collection-oriented languages provide means to operate directly on these structures , rather than having to loop or recurse through them. This style of programming will often yield clear and succinct programs. However, these programming languages will often provide only a limited choice of indexed data types and primitives, and the exact semantics of these primitives will sometimes vary with the data type and language. In this paper we develop a unifying semantical model for indexed data structures. The purpose is to support the construction of abstract data types and language features for such structures from rst principles, such that they are largely generic over many kinds of data structures. The use of these abstract data types can make programs and their semantics less dependent of the actual data structure. This makes programs more portable across diierent architectures and facilitates the early design phase. The model is a general-isation of arrays, which we call data elds: these are functions with explicit information about their domains. This information can be conventional array bounds but it could also deene other shapes, for instance sparse. Data elds can be interpreted as partial functions, and we deene a metalanguage for partial functions. In this language we deene abstract versions of collection-oriented operations, and we show a number of identities for them. This theory is used to guide the design of data elds and their operations so they correspond closely to the more abstract notion of partial functions. We deene '-abstraction, a lambda-like syntax for deening data elds in a shape-independent manner, and prove a theorem which relates '-abstraction and-abstraction semantically. We also deene a small data eld language whose semantics is given by formal data elds, and give examples of data eld programming for parallel algorithms with arrays and sparse structures, database quering and computing, and speciication of symbolic drawings.

[1]  Guy L. Steele,et al.  Data parallel computers and the FORALL statement , 1990, [1990 Proceedings] The Third Symposium on the Frontiers of Massively Parallel Computation.

[2]  Anders Lansner,et al.  Implementations of Very Large Recurrent ANNs on Massively Parallel SIMD Computers , 1992 .

[3]  Guy E. Blelloch,et al.  Collection-oriented languages , 1991 .

[4]  Björn Lisper,et al.  Development of Parallel Algorithms in Data Field Haskell (Research Note) , 2000, Euro-Par.

[5]  David C. Cann,et al.  A Report on the Sisal Language Project , 1990, J. Parallel Distributed Comput..

[6]  Patrice Quinton,et al.  Derivation of Data Parallel Code from a Functional Program , 1994 .

[7]  Simon Peyton Jones Bulk types with class , 1996 .

[8]  Glynn Winskel,et al.  The formal semantics of programming languages - an introduction , 1993, Foundation of computing series.

[9]  David Turner,et al.  Functional Programming and Communicating Processes , 1987, PARLE.

[10]  Leslie G. Valiant,et al.  A bridging model for parallel computation , 1990, CACM.

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

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

[13]  Jan Willem Klop,et al.  Combinatory reduction systems , 1980 .

[14]  A. D. Falkoff,et al.  The design of APL , 1973, APLQ.

[15]  John W. Backus,et al.  Can programming be liberated from the von Neumann style?: a functional style and its algebra of programs , 1978, CACM.

[16]  Johan Jeuring,et al.  PolyP—a polytypic programming language extension , 1997, POPL '97.

[17]  David B. Skillicorn Building BSP Programs Using the Refinement Calculus , 1998, IPPS/SPDP Workshops.

[18]  Bradford L. Chamberlain,et al.  The case for high-level parallel programming in ZPL , 1998 .

[19]  Jan Willem Klop,et al.  Term Rewriting Systems: From Church-Rosser to Knuth-Bendix and Beyond , 1990, ICALP.

[20]  Walter S. Brainerd,et al.  Programmer's guide to Fortran 90 , 1990 .

[21]  Richard S. Bird,et al.  A calculus of functions for program derivation , 1990 .

[22]  Björn Lisper,et al.  Data Parallelism and Functional Programming , 1996, The Data Parallel Programming Model.

[23]  Luigi Semenzato,et al.  Arrays in FIDIL , 1991 .

[24]  Björn Lisper,et al.  On the relation between functional and data parallel programming languages , 1993, FPCA '93.

[25]  Patrice Quinton,et al.  Deriving imperative code from functional programs , 1995, FPCA '95.

[26]  Vincent van Oostrom,et al.  Combinatory Reduction Systems: Introduction and Survey , 1993, Theor. Comput. Sci..

[27]  David Maier,et al.  The Theory of Relational Databases , 1983 .

[29]  David R. Musser,et al.  STL tutorial and reference guide , 2001 .

[30]  Patrice Quinton,et al.  A Language-oriented Approach to the Design of Systolic Chips , 1991 .

[31]  J. Robin B. Cockett,et al.  Shapely Types and Shape Polymorphism , 1994, ESOP.

[32]  Kattamuri Ekanadham A perspective on Id , 1991 .

[33]  Claes Thornberg Towards polymorphic type inference with elemental function overloading , 1999 .

[34]  Murray Cole,et al.  Algorithmic Skeletons: Structured Management of Parallel Computation , 1989 .

[35]  Jonas Holmerin Development and Veriication of Parallel Algorithms in the Data Field Model , 2000 .

[36]  Florin Dobrian,et al.  The design of sparse direct solvers using object-oriented techniques , 1999 .

[37]  Marina Chien-mei Chen Space-time Algorithms: Semantics and Methodology , 1983 .

[38]  Joseph A. Goguen,et al.  Initial Algebra Semantics and Continuous Algebras , 1977, J. ACM.

[39]  Paul Steckler,et al.  The Functional Imperative: Shape! , 1998, ESOP.

[40]  V. Strassen Gaussian elimination is not optimal , 1969 .

[41]  D. Skillicom Architecture-independent parallel computation , 1990 .

[42]  W. Daniel Hillis,et al.  Connection Machine Lisp: fine-grained parallel symbolic processing , 1986, LFP '86.

[43]  Marina Chen,et al.  Crystal: theory and pragmatics of generating efficient parallel code , 1991 .

[44]  Boleslaw K. Szymanski,et al.  Parallel functional languages and compilers , 1991 .

[45]  Eva Part-Enander,et al.  The Matlab Handbook , 1996 .

[46]  John Hughes,et al.  Lazy Memo-functions , 1985, FPCA.

[47]  Sergei Gorlatch,et al.  Extracting and Implementing List Homomorphisms in Parallel Program Development , 1999, Sci. Comput. Program..

[48]  Jean-Jacques Lévy,et al.  Full abstraction for sequential languages : The states of the art , 1983 .

[49]  Björn Lisper,et al.  Data Field Haskell , 2001, Haskell.

[50]  Bruno Courcelle,et al.  Recursive Applicative Program Schemes , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[51]  W. Daniel Hillis,et al.  Data parallel algorithms , 1986, CACM.

[52]  Jean-Claude Raoult,et al.  Operational and Semantic Equivalence Between Recursive Programs , 1980, JACM.

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

[54]  Alan Stewart,et al.  The Automated Transformation of Abstract Specifications of Numerical Algorithms into Efficient Array Processor Implementations , 1997, Sci. Comput. Program..