## A Transformational Approach which Combines Size Inference and Program Optimization (2001)

### Cached

### Download Links

- [www.infosun.fmi.uni-passau.de]
- [www.infosun.fmi.uni-passau.de]
- [www.infosun.fim.uni-passau.de]
- DBLP

### Other Repositories/Bibliography

Venue: | SEMANTICS, APPLICATIONS, AND IMPLEMENTATION OF PROGRAM GENERATION (SAIG’01), LECTURE NOTES IN COMPUTER SCIENCE 2196 |

Citations: | 5 - 0 self |

### BibTeX

@INPROCEEDINGS{Herrmann01atransformational,

author = {Christoph A. Herrmann and Christian Lengauer},

title = {A Transformational Approach which Combines Size Inference and Program Optimization},

booktitle = {SEMANTICS, APPLICATIONS, AND IMPLEMENTATION OF PROGRAM GENERATION (SAIG’01), LECTURE NOTES IN COMPUTER SCIENCE 2196},

year = {2001},

publisher = {Springer-Verlag}

}

### OpenURL

### Abstract

### Citations

533 | Concrete Mathematics
- Graham, Knuth, et al.
- 1994
(Show Context)
Citation Context ...ng kind, where # # # and # # # # #: #### # # # # if ### ###### # #### # otherwise # # # # # # ### #### If # is a polynomial or another simple kind of function, we can eliminate the summation operator =-=[14-=-]. E.g., if the size function originates from attening a triangular matrix, wehave###and ######. In this case, we obtain: #### # ## # # ### # # ### ### # Size Inference and Program Optimization 213 We... |

355 |
Cousot and Radhia Cousot. Abstract Interpretation: A Unified Lattice Model for Static Analysis of Programs by Construction or Approximation of Fixpoints
- Patrick
- 1977
(Show Context)
Citation Context ...nt aggregate data structure in functional programming, and it has a rich theory [3, 28]. As Lisper and Collard [24] have pointed out, size inference can be viewed as a form of abstract interpretation =-=[8]-=-. One kind of abstract information of a list is its length. The length function is a monoid homomorphism that maps from the concrete domain of lists to the abstract domain of natural numbers. The empt... |

289 | Dependent types in practical programming
- Xi, Pfenning
- 1999
(Show Context)
Citation Context ...ween types and sizes. Bell and Moggi [2] apply size inference in an intermediate language with a two-level type system that distinguishes between compile-time and runtime values [27]. Xi and Pfenning =-=[32]-=- use dependent types and perform type checking modulo constraint satisfaction. Singleton types enable the generation of lists of a particular size, dependent on integer values. Jay and Sekanina [23] d... |

145 | Parallel Programming Using Skeleton Functions
- Darlington, Field, et al.
- 1992
(Show Context)
Citation Context ...e graph reduction), which are at a higher level of abstraction. We propose to construct programs by composition of skeletons, i.e., functional building blocks with a predened, ecient implementation [9=-=-=-]. From the view 200 Christoph A. Herrmann and Christian Lengauer of the source program, they are higher-order functions which are instantiated with problem-specic, customizing functions. We implement... |

141 | Views: a way for pattern matching to cohabit with data abstraction
- Wadler
- 1987
(Show Context)
Citation Context ...n elementby index directly. Our new repre202 Christoph A. Herrmann and Christian Lengauer sentation of lists has consequences for element access beyond program analysis. In his views approach, Wadler =-=[31]-=- proposes pattern matching with constructors that do not form the representation of the data structure. We apply this principle to lists: the representation is subject to optimization by the compiler,... |

121 | Proving the Correctness of Reactive Systems Using Sized Types
- Hughes, Pareto, et al.
(Show Context)
Citation Context ...int calculation. Size Inference and Program Optimization 203 (b) Others perform type inference rst, to keep it decidable, and then infer sizes based on the type information. Hughes, Pareto and Sabry [=-=22]-=- employ three separate, successive steps: (1) Hindley-Milner inference, (2) derivation of the size information and (3) constraint solving. Loidl and Hammond [25] followed this approach. Our initial at... |

