Results 1  10
of
12
Supercompilation by evaluation
, 2010
"... Supercompilation is a technique due to Turchin [1] which allows for the construction of program optimisers that are both simple and extremely powerful. Supercompilation is capable of achieving transformations such as deforestation [2], function specialisation and constructor specialisation [3]. Insp ..."
Abstract

Cited by 17 (4 self)
 Add to MetaCart
Supercompilation is a technique due to Turchin [1] which allows for the construction of program optimisers that are both simple and extremely powerful. Supercompilation is capable of achieving transformations such as deforestation [2], function specialisation and constructor specialisation [3]. Inspired by Mitchell’s promising results [4], we show how the callbyneed supercompilation algorithm can be recast to be based explicitly on an evaluator, and in the process extend it to deal with recursive let expressions.
Efficient Parallel Stencil Convolution in Haskell
 In Haskell Symposium. ACM
, 2011
"... Stencil convolution is a fundamental building block of many scientific and image processing algorithms. We present a declarative approach to writing such convolutions in Haskell that is both efficient at runtime and implicitly parallel. To achieve this we extend our prior work on the Repa array li ..."
Abstract

Cited by 12 (2 self)
 Add to MetaCart
(Show Context)
Stencil convolution is a fundamental building block of many scientific and image processing algorithms. We present a declarative approach to writing such convolutions in Haskell that is both efficient at runtime and implicitly parallel. To achieve this we extend our prior work on the Repa array library with two new features: partitioned and cursored arrays. Combined with careful management of the interaction between GHC and its backend code generator LLVM, we achieve performance comparable to the standard OpenCV library.
MRSC: a toolkit for building multiresult supercompilers
, 2011
"... The paper explains the principles of multiresult supercompilation. We introduce a formalism for representing supercompilation algorithms as rewriting rules for graphs of con#12;gurations. Some lowlevel technical details related to the implementation of multiresult supercompilation in MRSC are dis ..."
Abstract

Cited by 5 (4 self)
 Add to MetaCart
The paper explains the principles of multiresult supercompilation. We introduce a formalism for representing supercompilation algorithms as rewriting rules for graphs of con#12;gurations. Some lowlevel technical details related to the implementation of multiresult supercompilation in MRSC are discussed. In particular, we consider the advantages of using spaghetti stacks for representing graphs of configurations.
Improving supercompilation: tagbags, rollback, speculation, normalisation, and generalisation
, 2011
"... Supercompilation is a powerful technique for program optimisation and theorem proving. In this paper we describe and evaluate three improvements to the Cambridge Haskell Supercompiler (CHSC). We reduce supercompiled program size by the use of a weak normaliser and aggressive rollback, and we improve ..."
Abstract

Cited by 4 (0 self)
 Add to MetaCart
(Show Context)
Supercompilation is a powerful technique for program optimisation and theorem proving. In this paper we describe and evaluate three improvements to the Cambridge Haskell Supercompiler (CHSC). We reduce supercompiled program size by the use of a weak normaliser and aggressive rollback, and we improve the performance of supercompiled programs by heap speculation and generalisation. Our generalisation method is simpler than those in the literature, and is better at generalising computations involving primitive operations such as those on machine integers. We also provide the first comprehensive account of the tagbag termination mechanism.
Towards effective twolevel supercompilation
, 2010
"... The paper presents a number of improvements to the method of twolevel supercompilation: a fast technique of lemma discovering by analyzing the expressions in the partial process tree, an enhancement to the algorithm of checking improvement lemmas based on the normalization of tick annotations, and ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
The paper presents a number of improvements to the method of twolevel supercompilation: a fast technique of lemma discovering by analyzing the expressions in the partial process tree, an enhancement to the algorithm of checking improvement lemmas based on the normalization of tick annotations, and a few techniques of finding simplified versions of lemmas discovered in the process of twolevel supercompilation.
Multiresult Supercompilation as Branching Growth of the Penultimate Level in Metasystem Transitions
 PERSPECTIVES OF SYSTEMS INFORMATICS: 8TH INTERNATIONAL ANDREI ERSHOV MEMORIAL CONFERENCE, PSI 2011
