| James R. Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, Computer Science Division (EECS), University of California, Berkeley, CA, May 1989. 161 |
....users or certifying compilers to have far more control over the memory management of complex data structures. To demonstrate this fact, we show how two classes of space optimization can be encoded in a language based on recursive alias types. The rst optimization, called destination passing style [41, 22, 7, 24] transforms algorithms that are tail recursive modulo allocation into properly tail recursive algorithms, thereby avoiding the space overheads of a control stack. The second optimization shows how we can safely encode Deutsch Schorr Waite algorithms [35] for traversing a tree using minimal ....
....style (DPS) transformation detects a certain form of almost tail recursive function and automatically transforms it into an ecient properly tail recursive function. The transformation improves many functional programs signi cantly, leading a number researchers to study the problem in depth [41, 22, 7, 24]. Our contribution is to provide a type system that can be used in a type preserving compiler and is capable of verifying that the code resulting from the transformation is safe. Append is the canonical example of a function suitable for DPS: fun append (xs,ys) case xs of [ ys hd : ....
James Richard Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California at Berkeley, May 1989. Available as Berkeley technical report UCB/CSD 89/502.
....creating (modr) writing (write) and reading (read) modi ables. Only values placed in a modi able can change over time the user controls the adaptivity by choosing where to place the modi ables. Any value, including functions, can be modi able. Modi ables are used in a destination passing style [6, 17, 9] the modr creates the destination which is passed into a body which is responsible for writing to it (examples are given in the next section) The reads take a modi able and a reader function as arguments. The reader function is applied to the value of the modi able, and is stored and rerun if the ....
James R. Larus. Restructuring Symbolic Programs for Concurrent Execution on a Multiprocessor. PhD thesis, University of California, Berkeley, California, 1989.
....users or certifying compilers to have far more control over the memory management of complex data structures. To demonstrate this fact, we show how two classes of space optimization can be encoded in a language based on recursive alias types. The first optimization, called destinationpassing style [41, 22, 7] transforms algorithms that are tailrecursive modulo allocation into properly tail recursive algorithms, thereby avoiding the space overheads of a control stack. The second optimization shows how we can safely encode Deutsch Schorr Waite algorithms [35] for traversing a tree using minimal ....
....style (DPS) transformation detects a certain form of almost tail recursive function and automatically transforms it into an efficient properly tailrecursive function. The transformation improves many functional programs significantly, leading a number researchers to study the problem in depth [41, 22, 7, 24]. Our contribution is to provide a type system that can be used in a type preserving compiler and is capable of verifying that the code resulting from the transformation is safe. Append is the canonical example of a function suitable for DPS: fun append (xs,ys) case xs of [ ys hd : ....
James Richard Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California at Berkeley, May 1989. Available as Berkeley technical report UCB/CSD 89/502.
....for each part of a program which models the effect of that part on an element of the lattice, and a meet operator which combines two elements into one. Three basic approaches to both structure analysis and the alias problem have been explored. These basic approaches are (1) explicit annotation [Lar89] 2) access paths [HN90] and (3) graph based approaches [CWZ90] Explicit annotations allow the user to supply the compiler with information which either cannot be derived, or is more easily verified than derived. In access path approaches, the aliases at each program point are described by pairs ....
James Richard Larus. Restructuring symbolic programs for concurrent execution on multiprocessors. Technical Report UCB/CSD 89/502, University of California at Berkeley, 1989. 19
....for recursive data structures. Thus, a mechanism for programmers to provide hints about the properties of data structures to compilers is needed to improve the analysis result. Laurus provides a language annotation for programmers to specify the acyclicness of a data structure in Lisp programs [Lar89] Hummel, Hendren and Nicolau [HHN92a, HHN92b] develop an approach called abstract description of data structure (ADDS) In their approach, the language provides some keywords such as uniquely, forward, backward, independent and dependent. A programmer can associate these key words with a pointer ....
James R. Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California, Berkeley, 1989. 154
....each in turn. 2.2.1. Related Transformation Work An enormous amount of work has been done on parallelizing relational queries (e.g. GERB86, SCHN89, GRAE90, KITS90, WOLF90, HUA91, WALT91, DEWI92a] Other work has been on parallelizing loops in FORTRAN (e.g. PADU86, WOLF86, WOLF89] and in LISP [LARU89]. All this work makes extensive use of program transformations. HART88, HART89] discuss their parallelizing compiler for FAD, a functional DBPL. They use analysis to determine if a program can correctly be executed in parallel bringing all the data to a central site and executing the program ....
....in alphabetical order of the Dept names. We would also like to formalize our tree based representation of rewrites described Chapter 5. It is currently an implementation technique; we would like to produce an algebra. Incorporating object sharing dataflow analysis of the sort described in [LARU89] is also a priority. Our dependence analysis is currently very conservative, and we would like to improve it. Applying the techniques developed here to nested SQL cursors embedded in COBOL or C would also be interesting. This is a common programming paradigm because some users don t trust the ....
James Larus. Ph.D Thesis. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. University of California (1989).
.... Sun workstations [100] or personal computers (e.g. PCs based on Intel s 486 processors [125] One way of using the multiprocessors is to make use of the huge investment in sequential software and build automatic parallelizing compilers for various languages, e.g. Fortran [52, 162] and Lisp [158]. But this approach relies mostly on detecting loop parallelism and is not able to make use of parallel algorithms. A parallelizing vectorizing compiler s task is further complicated for languages with side effects and aliasing mechanisms [102] This has resulted in a situation in which ....
James R. Larus. Restructuring Symbolic Programs for Concurrent Exectuion on Multiprocessors. PhD thesis, University of California at Berkeley, 1989. Also available as: Report No. UCB/CSD 89/502, May 1989, Cmputer Division (EECS), Berkeley, California 94720.
.... in its declaration [Sno89] Unlike ASAP however, these assertions do not aid analysis since the compiler does not understand their implication; the purpose of these assertions is to ensure validity at run time (in particular, as the structure is passed from one running program to another) Larus [Lar89] discussed a technique for describing acyclic structures in LISP; these were code annotations which conveyed the acyclicness of a data structure to the compiler. Another code annotation approach is that taken by Klappholz et al. in Refined C [KKK90] where explicit statements such as distinct are ....
James R. Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California, Berkeley, 1989.
.... is a matter of solving an algebraic equation constructed from the address functions of the associated array references [120, 5, 83] A newer, graph theoretic technique, which is based on data flow analysis, is aimed at linked list data structures that use pointers with implicit addresses [79, 56]. Because the early vector implementations were used for scientific programs that modeled physical phenomena in a discrete fashion that is a good match for 26 the array data structure, vectorizing compilers typically use the algebraic method. Two critical aspects of any dependence analyzer are ....
James Richard Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California at Berkeley, Computer Science Division (EECS), May 1982. Also published as Technical Report No. UCB/CSD 89/502.
....analysis computes information about the potential behavior of a program in terms of the definitions and uses of data objects. Such data flow information is important in providing compiler and run time support for the parallel execution of programs originally written in sequential languages [2, 3, 28, 16]. It is also important for compilers and programming environment tools [2, 11, 23] Data flow analysis for programs written in languages with only static data structures IBM Thomas. J. Watson Research Center P. O. Box 704 Yorktown Heights, NY 10598 y State University of New York at New Paltz, ....
....the computation proceeds, the size of the kill set at each call site does not increase, while the size of alias information at each statement does not decrease. Hence, monotonicity in our framework of alias analysis is still maintained in the presence of function pointers. 6 Related Work Larus [28] gives a flow insensitive intraprocedural algorithm to compute aliases in LISP programs. This algorithm uses alias graphs, which are similar to ours, but serve both as values propagated to solve data flow equations and as representations of statements effects on propagated values [28] He uses ....
[Article contains additional citation context not shown here]
James Richard Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California, 1989. Technical Report No. UCB/CSD 89/502.
....represent a compromise, since the programmer can specify what the compiler cannot determine. However, code annotations are often difficult to use, due to the varied kinds of information that must be conveyed to the compiler. For example, the programmer may need to specify the data dependencies [Lar89], the transformation to apply [CON] or the distinctness of data [KKK90] Also, the compiler typically takes these annotations on blind faith, and so is unable to warn the programmer if a coding change invalidates an annotation; this is true for [Lar89, CON] while in [KKK90] it was suggested ....
.... may need to specify the data dependencies [Lar89] the transformation to apply [CON] or the distinctness of data [KKK90] Also, the compiler typically takes these annotations on blind faith, and so is unable to warn the programmer if a coding change invalidates an annotation; this is true for [Lar89, CON], while in [KKK90] it was suggested that the system could perform dynamic checks provided that the programmer uniquely tags each node. Finally, such annotations must be repeated throughout the program to maximize performance. 2 Our Approach Based on our past experience of developing alias ....
[Article contains additional citation context not shown here]
James R. Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California, Berkeley, 1989.
....analysis computes information about the potential behavior of a program in terms of the definitions and uses of data objects. Such data flow information is important in providing compiler and run time support for the parallel execution of programs originally written in sequential languages [2, 3, 25, 14]. It is also important for compilers and programming environment tools [2, 10, 21] Data flow analysis for programs written in languages with only static data structures (i.e. arrays) such as FORTRAN, enjoys numerous techniques developed for it. However, data flow analysis for programs written ....
....without incurring the overhead of full alias analysis. This way, it can be used as a general method to construct the PCG, independently of any other data flow analysis such as the alias analysis of regular pointers described in this paper. More details are provided in [7] 6 Related Work Larus [25] gives a flow insensitive intraprocedural algorithm to compute aliases in LISP programs. This algorithm uses alias graphs, which are similar to ours, but serve both as values propagated to solve data flow equations and as representations of statements effects on propagated values [25] He uses ....
[Article contains additional citation context not shown here]
James Richard Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California, 1989. Technical Report No. UCB/CSD 89/502.
No context found.
James R. Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, Computer Science Division (EECS), University of California, Berkeley, CA, May 1989. 161
No context found.
James Richard Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California at Berkeley, May 1989. Available as Berkeley technical report UCB/CSD 89/502.
No context found.
James Richard Larus. Restructuring Symbolic Programs for Concurrent Execution on Multiprocessors. PhD thesis, University of California at Berkeley, May 1989. Available as Berkeley technical report UCB/CSD 89/502.
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