| William L. Harrison III. The interprocedural analysis and automatic parallelization of Scheme programs. LISP and Symbolic Computation, 2(3/4):179--396, October 1989. |
....describing its calling context and information out of a procedure describing its side effects. Three basic strategies have been used to avoid propagating information along unrealizable paths: 1) data flow sets are tagged with path history information that describes the path taken to derive a set [14, 45, 48, 30]; 2) data flow sets are tagged with some other identifying information related to a specific calling context [38] or (3) a side effect computation is performed, ignoring calling context [10] The third alternative avoids the unrealizable path problem entirely but cannot be applied to every ....
W. Harrison. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation, 2(3/4):179-396, Oct. 1989.
....tion or tagging data flow sets with a path history through the call graph. Tagging with a full path history incurs a data flow set expansion problem corresponding to the code explosion problem of inlining. As a result, most tagging approaches limit the length of a tag, thus sacrificing precision [54, 88, 105, 106]. Instead of tagging, which increases space regardless of whether context sensitivity improves analysis re sults, our system utilizes context sensitive information only when it provides unique data flow information through the use of selective procedure cloning. The region based flow sensitive ....
W. L. Harrison. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation, 2(3/4):179 396, October 1989.
....the propagation of information along realizable interprocedural execution paths. One traditional solution to this problem has been to include some context information in the abstraction being calculated [27] Typical examples of this approach include: memory components [34] procedure strings [18, 19], assumed alias sets [30] and source alias sets with the last call site [7] Rather than embedding the context in the abstraction being estimated, we have chosen to follow a different strategy where we explicitly represent all invocation paths in an invocation graph. In the case of programs ....
....An analogous problem of control flow analysis [40] has been studied in the domain of higher order languages. Here, the possibility of creating functions dynamically (for example, using lambda in Scheme) poses additional complexity. Different approaches to solve this problem have been proposed [10, 18, 35, 39, 40, 41]. In object oriented languages, call graph analysis becomes non trivial due to inheritance and function overloading. The method invoked from a call site depends on the type of the receiver, and static type determination is used to estimate control flow. Type analysis techniques have been developed ....
W. L. Harrison III. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation: an International Journal, 1989. 2(3/4):179--396.
....allocation may be an alternative [1, 3, 5] This article presents a static analysis to identify the objects that never escape the method of their creation. The analysis is based on the fact that an object escapes the method that created it, if and only if it is used after the method is deactivated[4]. To identify such cases, we record for each object its interprocedural behaviors of the method that created it. At each expression using the object, the analysis checks if its record contains the sign for the deactivation of the method of its creation. If so, the object is deemed escaping the ....
....uu , ud, and ud of m for object o imply that that the object may escape m. These seven abstract symbols cover all the cases of interprocedural movement of m after the creation of o. This record of the interprocedural behavior is based on the concept of procedure string in Harrison s work[4]. He proposed an escaping analyses for functional languages, to handle implicitly created objects such as cons cells and closures. Procedure string is the sequence of u s and d s to record the interprocedural behavior of running programs, where is a function (method) name. An abstract ....
[Article contains additional citation context not shown here]
W. L. Harrison. \The Interprocedural Analysis and Automatic Parallelization of scheme Programs". Lisp and Symbolic Computation, 2(3):179-396, 1989.
....and vice versa, but that is not the case for monomorphic objects. As the preceding discussion shows, ensuring non mutability involves a simple form of escape analysis on the part of the compiler which is conventionally performed using dataflow analysis or abstract interpretation [GP90, GPG91, HI89] Indeed, all the imperative type systems in the literature concentrate on the issue of type safety alone. In our case, we intend to model such simple form of escape analysis for free using the existing machinery of our type system that is already required to ensure its type safety. Our ....
W.L. Harrison III. The interprocedural analysis and automatic parallelization of scheme programs. Lisp and Symbolic Computation, 2(3-4):179--396, 1989.
....below. We would be inclined to think that is a valid transformation. There is a problem, though, with the observation that the loops could be run in parallel, since there are, under analysis 39 First run. Second run. Sequential version. v; v; v; 1, 2, 4, 4, 5] 1, 2, 4, 5, 5] [2, 3, 4, 5, 6]; Nondeterminism Figure 5.5: Nondeterminism used for languages like C or Fortran, no cross iteration dependencies. Look at what consecutive Parallel ISETL runs of the cdoall code from the above example produces below. We see we did not preserve sequential consistency under our naively sensible ....
....version) Figure 7.20: Varying Processors for Hoisted Setformerdoall Queens regions of parallelism within the top level invocation. By this I mean that the recursive call would now not occur within the parallel construction, and would not be so blatantly protected from concurrency as such. See [3] for insightful splittings of recursion and parallelism into happily exploitable forms. Finally, we graph the many timings resulting from running our various 8 Queens algorithms on Parallel ISETL virtual machines with varying numbers of processors. Captions explain anything not straightforward ....
W.L. Harrison III. The Interprocedural Analysis and Automatic Parallelization of Scheme Programs. PhD thesis, University of Illinois at Urbana-Champaign, May 1989.
....in the system. The various components of the Explorer are described from Sections 2.4 to 2.8. Section 2.9 discusses the related work, and Section 2.10 summarizes the chapter. 2.1. Motivation There has been much progress in automatic parallelization in recent years[15] 18] 19] 21] 45] 51][57][62] 66] 101] 103] In particular, interprocedural analysis for both scalar and array variables has proven powerful enough to allow compilers to parallelize loops involving hundreds of lines of code and spanning several procedures. This coarse grain parallelism is critical to achieving effective ....
W. L. Harrison. "The interprocedural analysis and automatic parallelization of Scheme programs." Lisp and Symbolic Computation, Volume 2, Issue 3, pages 179--396, October 1989.
....in Figure 27. Sharir and Pnueli [1981] use call strings to encode the interprocedural call context and discriminate different instances of the same procedure. Jones and Muchnick [1982] develop a more general abstraction of the call stack, which is used to name activation records. Other methods [Harrison III 1989; Chow and Harrison 1992] present a naming technique for dynamically allocated objects based on procedure strings, a generalization of call strings that includes the call stack and its evolution. Deutsch [1990] names dynamically allocated objects based on an arbitrary abstraction of the machine ....
....to. In general where functions are first class objects, control flow analysis includes a function binding analysis that is essentially equivalent to function pointer analysis. Solutions for performing such a control flow analysis are given in [Shivers 1988; Neirynck et al. 1989; Sestoft 1989; Harrison III 1989; Mogensen 1989; Deutsch 1990] Chow and Harrison [1994] present an algorithm for analyzing programs with pointers and closures that is conceptually similar to our algorithm for analyzing function pointers. Our iterative algorithm uses an approximation of the PCG to perform an analysis that ....
Harrison III, W. L. 1989. The interprocedural analysis and automatic parallelisation of Scheme programs. Lisp and Symbolic Computation 2, 3 (Oct.), 176--396.
....an accurate approximation to the set of call sites reached by a lambda expression can be expensive; because the relationship between lambda and call expressions is data dependent, it is both a dataflow and a control flow problem. This problem has been treated in detail by Shivers [41] and Harrison [20], while simpler, less accurate solutions are used by Sestoft s closure analysis [40] Bondorf s variant of this analysis [4] and Consel s higher order binding time analysis [12] All of these analyses compute correct solutions; our concern is with accuracy. If an overly large set of potential ....
....functions at each call site in order to compute their return types, instead of attempting to build and instantiate type signatures for functions. 5. 4 Control Flow Analysis Control flow analysis for Scheme programs has been investigated extensively in the context of parallelization by Harrison [20] and in the context of program optimization by Shivers [41] Existing applications of control flow analysis to program specialization are Bondorf s application [4] of Sestoft s closure analysis [40] and Consel s higher order binding time analysis [12] Both of these 44 analyses operate on source ....
W. L. Harrison III. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation: An International Journal 2:3/4:, pages 179--396, 1989.
....name j new c m method name j e ; e x variable name j this j if e then e else e j e:m(e) head : 3D head:x j this j x Fig. 1 Syntax of the language The analysis is based on the fact that an object escapes the method that created it, if and only if it is used after the method is deactivated[4]. To identify such cases, we record for each object its interprocedural behaviors of the method that created it. At each expression using the object, the analysis checks if its record contains the sign for the deactivation of the method of its creation. If so, the object is deemed escaping the ....
....and ud of m for object o imply that that the object may escape m. These seven abstract symbols are proved to cover all the cases of interprocedural movement of m after the creation of o. This record of the interprocedural behavior is based on the concept of procedure string in Harrison s work[4]. He proposed an escaping analyses for functional languages, to handle implicitly created objects such as cons cells and closures. Procedure string is the sequence of u s and d s to record the interprocedural behavior of running programs, where is a function (method) name. An abstract ....
[Article contains additional citation context not shown here]
W. L. Harrison. \The Interprocedural Analysis and Automatic Parallelization of scheme Programs". Lisp and Symbolic Computation, 2(3):179-396, 1989.
....the set of functions it could be bound to. In general where functions are first class objects, control flow analysis includes a function binding analysis that is essentially equivalent to function pointer analysis. Solutions for performing such a control flow analysis are given in [Deutsch 1990; Harrison 1989; Mogensen 1989; Neirynck et al. 1989; Sestoft 1989; Shivers 1988] Chow and Harrison [1994] present an algorithm for analyzing programs with pointers and closures that is conceptually similar to our algorithm for analyzing function pointers. Our iterative algorithm uses an approximation of the ....
Harrison, W. L., III. 1989. The interprocedural analysis and automatic parallelisation of Scheme programs. Lisp and Symbolic Computation 2, 3 (Oct.), 176--396.
....effective algorithms for loop nests that manipulate dense matrices using affine access functions[13] there has been little progress towards the successful automatic analysis of programs that manipulate pointer based data structures. Researchers have attempted to build totally automatic systems [8], but the most promising approaches require the programmer to provide annotations that specify information about the global topology of the manipulated data structures[9] A second, more fundamental limitation of datadependence based approaches is an inability to parallelize computations that ....
W.L. Harrison. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation, 2(3/4):179--396, October 1989.
....the other hand, must simultaneously compute control and data flow information since the operator at a call site must be determined from data flow information. Several abstract interpretation based approaches have been applied to the problem of flow analyzing higher order languages [Ayers 1993; Harrison III 1989; Jagannathan and Weeks 1995; Shivers 1991; Yi and Harrison III 1993] Each approach addresses one or more of the following important aspects of the problem: accurate treatment of mutable data structures, use of type tests to constrain abstract values, use of polyvariance to increase ....
....is defined that collects information about the value of an expression. The static analysis is then expressed as an abstraction of the collecting semantics. Our semantics di#ers in that both the collecting and abstract semantics are defined operationally. Shivers [Shivers 1991] and Harrison [Harrison III 1989] describe flow analyses for Scheme that are based on abstract interpretation. They di#er primarily in the details of the source language and the range of accuracy they can express. Our analysis draws from the advantages of each approach. Like Shivers analysis, we use CPS to make control transfers ....
Harrison III, W. L. 1989. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation 2, 3/4, 179--396.
....be defined. A more detailed description of this approach can be found in [Consel 1993a] Examples of polyvariant functions (or more generally, of contexts of analysis) include the current call chain, lexical context, and the abstract values of arguments of procedure calls (e.g. see [Consel 1993a; Harrison III 1989; Shivers 1991] Notice that a monovariant analysis can be obtained by defining # to be a constant function mapping to a unique partition. We now turn to describing a concrete algorithm that implements the generic analysis. In essence, the algorithm is driven by the need to analyze application ....
....their use context changes. Le Charlier et al. describe an algorithm for analyzing Prolog programs [Charlier, Musumbu, and Hentenryck 1991] Both of these strategies reanalyze equations by need as does ours. Several other static analyzers for higher order languages appear in the literature (e.g. [Harrison III 1989; Shivers 1991; Young 1989] None of these works address parameterized polyvariance, nor do they make any attempt to optimize the analysis process (e.g. reanalyzing equations by need) 6. CONCLUSIONS We have presented a general purpose algorithm for computing fixpoints in the polyvariant ....
Harrison III, W. L. 1989. The interprocedural analysis and automatic parallelization of scheme programs. Lisp and Symbolic Computation 2, 3/4, 179--396.
....series expressions into loops in the context of their program synthesis project. Its underlying idea 8 is the same as incrementalization, but series expressions consist of operations on aggregates, not through recursion, so it is easier to use rules for each aggregate operation. Harrison [23] studied parallelization of Scheme programs in his dissertation work by compiling recursions to iterations using stacks that are compiled as vectors. Interprocedural analysis is used for determining stack allocation and deallocation in the presence of side effects. His techniques can handle only ....
....simply turns recursion into iteration several years back. Allen Brown first brought up the work on program schematology. Alberto Pettorossi first provided reference [42] Steve Johnson pushed to see how to derive tail recursion from general recursion. Andrew Appel pointed out reference [23]. Colin Runciman suggested a reference that led to references [20] and [21] Neil Jones provided good insights into several related works and explained to us his complexity results regarding recursion, tail recursion, and higher order types [26] Will Clinger helped with providing his measurements ....
W. L. Harrison, III. The interprocedural analysis and automatic parallellization of scheme programs. Lisp and Symbolic Computation, 2(3/4):179--396, Oct. 1989.
....the escape information when a method is called in different escape contexts. This analysis is applied to stack allocation and synchronization elimination. It is however more costly than ours. Alias analysis [13] reference counting [18, 19] storage use analysis [29] which is similar to [12, 17, 22, 30] can be applied to stack allocation though at a much higher cost. Another allocation optimization has been suggested in [1, 3, 31] region allocation. All objects are allocated in heap regions whose size is not known statically in general, but for which we know when they can be deallocated. ....
Harrison, W. The interprocedural analysis and automatic parallelisation of Scheme programs. Lisp and Symbolic Computation 2 (1989), 176 -- 396.
....in memory addresses of data to be deallocated in order to avoid using the GC. The work closest to Hughes is [25] by Inoue, Seki and Yagi, who only free the top of lists, but give experimental results. Alias analysis [13] reference counting [22, 19] storage use analysis [34] which is similar to [26, 18, 12, 35] can be applied to stack allocation though at a much higher cost. Another allocation optimization has been suggested in [38, 5, 2] region allocation. All objects are allocated in heap regions whose size is not known statically in general, but for which we know when they can be deallocated. ....
Harrison, W. The interprocedural analysis and automatic parallelisation of Scheme programs. Lisp and Symbolic Computation 2 (1989), 176 -- 396.
.... can be used to drive program transformations like partial evaluation [9] and closure conversion [22] as well as compiler optimizations like type recovery [19] and the selection of closure representations [18] There are several abstract interpretation based approaches to the flow analysis problem [13, 15, 20, 24] # Author s current address: Snow Hall 415, Lawrence, KS, 66045. E mail: jashley eecs.ukans.edu. and they collectively identify several important aspects of it: the accurate treatment of mutable data structures, the use of type tests to constrain abstract values, the use of polyvariance ....
....in the continuation of the call every mutable location has the abstract value unknown . The goal of our initial experiments is to determine whether analyses that are faster but less precise than 0CFA can justify useful optimizations. That 0CFA is useful has been established in previous work [13, 14, 15, 20]. Since the analysis is targeted for both interactive and noninteractive use, however, it is important to know if a faster but less accurate instantiation of the analysis is still useful. To determine this, the analysis is instantiated to employ the identity function for d new and a nontrivial ....
[Article contains additional citation context not shown here]
W. L. Harrison III. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation, 2(3/4):179--396, 1989.
....derived, and the contour describes the analysis context in which the abstract closure was created. The function F can therefore be viewed as a projection function that maps relatively rich abstract values to the simpler abstract values needed by the inliner. Many flow analyses, both monovariant [2, 4, 6, 15, 16, 23, 25] and polyvariant [3, 11, 17] produce results that can be cast into the form of function F . Polyvariant analyses use contours to segregate abstract values and improve the accuracy of the analysis. Most analyses create a new contour at each variable binding point and use it while analyzing the ....
....choice dictates an analysis splitting strategy. There are two popular strategies. The first uses the variables bindings to guide contour creation [11] The second uses the calling context in which the bindings are established. The second strategy is often referred to as the cal l string approach [15, 17, 25]. Consider the following program as an example. let ( f (# (x) x) begin (f2) f5) In this program the procedure bound to f is called at two points. Depending on the splitting strategy, a polyvariant analysis might create either one or two contours in which to analyze the procedure s ....
W. L. Harrison III. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation, 2(3/4):179--396, 1989.
....derived, and the contour describes the analysis context in which the abstract closure was created. The function F can therefore be viewed as a projection function that maps relatively rich abstract values to the simpler abstract values needed by the inliner. Many flow analyses, both monovariant [2, 4, 6, 15, 16, 23, 25] and polyvariant [3, 11, 17] produce results that can be cast into the form of function F . Polyvariant analyses use contours to segregate abstract values and improve the accuracy of the analysis. Most analyses create a new contour at each variable binding point and use it while analyzing the ....
....choice dictates an analysis splitting strategy. There are two popular strategies. The first uses the variables bindings to guide contour creation [11] The second uses the calling context in which the bindings are established. The second strategy is often referred to as the call string approach [15, 17, 25]. Consider the following program as an example. let ( f ( x) x) begin (f 2) f 5) In this program the procedure bound to f is called at two points. Depending on the splitting strategy, a polyvariant analysis might create either one or two contours in which to analyze the procedure s body. ....
W. L. Harrison III. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation, 2(3/4):179--396, 1989.
....series expressions into loops in the context of their program synthesis project. Its underlying idea is the same as incrementalization, but series expressions consist of operations on aggregates, not through recursion, so it is easier to use rules for each aggregate operation. Harrison [23] studied parallelization of Scheme programs in his dissertation work by compiling recursions to iterations using stacks that are compiled as vectors. Interprocedural analysis are used for determining stack allocation and deallocation in the presence of side e ects. His techniques can handle only ....
....simply turns recursion into iteration several years back. Allen Brown rst brought up the work on program schematology. Alberto Pettorossi rst provided reference [42] Steve Johnson pushed to see how to derive tail recursion from general recursion. Andrew Appel pointed out reference [23]. Colin Runciman suggested a reference that led to references [20] and [21] Neil Jones explained in details his new complexity results regarding recursion, tail recursion, and higher order types [26] and provided good insights into several related works. ....
W. L. Harrison, III. The interprocedural analysis and automatic parallellization of scheme programs. Lisp and Symbolic Computation, 2(3/4):179-396, Oct. 1989.
....optimization techniques in the compiler. Data structures are then always conceptually immutable, but the optimizer might transform copying updates into in place updates whenever it is recognized that the transformation is semantics preserving. Some published techniques for update optimization are [1, 4, 5, 6]. Optimization techniques have the advantage that they do not change the context rules of the compiled language. Even if optimization fails, the program is still legal. The downside is that a programmer must have a very good understanding of the optimizer s capabilities in order to know which ....
W.L. Harrison. The interprocedural analysis and automatic parallelization of Scheme programs. Lisp and Symbolic Computation 2(3/4), October 1989.
No context found.
William L. Harrison III. The interprocedural analysis and automatic parallelization of Scheme programs. LISP and Symbolic Computation, 2(3/4):179--396, October 1989.
No context found.
Harrison, W. L. The Interprocedural Analysis and Automatic Parallelization of Scheme Programs. In Lisp and Symbolic Computation, an Internal Journal, 2 (3). 1989.
No context found.
Harrison III, W. L. 1989. The interprocedural analysis and automatic parallelization of Scheme programs. LISP and Symbolic Computation, 2, 3-4 (Oct.), 179--396.
First 50 documents Next 50
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