85 | A type system for bounded space and functional in-place update
- Hofmann
- 2000
(Show Context)
Citation Context ...al with all program values but cannot be used to dene sizes. A surprisingly large class of programs can be handled with this approach: all usual array indexing operations and linear algebra. Hofmann [=-=21-=-] uses a linear type system to control the size of lists and permit an in-place update which is especially useful for sorting. Chin and Khoo [6] infer the sizes of recursive functions bya xed-point ca... |

59 | Powerlist: A structure for parallel recursion
- Misra
- 1994
(Show Context)
Citation Context ...pattern matching of a list against its size and its indexing function. We took the idea of such non-standard list constructors from cons-snoc lists and distributable homomorphisms [13] and powerlists =-=[26]-=-. In contrast to them, our approach strictly separates length and content of a list, with the need to add auxiliary functions to the program, mapping list indices to elements. Later in the compilation... |

58 |
Algebraic identities for program calculation
- Bird
- 1989
(Show Context)
Citation Context ...s. The result of the analysis can then be used for optimization by program transformations, e.g., intermediate lists could be eliminated, similar to deforestation or map distribution over composition =-=[3-=-]. The transformations provide the basis for a renewed size inference and subsequent optimization, in an iterative process which terminates according to criteria specied by compiler settings or direct... |

52 | Calculating sized types
- Chin, Khoo
- 2001
(Show Context)
Citation Context ...l array indexing operations and linear algebra. Hofmann [21] uses a linear type system to control the size of lists and permit an in-place update which is especially useful for sorting. Chin and Khoo =-=[-=-6] infer the sizes of recursive functions bya xed-point calculation. Size Inference and Program Optimization 203 (b) Others perform type inference rst, to keep it decidable, and then infer sizes based... |

45 |
and Hanne Riis Nielson. Two-Level Functional Languages, volume 34 of Cambridge Tracts
- Nielson
- 1992
(Show Context)
Citation Context ... strong connection between types and sizes. Bell and Moggi [2] apply size inference in an intermediate language with a two-level type system that distinguishes between compile-time and runtime values =-=[27]-=-. Xi and Pfenning [32] use dependent types and perform type checking modulo constraint satisfaction. Singleton types enable the generation of lists of a particular size, dependent on integer values. J... |

34 |
Isomorphisms of types: from *-calculus to in-formation retrieval and language design. Birkhauser
- Cosmo
- 1995
(Show Context)
Citation Context ...te a data type. Lemma 1 (Existence of an index/length basis). All nite lists can be expressedinabasis which makes their length and their indexing function explicit. #####. By an isomorphism of types [=-=1-=-1] induced by the functions to-# and from-# dened below. The domain of to-# is the set of all nite lists, the codomain is restricted to the image of to-# and is taken for the domain of from-# . map ap... |

32 | Type-driven defunctionalization
- Bell, Bellegarde, et al.
- 1994
(Show Context)
Citation Context ...hat these parts can be linked together with the skeleton implementations. In this process, the most important step is the replacement of functional arguments by data structures of the source language =-=[1]-=-. Aside from instantiation of skeletons, functional arguments should be used moderately since they incur overhead and might introduce undesired dependences. Recursion should be replaced by skeletons, ... |

30 |
On the relation between functional and data-parallel programming languages, in
- Lisper, Hammarlund
- 1993
(Show Context)
Citation Context ...ctures, i.e., a list may be eliminated, fused with some other list, represented by an array, reproduced by a function, etc. Data aggregates treated in such an abstract fashion are known as data elds [=-=15, 24-=-]. As far as we know, we are the rst to derive compile-time information about each element of a list in terms of its position. This is possible by a symbolic representation of a function mapping indic... |

24 | A sized time system for a parallel functional language
- Loidl, Hammond
- 1996
(Show Context)
Citation Context ... information. Hughes, Pareto and Sabry [22] employ three separate, successive steps: (1) Hindley-Milner inference, (2) derivation of the size information and (3) constraint solving. Loidl and Hammond =-=[25-=-] followed this approach. Our initial attempts were similar [17], but we recognized that the treatment of nested lists in the type information leads to a formalism which is dicult to apply.Now, we are... |