, 2011
"... The paper deals with some aspects of metasystem transitions in the context of supercompilation. We consider the manifestations of the law of branching growth of the penultimate level in the case of higherlevel supercompilation and argue that this law provides some useful hints regarding the ways of ..."
Abstract

Cited by 4 (3 self)
 Add to MetaCart
The paper deals with some aspects of metasystem transitions in the context of supercompilation. We consider the manifestations of the law of branching growth of the penultimate level in the case of higherlevel supercompilation and argue that this law provides some useful hints regarding the ways of constructing metasystems by combining supercompilers. In particular we show the usefulness of multiresult supercompilation for proving the equivalence of expressions and in twolevel supercompilation.
Termination Combinators Forever
, 2011
"... We describe a librarybased approach to constructing termination tests suitable for controlling termination of symbolic methods such as partial evaluation, supercompilation and theorem proving. With our combinators, all termination tests are correct by construction. We show how the library can be de ..."
Abstract

Cited by 1 (0 self)
 Add to MetaCart
(Show Context)
We describe a librarybased approach to constructing termination tests suitable for controlling termination of symbolic methods such as partial evaluation, supercompilation and theorem proving. With our combinators, all termination tests are correct by construction. We show how the library can be designed to embody various optimisations of the termination tests, which the user of the library takes advantage of entirely transparently.
A Metacomputation Toolkit for a Subset of F♯ and Its Application to Software Testing Towards Metacomputation for the Masses
"... Abstract. We present an ongoing experiment to develop a practical metacomputation toolkit for F#. There are – apart from the better known supercompilation – other mature and potentially useful methods stemming from metacomputation theory: program inversion and tabulation, neighborhood analysis. Alt ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. We present an ongoing experiment to develop a practical metacomputation toolkit for F#. There are – apart from the better known supercompilation – other mature and potentially useful methods stemming from metacomputation theory: program inversion and tabulation, neighborhood analysis. Although implementations of these methods have existed since many years, they are typically experimental tools, treating specifically designed small languages. We investigate if such methods can be made more readily available for practical use, by redeveloping them for a reasonably large subset of a mainstream programming language. Practical technical challenges – together with possible solutions – are discussed. We also hint at a potential practical application – automatic generation of software test sets based on user specifications of “interesting ” input partitioning. 1
A Comparison of Program Transformation Systems
"... Abstract. Program transformation is a popular technique for attempting to improve the efficiency of a program. At a high level, program transformation is the process of taking an input program and transforming it into an improved version of the original, bearing the same constraints as the original, ..."
Abstract
 Add to MetaCart
(Show Context)
Abstract. Program transformation is a popular technique for attempting to improve the efficiency of a program. At a high level, program transformation is the process of taking an input program and transforming it into an improved version of the original, bearing the same constraints as the original, e.g. termination constraints. In this paper, we focus on three fold/unfold [3] based transformation systems, positive supercompilation [26,25,21,2,12] and distillation [8,9,10,11] and HOSC [19,18]. We focus on derivatives of both that use labelled transition systems [12,11] and we present these systems, their underlying theory, and implementations. Based upon these implementations we will present an analysis of how they compare to each other, and another transformation system, HOSC[19], when applied to a sample of realworld programs. 1
General Terms
"... Stencil convolution is a fundamental building block of many scientific and image processing algorithms. We present a declarative approach to writing such convolutions in Haskell that is both efficient at runtime and implicitly parallel. To achieve this we extend our prior work on the Repa array libr ..."
Abstract
 Add to MetaCart
(Show Context)
Stencil convolution is a fundamental building block of many scientific and image processing algorithms. We present a declarative approach to writing such convolutions in Haskell that is both efficient at runtime and implicitly parallel. To achieve this we extend our prior work on the Repa array library with two new features: partitioned and cursored arrays. Combined with careful management of the interaction between GHC and its backend code generator LLVM, we achieve performance comparable to the standard OpenCV library. Categories and Subject Descriptors D.3.3 [Programming Languages]: Language Constructs and Features—Concurrent programming