| P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---Practice and Experience, 24(2):127--173, February 1994. |
....of our compiler to insert monitoring code into the executable to record all memory references at run time. Various aspects of our trace driven simulation approach, including the benchmark programs, are elaborated on in the following sections. 2. 1 Compiled graph reduction The FAST compiler [Hartel91a] which has been developed at Southampton University in the UK, translates lazy functional programs into super combinators and outputs code for an abstract graph reduction machine similar to the G machine used in the LML compiler from Chalmers University [Johnsson84] The FCG code generator ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Technical report CSTR 91-03, Dept. of Electr. and Comp. Sci, Univ. of Southampton, UK, 1991.
....high runtime overheads. Implicit parallelism in lazy functional languages is normally obtained by using a strictness analyser to identify expressions whose evaluation contribute to the final program value. Strictness analysis is usually implemented using abstract interpretation techniques [Peyt87, HGW89, Burn87a,b, Burn91] abstract reduction [Nock93] or projection analysis [WaHu87, Burn90] The basic idea is that, given an input program, a parallelising compiler uses a strictness analyser to determine statically the expressions that are needed. The output program is automatically decorated with ....
....University, Imperial College and Meiko Ltd of Bristol. Its aim was to provide an implementation of a pure, lazy functional language on a transputer array. The project also involved researchers from the University of Amsterdam with whom the Southampton team developed sequential compiler technology [HGW89, GHW90] and performance analysis techniques [HGW91, HaLa92] Researchers at Imperial college and Amsterdam used the Southampton compiler as a basis for investigating various parallel implementation techniques [CHK 92, CHK 93, VrHa92] An important component of the FAST system is a highly ....
P Hartel, H Glaser, and J Wild, Compilation of Functional Languages using Flow Graph Analysis. Technical Report CSTR 89-4, Department of Electronics and Computer Science, University of Southampton.
....our parallel functional system. We will use our existing toolkit (see Hartel et al. HHL 95] for parallel functional programming to further compile the parallel functional program. Our toolkit offers the optimising FAST FCG compiler for a subset of Miranda (see Hartel, Glaser and Wild [HGW94] and Langendoen and Hartel [LH92] parallel execution on a 4 processor HyperM system (see Langendoen [Lan93] and extensive parallel simulation facilities (see Muller [Mul93] The Prolog transformation tools will be tailored to optimise for the parallel functional target system that we will be ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
No context found.
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---Practice and Experience, 24(2):127--173, February 1994.
No context found.
P. H. Hartel, H. W. Glaser and J. M. Wild, `Compilation of functional languages using flow graph analysis', Technical Report CSTR 91-03, Department of Electronics and Computer Science, University of Southampton, England, January 1991.
....crucially on the ability of the compiler to support arrays properly. The SICStus Prolog compiler [7] uses the functor metacall predicate to allocate a contiguous block of store, so that arrays with constant time access can be built. To compile the Miranda code we use our own FAST compiler [11], which offers efficient array primitives. Table 1 shows the experimental results obtain for the solver of the shallow water equations. As a reference, we have included measurements pertaining to a straightforward version ( no split ) which does not partition the grid. The second version ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994. ftp.wins.uva.nl/ pub/ computer-systems/ functional/ reports/ SPEflowgraph.ps.Z.
....may contain suspended computations which can generate the required amount of the data structure, allowing infinite data objects to be defined. Thus data structures used are flexible, with data space frequently allocated at run time. We use many powerful compilation techniques in our compiler [5]. Our analysis greatly reduces our dependence on the storage manager and graph reducer to the extent that some smaller problems can execute without using either of the services. However, these analyses do not obviate the need for a storage managerand graph reduction subsystem,which closely ....
....[11] 3 Results Throughout the compiler our analysis concentrates on avoiding unnecessary cell claims and the reduction of the live program graph size. As a result, our programs make many fewer claims [2] As physical memory sizes continue to increase, scanning collectors become more attractive [5]. This motivated us to provide the following statistics to facilitate our goal of designing a more optimal scanning collector. We first consider the use of vector application cells in our system, and in the light of these results we provide a more detailed analysis of lifetime and graph size in a ....
P. H. Hartel, H. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. January 1991.
....The compiler has been built around flow graphs, which provide a formal framework supporting and integrating the different analysis and synthesis techniques that we use. All of the analyses are formally specified. Some example analysis and details of the compiler implementation may be found in [2]. In this paper we restrict our attention to issues relating to the effects that compile time analysis has on the run time behaviour. We measure this in terms of node claims and function calls. In particular, we do not consider methods for implementing run time garbage collection here, the reader ....
....had to build a suspension for a the two place addition function, which requires more space. We found that our inlining can have both beneficial and detrimental effects (see section 8. 2) 6 Analyses The most important analyses performed by the FAST compiler are discussed in detail in our paper [2]. Here we restrict our attention to the differences that arise in the compiled code when selected analyses are disabled. The compiler has a set of options that allow most analyses to be switched off almost completely. However, it seems sensible to assume the best information about the standard ....
[Article contains additional citation context not shown here]
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Technical report CSTR 91-03, Dept. of Electr. and Comp. Sci, Univ. of Southampton, England, Jan 1991.
....with functional languages and their implementation methods is required to make full use of this document. 1 Introduction The FAST (Functional programming on ArrayS of Transputers) project team at Southampton has developed an optimising compiler for a lazy functional language on a single processor [6]. This document describes how to use the compiler. The compiler accepts on input a language called Intermediate that is best described as a mixture of Miranda 1 [17, 18] Haskell [14] and LML [1, 2] The language was originally not intended to be used as a programming language but as the target ....
....constant arguments inline i Inline functions adorned with INLINE directive and based on a heuristic prune r Prune unused functions The first passes of the compiler operate on a classical syntax tree representation. The program analysis phases operate on a representation that we call flow graphs [6]. flow graph preparation for the analyses pass option description flow always Transform the abstract syntax tree into a flow graph gat always Gather dangling edges and insert SINK nodes con noconfold Constant folder kil noconfold Kill the redundant nodes that may have been introduced by the ....
[Article contains additional citation context not shown here]
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Technical report CSTR 91-03, Dept. of Electr. and Comp. Sci, Univ. of Southampton, England, Jan 1991.
....Although the interpreter does not allow for efficient execution of the program, the development cycle is short when using small input data sets because there is no compilation phase. When the programmer is satisfied that the program is working, the program is compiled using the FAST FCG [6, 7] compiler for Intermediate. This compiler translates the program into an equivalent C program, which is compiled to the target platform using a C compiler (resulting in code that is portable to any machine with a C compiler) The program can be executed on a sequential machine, and a standard ....
....interactive program development environment. The system supports modular design and incremental program development through its interpreter. The system is robust, and produces good error messages. Miranda is well supported and well documented [4, 5] 4. 2 The FAST FCG compiler The FAST compiler [6] together with the FCG code generator [7] implement Intermediate, which is a subset of Miranda. To allow Miranda programs to be compiled by the FAST FCG compiler, three restrictions must be observed; ffl Instead of using the Miranda type num which supports arbitrary types of numerals, the ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....may contain suspended computations which can generate the required amount of the data structure, allowing infinite data objects to be defined. Thus data structures used are flexible, with data space frequently allocated at run time. We use many powerful compilation techniques in our compiler [4]. Our analysis greatly reduces our dependence on the storage manager and graph reducer to the extent that some smaller problems can execute without using either of the services. However, these analyses do not obviate the need for a storage manager and graph reduction subsystem, which closely ....
....of 7 parallel jobs with a branch and bound algorithm. 10] 3 RESULTS Throughout the compiler our analysis concentrates on avoiding unnecessary cell claims and the reduction of the live program graph size. As physical memory sizes continue to increase, scanning collectors become more attractive [4]. This motivated us to provide the following statistics to facilitate our goal of designing a more optimal scanning collector. We first consider the use of vector application cells in our system, and in the light of these results we then provide a more detailed analysis of cell lifetime and graph ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Technical report CSTR 91-03, Dept. of Electr. and Comp. Sci, Univ. of Southampton, England, Jan 1991.
No context found.
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....crucially on the ability of the compiler to support arrays properly. The SICStus Prolog compiler [9] uses the functor meta call predicate to allocate a contiguous block of store, so that arrays with constant time access can be built. To compile the Miranda code we use our own FAST compiler [12], which offers efficient array primitives. Table 1 shows the experimental results obtain for the solver of the shallow water equations. As a reference, we have included measurements pertaining to a straightforward version ( no split ) which does not partition the grid. The second version ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....time and space. Thus any method to avoid building graph in the heap and subsequently reducing it may improve the situation. Thunk lifting is such a method. It is an optimisation that is used with the FAST compiler. FAST (Functional programming on ArrayS of Transputers) is an optimising compiler [5] for a lazy functional language, which is basically a subset of Miranda 1 [15] The FAST compiler translates lazy functional programs to a subset of C called functional C [9] For each function in the functional program a corresponding C function is generated. The run time system is based on the ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....architectures. The last section gives the conclusions. 2 A summary of the method In the benchmark I paper, four languages and five implementations were used. These were Clean (version 0. 8) 19] and its compiler from Nijmegen [15] a subset of Miranda 1 [18] and our own FAST FCG compiler [9, 13]; Lazy ML [2] and its compiler from Chalmers [3] and finally Haskell [12] with the compilers from Chalmers [1] and Glasgow [17] In this paper the third major Haskell compiler from Yale [7] is also included. A summary of the offerings of the four languages is presented in the benchmark I paper. A ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....not compile programs to native machine code but interprets an abstract machine code. It would not be fair to compare the run time of interpreted code with that of compiled code, so instead of using Miranda, we use our own compiler. This is the FAST compiler (developed at Southampton University [8, 7]) together with the FCG code generator (developed at Amsterdam University [11] The FAST compiler implements Intermediate, a language that has a syntax similar to Miranda. Intermediate provides more primitive functions than Miranda, but does not support operator overloading and several other ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....versions of the FFT have been presented as Miranda programs because of its widespread use. However, Miranda does not provide array primitives, so in this case it is not suitable for performance measurements. The programs were translated by hand into a functional language called intermediate [7], which is a simple, lazy, curried, higher order functional language that provides lists, arrays, complex numbers, double precision numbers and integer numbers as basic data structures. The language offers all the primitive functions required to efficiently operate on these data structures, ....
....anuneven bias in the performance comparison. The observed differences can thus be attributed entirely to the use of arrays. Intermediate forms the intermediate (hence the name) between the front end of a modern functional language, such as Haskell or Miranda, and our back end: the FAST compiler [7]. The back end compiles programs written in intermediate into equivalent C programs and also performs extensive analysis and code optimisation on the programs being compiled. The C programs are subsequently compiled by the C compiler and linked with the intermediate fft4 i1 = LET b00=head i1 IN ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....code generator in a functional language compiler that combines the advantages of both previous approaches: it compiles down to a level where it has control over the location of pointers and then uses part of the C compiler to generate object code. We have made use of the existing FAST front end [5], which includes an advanced strictness analyser. The front end translates a functional program into a severely restricted subset of C, which is called Functional C, with standard call by value semantics. Since pointers are passed as ordinary parameters, direct compilation of Functional C results ....
P. H. Hartel, H. W. Glaser, and J. M.Wild. Compilation of functional languages using flow graph analysis. Technical report CSTR 91-03, Dept. of Comp. Sci, Univ. of Southampton, UK, Jan. 1991.
No context found.
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....second argument. A 1 style first argument is now in order too, because it will become the new head of a 3 style list. The information in Figure 11 can now be used as the starting point for projection analysis. We will not discuss the analysis here, but refer the reader to a technical report [30]. Instead we will show the results of the analysis. The code that is generated by the compiler for functions to be called in the various context styles, implements compile time choice [31, 32] of versions. This means that for each possible context (1,2,3 etc. the compiler creates a version of ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....For example, strictness analysis (see section 5.2) has made major advances possible. Existing techniques for imperative languages are also used and even extended beyond what is possible for imperative languages because of the referential transparency of functional languages. The FAST compiler [21] has been designed to study a framework for integrating high level program analysis and synthesis techniques. 3. Code generation techniques for RISC and VLIW architectures. Two aspects of code generator design are described in some detail here. The first is code generation for RISC processors. ....
....that after the type check transformation and conversion into LML, a benchmark of programs runs on average only at half the speed of handwritten equivalent LML programs. The optimisingtype check transformation is fully described in [41] 5. 2 Program analysis in the FAST compiler The FAST project [21] has developed a compiler for a simple lazy functional language that performs a variety of program analyses to enable efficient code generation. The compiler is based on flow graphs, which can be regarder as dependency graphs. Flow graphs provide a formal framework for expressing program analyses ....
[Article contains additional citation context not shown here]
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....regularity, it would not have been possible to use the monolithic approach at all. The monolithic implementation creates a considerable amount of intermediate list structure, which a good compiler should be able to avoid completely [4, 16] Unfortunately, the compiler that we have been using (FAST [17]) does not have this capability. The definition of the function reorder has been omitted from the program of Figure 2 as it does not play a role in the discussion on updating. The interested reader is referred to our paper [10] for a complete description of the program. main : array of complex ....
....is entirely up to the programmer to work this out. We do not propose to present arbitrary destructive updates as a tool to the casual programmer, but instead use such unsafe facilities as an object of study. 3 Measurements The three programs qs, fft and wv have been compiled by the FAST compiler [17] and executed on a SUN SPARC 4 690, with 64Mb of memory, 64KB caches, running under SunOS 4.1.2. Various statistics are collected by the runtime system, of which Table 1 presents the most important ones, as shown in the first column. The three programs have been implemented using incremental ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....(1995) http: www.cwi.nl gipe epic.html Kamperman Epic C 0.2 CWI Walters and (1995) http: www.cwi.nl gipe epic.html Kamperman Erlang 6.0. 4 Ellemtel AB Hausman (1994) commercial Email: erlang erix.ericsson.se Facile Antigua ECRC Thomsen et al. 1993) Email: facile ecrc.de FAST 33 Southampton Hartel et al. 1994) Email: pieter fwi.uva.nl Amsterdam Gambit 2.3 Montr eal Feeley and Miller (1990) Ftp: ftp.iro.umontreal.ca: pub parallele gambit GammaCMC 0.1 Recife Lins and Lira (1993) Email: rdl di.ufpe.br Brazil Gofer 2.30a Yale Jones (1994) Ftp: nebula.cs.yale.edu: pub haskell gofer Haskell 0.999.6 ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
....a discrete space of shapes and returns the set of shapes that respect some structural constraint. The program is heavily floating point oriented. For example the C version of the program spends 25 of its time in the C library trigonometric and square root routines. Statistics from the lazy FAST [17] compiler show that with evaluation the fastest version of the program does about 7 M floating point operations, which excludes those performed by the 190 K trigonometric and square root functions. A detailed breakdown of these statistics is shown in Table 2. The program makes about 1.5 M function ....
P. H. Hartel, H. W. Glaser, and J. M. Wild. Compilation of functional languages using flow graph analysis. Software---practice and experience, 24(2):127--173, Feb 1994.
Online articles have much greater impact More about CiteSeer.IST Add search form to your site Submit documents Feedback
CiteSeer.IST - Copyright Penn State and NEC