| Gopinath, K., and Hennessy, J. L. Copy elimination in functional languages. In Sixteenth Annual ACM Symposium on Principles of Programming Languages (Jan. 1989), pp. 303--314. |
....linear type systems [Wad90] The method presented here does not rely on any programmer annotations. There is a large body of work on static analysis applied to the destructive array update problem including that of Hudak [Hud87] Bloss and Hudak [BH87] Bloss [Blo94] Gopinath and Hennessy [GH89], and Odersky [Ode91] Draghicescu and Purushothaman [DP93] introduce the key insight exploited here that in a language with at arrays, the sharing of references between a term and its context can only occur through shared free variables, but their update analysis for 6 a lazy language has ....
K. Gopinath and John L. Hennessy. Copy elimination in functional languages. In 16th ACM Symposium on Principles of Programming Languages. Association for Computing Machinery, January 1989.
.... used in our analyses is able to compute various kinds of bounds based on input size only, without program annotations; it can do time analysis automatically as well, as shown by the work of Liu and G omez [34] A number of people have worked on static analysis for compile time garbage collection [22, 21, 16, 29, 27, 19, 25, 50, 18, 52], and one of the approaches is static reference counting [22, 21] For compile time optimization, the reference count includes only pointers to memory cells that will be used in the rest of the execution [21] This kind of reference count can not be used for analyzing live heap space, since a cell ....
K. Gopinath and J. L. Hennessy. Copy elimination in functional languages. In Conference Record of the 16th Annual ACM Symposium on Principles of Programming Languages, pages 303-314. ACM, New York, Jan. 1989.
....(reuse) of an object v at a point P in the program where it can be shown that all other objects that may contain v are dead at P . He then develops a set of value transmission functions that can be used to determine the safety of a destructive use within the language SETL. Gopinath and Hennessy [10] address the problem of copy elimination by targeting, or the proper selection of a storage area for evaluating an expression. For the lambda calculus extended with array operation constructs, they develop a set of equations which, when solved iteratively to a xpoint, specify targets for array ....
K. Gopinath and J. L. Hennessy. Copy elimination in functional languages. In Proceedings of the Sixteenth Annual ACM Symposium on the Principles of Programming Languages, Austin, TX, January 1989.
....and various linear type systems [Wad90] The method presented here does not rely on any programmer annotations. There is a large body of work on static analysis applied to the aggregate update problem including that of Hudak [Hud87] Bloss and Hudak [BH87] Bloss [Blo94] Gopinath and Hennessy [GH89], and Odersky [Ode91] and Draghicescu and Purushothaman [DP93] Most of these analyses apply to lazy functional languages. Laziness complicates the analysis since there is no xed order of evaluation on the terms as is the case with eager evaluation. Even so, all these analysis methods are ....
K. Gopinath and John L. Hennessy. Copy elimination in functional languages. In 16th ACM Symposium on Principles of Programming Languages. Association for Computing Machinery, January 1989.
.... used in our analyses is able to compute various kinds of bounds based on input size only, without program annotations; it can do time analysis automatically as well, as shown by the work of Liu and G omez [34] A number of people have worked on static analysis for compile time garbage collection [22, 21, 16, 29, 27, 19, 25, 50, 18, 52], and one of the approaches is static reference counting [22, 21] For compile time optimization, the reference count includes only pointers to memory cells that will be used in the rest of the execution [21] This kind of reference count can not be used for analyzing live heap space, since a cell ....
K. Gopinath and J. L. Hennessy. Copy elimination in functional languages. In Conference Record of the 16th Annual ACM Symposium on Principles of Programming Languages, pages 303--314. ACM, New York, Jan. 1989. 26 of 28
....that contains both an update and subsequent use of an array variable, then the update must be executed nondestructively. The drawbacks of this technique are that there is no output analysis, the update analysis applies only to flat arrays, and is exponential in complexity. Gopinath and Henessy [GH89] present a similar update analysis based on abstract interpretation but extended to divide and conquer algorithms. Draghicescu and Purushothaman [DP93b] also present an update analysis technique for a lazy, first order functional language with flat arrays. The key insight of handling update ....
K. Gopinath and John L. Hennessy. Copy elimination in functional languages. In 16th ACM Symposium on Principles of Programming Languages. Association for Computing Machinery, January 1989.
....longer needed, they can be reclaimed into a free storage list explicitly by the program without invoking a garbage collection process. When heap allocated objects are no longer needed, their storage can be reused directly in the allocation of new objects without invoking garbage collection. 11] [35], 41] 49] 50] 51] ffl Reference Counting Elimination : In reference counting, each object contains a count, called the reference count, of the number of references (pointers) pointing to it. Each time a reference is created or destroyed its reference count needs to be incremented or ....
.... by converting lazy evaluation into applicative order evaluation and thus reducing the overhead of lazy evaluation ( 36] 31] 63] 66] Information about the order of evaluation of the arguments to a function can be useful for a number of optimizations, including copy elimination ( 11] 30] [35]) and process scheduling in a parallel system [13] Information on the status of evaluation of arguments when they are demanded is useful for eliminating unnecessary checking [14] and for efficient storage management of delayed expressions (closures) These information can be reformulated in terms ....
[Article contains additional citation context not shown here]
K. Gopinath and J. Hennessy. Copy elimination in functional languages. In Proceedings of the 16th ACM Symposium on Principles of Programming Languages, pages 303-314, January 1989.
....it contains two recursive calls in the same clause. As noted in Sec. 4.1, the transformation scheme is easily extended to handle this. 6 Previous Work A number of authors have considered the optimization of programs in single assignment languages to incorporate destructive updates, e.g. see [4, 14, 13, 15, 16, 17] in the context of functional programming languages, and [6, 5, 10, 18, 19, 23] in the context of logic programming languages. The work of Bruynooghe [6, 5] Foster and Winsborough [10] Hudak and Bloss [4, 15, 16] Mulkers et al. 19] and Sastry et al. 23] focus on compile time reference ....
K. Gopinath and John L. Hennessy. Copy elimination in functional languages. In 16th ACM POPL Symposium, pages 303--314, Austin, Texas, 1989. ACM Press.
....program analyses that suffer from this same phenomenon of accumulated imprecision, caused by abstracting at every step. For instance, analyses of heap allocated data structures are important for efficient language implementation, supporting compile time garbage collection [11] aggregate updates [6], interference and dependence analysis for automatic parallelization [10] and instruction level parallelism [9] To take just one of many examples, the shape analysis of [5] is designed to determine which heap allocated data structures in a C program are DAGs and which are trees. This analysis ....
K. Gopinath and J.L. Henessy. Copy elimination in functional languages. In Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin, Texas, pages 303-- 314, January 1989.
....storage. Bloss reports on some experimentation with one of these implementation techniques (trailing) in [3] 2 A cure: compile time analysis A lot of research has gone into devising compile time analyses which recognise when replace operations may be implemented using destructive assignment [3, 5, 7, 9]. Effectively all these analyses perform some form of reference counting at compile time. This enables the compiler to determine that some arrays become completely dereferenced after a replace operation and hence the replace operation may be correctly implemented by modifying the original array. ....
....for defining parallel algorithms. Array concatenate usually copies its two arguments into a new array. Sometimes when concatenate is used in conjunction with array partition operations, copying is unnecessary. Gopinath has developed an analysis to determine when this optimisation is permissible [7]. 3 Problems with compile time analysis The basic problem with using compile time analysis to optimise replace and other operations is that the operational behaviour of programs is no longer evident from their text. It is hard to write efficient programs for compilers which perform sophisticated ....
K Gopinath and J L Hennessy. Copy elimination in functional languages. In 16th Annual ACM Symposium on Principles of Programming Languages, Austin, Texas, pages 303--314. ACM Press, January 1989.
....enough region has been found, the interpreter divides it into two pieces: one for the vector and one that is returned to the free list appropriate for that region s size. The reference counts in the vector block list also enable the interpreter to perform simple copy elimination optimizations [28, 31]. To enforce the applicative semantics of VCODE the implementation of an operation that changes only a single element of a vector must copy the entire vector before making any alteration. If the reference count indicates that this is the last reference to the old version of the vector, we may ....
K. Gopinath and J. L. Hennessy. Copy elimination in functional languages. In Sixteenth Annual ACM Symposium on Principles of Programming Languages, pages 303--314, January 1989.
....need update inplace, only when you were in need of full speed but then you should use languages like C, Fortran or even assembly instead of a functional language. Nowadays we can do update in place through of a number of techniques like uniqueness typing [BS93] monads [LJ94] and copy elimination [GH89]. In our implementation of the conjugate gradient algorithm, we didn t use the uniqueness typing system of Clean. Instead of update in place, new vectors were created everywhere. This is not very efficient: for the n = 10.000 problem, 90 Mb of memory is allocated during the run, just for the ....
K. Gopinath and J.L. Hennesy. Copy elimination in functional languages. In Proceedings of POPL'89, 1989. 10
....lacks. Much work has been done on specific subproblems of advanced storage analysis. Some examples of storage management optimizations are compile time garbage collection [15, 24] the aggregate update problem (determining when a functional operation on structured data can be done destructively) [3, 11, 20], verification of single threadedness in languages based on linear logic [21, 26] and determining when local variables may be replaced by global ones [25] Examples of other uses of storage analyses are interference and dependence analysis for automatic parallelization [2, 23] and improving code ....
K. Gopinath and J.L. Henessy. Copy elimination in functional languages. In Sixteenth Annual ACM Symposium on Principles of Programming Languages, Austin, Texas, pages 303--314, January 1989.
....4 OVERLAP CSHIFTs Figure 6.16 Timings for 5 point stencil computation on 16K MasPar MP 1. 0 20 40 60 80 100 Percent 4 6 8 10 12 14 16 18 20 Subgrid size (squared) Original program Optimized program Figure 6.17 Percent of execution time spent performing shift operations. Gopinath and Hennessy [77] address the problem of copy elimination by targeting, or the proper selection of a storage area for evaluating an expression, the goal of which is to reuse the storage of the input parameters. For the lambda calculus extended with array operation constructs, they develop a set of equations ....
K. Gopinath and J. L. Hennessy. Copy elimination in functional languages. In Proceedings of the Sixteenth Annual ACM Symposium on the Principles of Programming Languages, Austin, TX, January 1989.
....(reuse) of an object v at a point P in the program where it can be shown that all other objects that may contain v are dead at P . He then develops a set of value transmission functions that can be used to determine the safety of a destructive use within the language SETL. Gopinath and Hennessy [10] address the problem of copy elimination by targeting, or the proper selection of a storage area for evaluating an expression. For the lambda calculus extended with array operation constructs, they develop a set of equations which, when solved iteratively to a fixpoint, specify targets for array ....
K. Gopinath and J. L. Hennessy. Copy elimination in functional languages. In Proceedings of the Sixteenth Annual ACM Symposium on the Principles of Programming Languages, Austin, TX, January 1989.
No context found.
Gopinath, K., and Hennessy, J. L. Copy elimination in functional languages. In Sixteenth Annual ACM Symposium on Principles of Programming Languages (Jan. 1989), pp. 303--314.
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