| A. Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, Sydney, Australia, 1991. |
....[9] additionally traces the principal functor of variable bindings. Compoundness information can aid indexing. Applications of sharing and freeness information are numerous and include: the sound removal of the occurcheck [25] optimisation of backtracking [5] the specialisation of unification [27]; and the identification [28, 13] and efficient exploitation [23, 14, 24] of independent and parallelism. Early proposals for sharing, freeness and compoundness analyses include [29, 12, 20] 23] and [21] This paper is concerned with a semantic basis for sharing, freeness and compoundness ....
A. Taylor. High Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, NSW 2006.
....which program variables are definitely grounded and which variables can never be bound to terms containing a common variable. Applications of sharing analysis are numerous and include: the sound removal of the occur check [22] optimisation of backtracking [3] the specialisation of unification [24]; and the elimination of costly checks in independent and parallelism [20, 14, 21] Early proposals for sharing analysis include [25, 10, 19] This paper is concerned with a semantic basis for sharing analysis, and in particular, the justification of a high precision abstract unification ....
A. Taylor. High Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, Sydney, Australia, July 1991.
....into the intermediary code of an abstract machine. A further translation step compiles the intermediary code into machine code. Often the WAM instruction set has been extended and refined considerably. In particular systems for native code generation prefer a more refined level (BAM [8] and PARMA [12]) Binary Prolog reduced WAM. Prolog is first translated into a subset called binary Prolog. Only this representation is used for further translation. Since binary Prolog encodes AND control with the help of terms, the instruction set required is reduced. All instructions with environment ....
A. Taylor. High-Performance Prolog Implementation. Ph.D. dissertation, University of Sydney, June 1991.
....a maximum length of one. DU with lazy variables allows dereference chains to cross sites. When the value is needed, the binding is requested from the owner. If the binding is another variable, then the process is repeated. Each iteration of this process corresponds to a dereference operation. Taylor [1991] presents a centralized binding algorithm that avoids all dereference chains. Variables that are bound together are put into a circular linked list. When one of them is bound to a value, the list is traversed and all members are bound. This makes accessing a variable s value a constant time ....
Taylor, A. 1991. High-performance Prolog implementation. Ph.D. thesis, Basser Department of Computer Science, University of Sydney.
....to terms that have no variables in common. Thus, when an analysis concludes that two variables are not possibly aliased we can deduce that they are definitely independent. It is also worth noticing that another property of interest in logic programming is the dual concept of definite aliasing [56,59]. Definite aliasing, however, is beyond the scope of this paper. Before continuing, a brief note on terminology: a variable is free if it is unbound, it is ground if it is bound to a term containing no variables, it is linear if it is free or ground or bound to a term that does not contain ....
A. Taylor. High Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, University of Sydney, Sydney, Australia, June 1991.
....which program variables are definitely grounded and which variables can never be bound to terms containing a common variable. Applications of sharing analysis are numerous and include: the sound removal of the occur check [22] optimisation of backtracking [3] the specialisation of unification [24]; and the elimination of costly checks in independent and parallelism [20, 14, 21] Early proposals for sharing analysis include [25, 10, 19] This paper is concerned with a semantic basis for sharing analysis, and in particular, the justification of a high precision abstract unification ....
A. Taylor. High Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, Sydney, Australia, July 1991.
....bound to terms that have no variables in common. Thus, when an analysis concludes that two variables are not possibly aliased we can deduce that they are de nitely independent. It is also worth noticing that another property of interest in logic programming is the dual concept of de nite aliasing [56,59]. De nite aliasing, however, is beyond the scope of this paper. Before continuing, a brief note on terminology: a variable is free if it is unbound, it is ground if it is bound to a term containing no variables, it is linear if it is free or ground or bound to a term that does not contain ....
A. Taylor. High Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, University of Sydney, Sydney, Australia, June 1991.
....to use a limited number of very high speed processors in a system. The most important goal must therefore be to minimize the overhead in sequential execution. The second (also very important) goal is to optimize parallel performance. The principle is even more important for the new generation [72, 87, 85, 88] of very efficient sequential Prolog systems. Then a very small absolute overhead may add a very high relative overhead. In this section we add side effects (described in Section 7.7.3) cut (described in Section 7.7.4) and all solutions predicates (described in Section 7.7.6) all requiring the ....
Andrew Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, 1991.
....alias. This is because this would require a free alias variable to record the address of more than one memory location to be lled in when the variable is instantiated. While this could be implemented, using either terminated pointer chains as in the WAM [1] or circular pointer chains as in PARMA [15], the overhead required is very likely to outweigh the bene ts gained by LCMC. Note that the PARMA scheme has actually been implemented for Mercury by the HAL project [10] An argument of a procedure whose mode is free alias ground will be passed by reference. The code generator will reserve ....
Andrew Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, 1991.
....This is because this would require a free alias variable to record the address of more than one memory location to be filled in when the variable is instantiated. While this could be implemented, using either terminated pointer chains as in the WAM [1] or circular pointer chains as in PARMA [15], the overhead required is very likely to outweigh the benefits gained by LCMC. Note that the PARMA scheme has actually been implemented for Mercury by the HAL project [10] An argument of a procedure whose mode is free alias ground will be passed by reference. The code generator will ....
Andrew Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, 1991.
....the goals A and B have to be independent. Definite independence information can be statically computed by means of a sharing analysis [23, 16] Freeness For a Prolog compiler the most useful information about a variable at a particular program point is that it is always bound or always free [28, 26]. Freeness is not closed under instantiation. Thus, a variable X may lose its freeness, because another variable is instantiated. In order to compute non trivial and correct freeness information, one has to know about possible sharing between variables. Occur Check If a variable X is unified ....
Andrew Taylor. High Performance Prolog Implementation. PhD thesis, University of Sidney, 1991.
....variable, it is not possible to unify two variables whose final insts are free alias. This means that the LCMC optimisation can only be applied if each output from the recursive call is used in at most one field of one construction unification. Other representations, e.g. the one used in PARMA [12], would allow us to avoid this limitation. However, they would also be much more expensive, and we believe their cost would outweigh the benefits gained by LCMC. An argument of a procedure is pass by reference if its mode is free alias ground. The code generator will assign an input register to ....
Andrew Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, 1991.
....the acceptance of declarative programming languages is the availability of efficient implementations. Sophisticated techniques for implementing single paradigm programming languages exist, for lazy functional languages [Joh84,KvEN 90,PL92,Pey92,LH92] and for logic languages [War83,AK91,VR90,Tay91,Hay94] Traditionally, different implementation techniques for functional languages are distinguished by the chosen evaluation order, which is either strict or lazy, and of which strict evaluation Preprint submitted to Elsevier Preprint 10 January was generally considered to be more efficient. ....
....than in the technology invented to implement lazy functional languages. A compilation scheme built around a variant of the WAM, which has some remarkable common points with the JUMP machine is presented in [VR90] and used in the Aquarius Prolog Compiler. The Aquarius system and the PARMA system [Tay91] are highly efficient; for an overview, see Van Roy s survey [VR94] A further interesting approach is the language Mercury and its implementation [SHC96] It is a logic language with strong typing and a sophisticated mode system restricting the possible dataflow; Mercury has a highly efficient ....
A. Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, 1991.
....maximum length of one. DU with lazy variables allows dereference chains to cross sites. When the value is needed, the binding is requested from the owner. If the binding is another variable, then the process is repeated. Each iteration of this process corresponds to a dereference operation. Taylor [34] presents a centralized binding algorithm that avoids all dereference chains. Variables that are bound together are put into a circular linked list. When one of them is bound to a value, the list is traversed and all members are bound. This makes accessing a variable s value a constant time ....
Andrew Taylor. High-Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, University of Sydney, June 1991.
....We included NU Prolog because of its pioneering implementation of coroutining. We included SWI Prolog because its portability and free availability should enable every reader to calibrate our results. We would have liked to run the benchmarks on some other systems as well, Quintus Prolog and PARMA [19] in particular, but we do not have access to those. For all the Mercury benchmarks we report on, the code we tested came straight out of the compiler; we did not modify any of them in any way. Since we have not yet incorporated the optimizations described in section 5 into the compiler, our ....
....on only a few machines. Given that the only optimizations implemented by the Mercury compiler so far are some forms of indexing and some local peephole optimizations, these results reflect the inherent efficiency of the basic Mercury execution algorithm from 2 Andrew Taylor, the author of PARMA [19], has seen the C code generated by the Mercury compiler and the assembly code generated from that by gcc. He says that for the examples he looked at, Mercury usually generates better code than PARMA. System Variant cqueens crypt deriv nrev poly primes qsort queens query tak unit msec msec usec ....
[Article contains additional citation context not shown here]
A. Taylor. High performance Prolog implementation. PhD thesis, University of Sydney, Australia, June 1991.
....; G = cut(C) G = p1(X1, Xn1) p1(X1, Xn1) G = pk(X1, Xnk) pk(X1, Xnk) raiseexception( In essence, we add a specialized meta interpreter per module that uses call 1. This has the advantage that modules that do not require call 1 are not affected. Taylor [14] proposes that predicates that can be invoked by call 1 be marked as callable . In that case, the latter part of the case expression can be pruned. Dynamic calls. Prolog implementations often require dynamically modified predicates to be declared as such. In that case, we can simply provide a ....
....work. Future work involves extending the analysis to handle exceptions and dynamic scheduling, improving the precision of the CFA, developing optimizations based on the ideas developed in this paper [10] and using the CFG for native code compilation. We expect previously developed techniques [17, 14] to be useful in the latter regard. Acknowledgements. I would like to thank Per Mildner and Hakan Millroth for valuable discussions and their comments on this paper, and Saumya Debray for valuable comments. I am grateful to the anonymous referees for suggestions that improved the presentation and ....
A. Taylor, High Performance Prolog Implementation, Ph.D. Thesis, Basser Dept. of Computer Science, Sydney University, 1991.
....showing a performance comparable to native code Prolog compilers. Keywords: Prolog Compilation, Code Specialization, Program Analysis. 1 Introduction The efficiency of a Prolog compiler is normally associated with two aspects: a program analyzer and the generation of native code. Parma [Tay91] and Aquarius [Van90] are two of the most efficient Prolog compilers and both generate native code and have a program analysis phase. The analysis phase is normally done by applying a technique named abstract interpretation [CC92] to the source program. This analysis generates information about ....
A. Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, June 1991.
No context found.
A. Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, Sydney, Australia, 1991.
No context found.
A. Taylor. High-Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, Unversity of Sidney, June 1991.
No context found.
A. Taylor. High-Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, Unversity of Sidney, June 1991.
No context found.
Taylor, A.: High-Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, Unversity of Sidney (1991)
No context found.
A. Taylor. High-Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, Unversity of Sidney, June 1991.
No context found.
Andrew Taylor. High Performance Prolog Implementation. PhD thesis, University of Sydney, 1991.
No context found.
A. Taylor. High-Performance Prolog Implementation. PhD thesis, Basser Department of Computer Science, Unversity of Sidney, June 1991.
No context found.
Andrew Taylor. High Performance Prolog Implementation. Basser Department of Computer Science, University of Sydney. Thesis for Doctor of Philosophy, 1991.
First 50 documents
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