| P. A. Bigot, D. Gudeman, S. K. Debray. Output Value Placement in Moded Logic Programs. 175--189 ICLP 1994, MIT Press. |
....additional di#erences t[ms] 1 2 3 init de 1434 1.23 1.51 1.86 uninit de 1433 1.03 1.05 1.19 init e 2808 1.27 1.58 1.88 uninit e 2160 1.01 1.02 1.05 Overheads for di#erences in Aquarius Output value placement. Bigot, Gudeman and Debray propose to allocate output arguments in registers [1] and present a cost model for guiding allocation. In our setting many of the programs like p 2 cannot be optimized directly. As Debray remarks last call optimization (LCO) often interferes with interprocedural register allocation . Most of these cases do not oc13 cur in the context of our ....
P. A. Bigot, D. Gudeman, S. K. Debray. Output Value Placement in Moded Logic Programs. 175--189 ICLP 1994, MIT Press.
....arguments derived was given. The recently developed strongly typed, strongly moded logic programming language Mercury [133] restricts programs so that outputs are always uninitialized. A recent release performs a mode analysis similar to the one proposed in Paper C. Bigot, Gudeman and Debray [22] have developed an alternative to Van Roy s algorithm, which they use to decide which output arguments should be returned in registers, and which should be returned in memory. It may be interesting to consider this for our benchmark set, and to possibly use multiple versions of a predicate for ....
....the address of the variable pushed on a stack if the variable is too old, and finally the new value is stored in the cell. An important special case is the uninitialized variable, first studied by Beer [14] and further explored by Van Roy [154] Getzinger [58, 57] and Bigot, Gudeman and Debray [22]. Roughly speaking, a variable is uninitialized if it is unaliased and appears the first time in the current goal. An uninitialized variable corresponds to an output argument of a predicate call, and the binding of an uninitialized variable can be reduced to assignment (either of a register or a ....
[Article contains additional citation context not shown here]
P. Bigot, D. Gudeman, S.K. Debray, Output value placement in moded logic programs, in Logic Programming: Proceedings of the Eleventh International Conference, MIT Press, 1994. f18, 56, 69g 137
....(or program fragments) that do not exhibit any suspension, effectively penalizing good programmers and carefully crafted programs. For example, it has been shown that significant improvements in performance can be obtained by returning output values of procedures in registers instead of in memory [1, 21], or with knowledge of lengths of dereference chains [17] However, in a language with delay mechanisms, there is always the possibility that normal execution may be pre empted by a newly awakened goal that may overwrite a register containing an output value or change the length of a dereference ....
....values into them) unless additional work is done both at suspension time and when the suspended activation is resumed to ensure that values are propagated correctly. This can become fairly complicated and incur performance penalties. A much simpler solution that works well in practice (see [1]) is to consider returning output values in registers only for procedures that can be guaranteed to be non suspending. It turns out, however, that weak non suspension is inadequate for this optimization. The reason is that if an output value is returned in a register, that register must not be ....
[Article contains additional citation context not shown here]
P. Bigot, D. Gudeman, and S. K. Debray, "Output Value Placement in Moded Logic Programs", Proc. Eleventh Int. Conf. on Logic Programming, June 1994, pp. 175--189. MIT Press.
....pointers, e.g. into arrays or lists; integer registers, which hold untagged integer values; and floating point registers, which hold untagged floating point values. We use a cost based model to decide whether a particular output should be returned in memory or in (tagged or untagged) registers [5]. 1 To meet the analysis requirements of Section 3.1 and allow the use of untagged registers for parameter passing requires a combination of mode analysis, which identifies the input and output arguments of a procedure; suspension analysis, which identifies procedures that can be guaranteed to ....
....of mode analysis, which identifies the input and output arguments of a procedure; suspension analysis, which identifies procedures that can be guaranteed to not suspend during execution; and type inference. This information is available under the assumptions in Section 2.1. 1 The discussion in [5] considers returns in memory and tagged registers only. Since then, we have extended our implementation, and the associated cost model, to handle untagged register returns as well. 6 Representation Analysis for a Program. 1. Use inter procedural representation analysis to determine the ....
[Article contains additional citation context not shown here]
P. A. Bigot, D. Gudeman, and S. K. Debray, "Output Value Placement in Moded Logic Programs", Proc. Eleventh International Conf. on Logic Programming, June 1994, pp. 175--189. MIT Press.
....ps, is statically known, the expression parity(e 2 ; ps) can be evaluated at specialization time: under the assumption above, this evaluates to Odd. Working through the rest of the specialization in this manner for this code fragment yields the following specialized code: let Odd(w; z) vs[2] in Even(vs[1] w; z) Note that this residual code does exactly what we want: it retrieves the value vs[2] of x 2 , then with the knowledge that it is an odd length list, i.e. with a binary constructor Odd deconstructs it to get its components w and z, and finally, constructs the even length ....
....the assumption above, this evaluates to Odd. Working through the rest of the specialization in this manner for this code fragment yields the following specialized code: let Odd(w; z) vs[2] in Even(vs[1] w; z) Note that this residual code does exactly what we want: it retrieves the value vs[2] of x 2 , then with the knowledge that it is an odd length list, i.e. with a binary constructor Odd deconstructs it to get its components w and z, and finally, constructs the even length list Even(vs[1] w; z) resulting from the cons operation. 2 1 We don t have the space to discuss parity ....
[Article contains additional citation context not shown here]
P. A. Bigot, D. Gudeman, and S. K. Debray, "Output Value Placement in Moded Logic Programs", Proc. Eleventh International Conference on Logic Programming, Santa Margherita Ligure, Italy, June 1994, pp. 175--189.
....based on the amount of work that would have to be done if those locations were chosen without assuming anything about placements in other procedures. The second pass processes procedures in decreasing order of execution frequency (obtained either using heuristics based on program structure [5, 20] or using execution profiles generated from training runs of the program) and does a greedy bottomup assignment of output locations. A high level overview of the method appears in Figure 1. The costs incurred by different placements are determined by considering the features of the various ....
....this paper correspond to gcc 2.6. 3 invoked with O2 fomit frame pointer) to compile the resulting program to executable code (the current system uses heuristics based on the structure of the program to estimate execution frequencies [20] a detailed discussion of the heuristics used appears in [5]; in principle, this information could also be obtained using profile information obtained from training runs of the programs, but we have not implemented this yet) An early version of the system is described in [10] and a prototype of the system as well as the code for the benchmarks is ....
P. A. Bigot, D. Gudeman, and S. K. Debray, "Output Value Placement in Moded Logic Programs", Technical Report 94-03, Department of Computer Science, The University of Arizona, Tucson, Jan. 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