22 |
From transistors to computer architecture: Teaching functional circuit specification in hydra
- O'Donnell
- 1995
(Show Context)
Citation Context ...e result depends on its position. 6.1 Types and Representation In order to make the maximal amount of information statically derivable, our programs resemble specications of abstract digital designs [=-=7, 10, 2-=-9]. The basic arithmetic functions which are not presented here are producing output lists that depend statically on the size of input lists. E.g., a function which adds two numbers delivers a sum who... |

20 | Shape checking of array programs
- Jay, Sekanina
- 1997
(Show Context)
Citation Context ...g [32] use dependent types and perform type checking modulo constraint satisfaction. Singleton types enable the generation of lists of a particular size, dependent on integer values. Jay and Sekanina =-=[23]-=- describe type checking in a language VEC on vectors, which distinguishes between so-called shapely types and nonshapelystypes. They distinguish two kinds of conditionals. The shapely conditional, whi... |

16 | Size and access inference for data-parallel programs
- Chatterjee, Blelloch, et al.
- 1991
(Show Context)
Citation Context ...n is easier to use than annotations of the type language with size expressions. The size information, expressed in terms of structural parameters, is derived by following the data ow of the function [=-=4]-=-. Our choice of a referentially transparent language enables a local analysis of each function. Where a function # is applied to an argument #, the size information of the result can often be computed... |

16 |
Tupling functions with multiple recursion parameters
- Chin, Khoo
- 1993
(Show Context)
Citation Context ...oach is to search for the power series of the generating function of the recursion [14]. The #-th coecientofthepower series carries the value of the recursive function for the input #. Chin and Khoo [=-=5-=-] developed a tupling method to reduce, in some cases, recursion in multiple variables to recursion in a single variable. 6 Example: Nested Lists in Multiple Precision Arithmetic A major dierence betw... |

14 | C.: HDC: A Higher-Order Language for Divide-and-Conquer
- Herrmann, Lengauer
- 2000
(Show Context)
Citation Context ...t parallel implementations of divide-and-conquer skeletons have been added to the compiler and have been used to express algorithms like Karatsuba's polynomial multiplication and the #-queens problem =-=[20]-=-. The syntax of ### is a subset of Haskell [16], since we found language constructs like the list comprehension superior concerning notational convenience and style. In contrast to Haskell, the semant... |

12 | Extracting and implementing list homomorphisms in parallel program development
- Gorlatch
(Show Context)
Citation Context ...ch permits symbolic pattern matching of a list against its size and its indexing function. We took the idea of such non-standard list constructors from cons-snoc lists and distributable homomorphisms =-=[13]-=- and powerlists [26]. In contrast to them, our approach strictly separates length and content of a list, with the need to add auxiliary functions to the program, mapping list indices to elements. Late... |

11 |
The Skeleton-Based Parallelization of Divide-and-Conquer Recursions
- Herrmann
- 2000
(Show Context)
Citation Context ...data structures. This has motivated us to develop our own compiler for a functional language, with a strong focus on the code it produces. Skeletons are a suitable vehicle for achieving high eciency [=-=19-=-]. We name our source language ###, for #igher-order #ivide-and-#onquer, which reects our belief in the productivity that higher-order functions lend to 204 Christoph A. Herrmann and Christian Lengaue... |

8 |
Bidirectional Fold and Scan
- O'Donnell
- 1993
(Show Context)
Citation Context ...g, etc. We apply the data eld approach to the parallelization of lists. As far as we know, the list is the most important aggregate data structure in functional programming, and it has a rich theory [=-=3, 28]-=-. As Lisper and Collard [24] have pointed out, size inference can be viewed as a form of abstract interpretation [8]. One kind of abstract information of a list is its length. The length function is a... |

6 | Flattening is an improvement
- Riely, Prins
- 2000
(Show Context)
Citation Context ...ossible by a symbolic representation of a function mapping indices to elements a technique which provides the potential for a precise size analysis of nested lists and for their at implementations [3=-=0-=-]. Flat structures can lead to eciency increases in memory allocation and release, access and update of elements and marshaling for communication. Through size inference, the program can become amenab... |

5 |
A tutorial on Lava: A hardware description and veri cation system. Available from http://www.cs.chalmers.se/~koen/Lava
- Claessen, Sheeran
- 2000
(Show Context)
Citation Context ...e result depends on its position. 6.1 Types and Representation In order to make the maximal amount of information statically derivable, our programs resemble specications of abstract digital designs [=-=7, 10, 2-=-9]. The basic arithmetic functions which are not presented here are producing output lists that depend statically on the size of input lists. E.g., a function which adds two numbers delivers a sum who... |

5 | Symbolic simulation of microprocessor models using type classes in Haskell
- Day, Lewis, et al.
- 1999
(Show Context)
Citation Context ...e result depends on its position. 6.1 Types and Representation In order to make the maximal amount of information statically derivable, our programs resemble specications of abstract digital designs [=-=7, 10, 2-=-9]. The basic arithmetic functions which are not presented here are producing output lists that depend statically on the size of input lists. E.g., a function which adds two numbers delivers a sum who... |

5 | A compiler for HDC
- Herrmann, Lengauer, et al.
- 1999
(Show Context)
Citation Context ...ct. This is to guarantee that the space-time mapping that is, the assignment of operations to time and processors made at compile time is respected in the actual execution. Briey, the HDC compiler [18=-=-=-] consists of the following parts: 1. front end: scanning, parsing, desugaring, -lifting, type inference/checking 2. back end, pre-optimization part: monomorphization, elimination of functional argume... |

4 |
Typed intermediate languages for shape-analysis
- Bell, Moggi
- 1997
(Show Context)
Citation Context ...t never existed in the source program. 2. Other researchers base size analysis, be it inference or checking, on types. (a) Some groups draw a strong connection between types and sizes. Bell and Moggi =-=[2]-=- apply size inference in an intermediate language with a two-level type system that distinguishes between compile-time and runtime values [27]. Xi and Pfenning [32] use dependent types and perform typ... |

3 | Compilation of a specialized functional language for massively parallel computers
- Fradet, Mallet
(Show Context)
Citation Context ... a failure of the compilation or a rejection of the program. Size inference or size checking appears in other approaches at the front end of a compilation process, even in transformational approaches =-=[12]-=-. Our size analysis is located in the middle of the back end of the compilation, inside an optimization loop. The analysis and subsequent program transformations are performed in a cycle and, thus, fu... |

3 |
Size inference of nested lists in functional programs
- Herrmann, Lengauer
- 1998
(Show Context)
Citation Context ...te, successive steps: (1) Hindley-Milner inference, (2) derivation of the size information and (3) constraint solving. Loidl and Hammond [25] followed this approach. Our initial attempts were similar =-=[17-=-], but we recognized that the treatment of nested lists in the type information leads to a formalism which is dicult to apply.Now, we are using types only to count the levels of nesting of the list, b... |

1 |
A compiler for ###.Technical Report MIP-9907, Fakultt fr Mathematik und Informatik
- Herrmann, Lengauer, et al.
- 1999
(Show Context)
Citation Context ...ct. This is to guarantee that the space-time mapping that is, the assignment of operations to time and processors made at compile time is respected in the actual execution. Briey, the ### compiler [18=-=]-=- consists of the following parts: 1. front end: scanning, parsing, desugaring, #-lifting, type inference/checking 2. back end, pre-optimization part: monomorphization, elimination of functional argume... |

1 |
Bidirectional #### and
- O'Donnell
- 1994
(Show Context)
Citation Context ...ing, etc. We apply the data eld approachtothe parallelization of lists. As far as we know, the list is the most important aggregate data structure in functional programming, and it has a rich theory [=-=3, 28]-=-. As Lisper and Collard [24] have pointed out, size inference can be viewed as a form of abstract interpretation [8]. One kind of abstract information of a list is its length. The length function is a... |

1 |
Dependenttypes in practical programming
- Xi, Pfenning
- 1999
(Show Context)
Citation Context ...ween types and sizes. Bell and Moggi [2] apply size inference in an intermediate language with a two-level type system that distinguishes between compile-time and runtime values [27]. Xi and Pfenning =-=[32]-=- use dependent types and perform type checking modulo constraint satisfaction. Singleton types enable the generation of lists of a particular size, dependent on integer values. Jay and Sekanina [23] d... |

1 | A type system for bounded space and functional in-place update - extended abstract - Herrmann, Lengauer - 2000 |