Results 1 -
8 of
8
So many WAM variations, so little time.
"... . The WAM allows within its framework many variations e.g. regarding the term representation, the instruction set and the memory organization. Consequently several Prolog systems have implemented successful variants of the WAM. While these variants are eective within their own context, it is dic ..."
Abstract
-
Cited by 41 (25 self)
- Add to MetaCart
. The WAM allows within its framework many variations e.g. regarding the term representation, the instruction set and the memory organization. Consequently several Prolog systems have implemented successful variants of the WAM. While these variants are eective within their own context, it is dicult to assess the merit of their particular variation. In this work, four term representations that were used by at least one successful system are compared empirically within dProlog, one basic implementation which keeps all other things equal. We also report on dierent implementation choices in the dProlog emulator itself. dProlog is reasonably ecient, so it makes sense to use it for these experiments. 1
jc: An Efficient and Portable Sequential Implementation of Janus
- PROC. JOINT INTERNATIONAL CONFERENCE AND SYMPOSIUM ON LOGIC PROGRAMMING, WASHINGTON DC
, 1992
"... Janus is a language designed for distributed constraint programming [12]. This paper describes jc, an efficient and portable sequential implementation of Janus, which compiles Janus programs down to C code. Careful attention to the C code generated, together with some simple local optimizations, al ..."
Abstract
-
Cited by 22 (12 self)
- Add to MetaCart
Janus is a language designed for distributed constraint programming [12]. This paper describes jc, an efficient and portable sequential implementation of Janus, which compiles Janus programs down to C code. Careful attention to the C code generated, together with some simple local optimizations, allows the system to have fairly good performance despite the lack (at this time) of global flow analysis and optimization.
Abstract machines for programming language implementation
- FUTURE GENERATION COMPUTER SYSTEMS
, 2000
"... We present an extensive, annotated bibliography of the abstract machines designed for each of the main programming paradigms (imperative, object oriented, functional, logic and concurrent). We conclude that whilst a large number of efficient abstract machines have been designed for particular langua ..."
Abstract
-
Cited by 16 (0 self)
- Add to MetaCart
We present an extensive, annotated bibliography of the abstract machines designed for each of the main programming paradigms (imperative, object oriented, functional, logic and concurrent). We conclude that whilst a large number of efficient abstract machines have been designed for particular language implementations, relatively little work has been done to design abstract machines in a systematic fashion.
A new Scheme for Unification in WAM.
, 1991
"... Prolog spends about 50% of its execution time in unification. It is therefore worthwhile to investigate improvements to unification. The propagation of read-write mode in WAM is a candidate for improvement. We present a new translation scheme to deal with it. The scheme has the following advantages ..."
Abstract
-
Cited by 4 (1 self)
- Add to MetaCart
Prolog spends about 50% of its execution time in unification. It is therefore worthwhile to investigate improvements to unification. The propagation of read-write mode in WAM is a candidate for improvement. We present a new translation scheme to deal with it. The scheme has the following advantages: there is no code explosion; for right sided structures - the usual form lists take in Prolog programs - there is no overhead in the propagation of the read-write mode; for left sided structures, the overhead is made very small by rearranging the order in which the arguments of the structure are treated; it uses the optimal structure creation code in the write mode. The scheme is particularly good for native code compilers. It is also shown how the method can take into account particularities of the underlying hardware. Test results show good speedup, making mode declarations for efficiency reasons almost unnecessary. In addition, we include an important improvement to temporary register al...
Can Prolog Execute as Fast as Aquarius
, 1992
"... Aquarius is a Prolog system with a very high performance, and word goes that it is a factor ten faster than top quality commercial implementations. And yes, there is one published benchmark which is that much faster. Although a lot of details of the implementation of Aquarius can be found in the lit ..."
Abstract
-
Cited by 1 (0 self)
- Add to MetaCart
Aquarius is a Prolog system with a very high performance, and word goes that it is a factor ten faster than top quality commercial implementations. And yes, there is one published benchmark which is that much faster. Although a lot of details of the implementation of Aquarius can be found in the literature, it is not always clear what the relative relevance is of the applied compilation techniques. This is investigated here. Moreover, one would like to know, how a traditional implementation can be cranked up to a similar level of performance. We will show that very little machinery is needed to reach that level, except for integer arithmetic intensive programs for which Aquarius derives perfect information. This is done by starting from an existing implementation and gradually introducing some techniques and always applying them to the same set of benchmark programs. This gives an idea of the relative value of the techniques and shows how the performance of Aquarius can be approached. ...
WAM Based Efficient Implementation of Logic Programming Languages---Final Report
"... Machine (WAM) is provided. The second part is devoted to the presentation of a new solver for linear arithmetic constraints, specifically developed for the CLP(R) system. In the third part, results related to the operational semantics of full Prolog and WAM are presented. 2 Register Allocation in W ..."
Abstract
- Add to MetaCart
Machine (WAM) is provided. The second part is devoted to the presentation of a new solver for linear arithmetic constraints, specifically developed for the CLP(R) system. In the third part, results related to the operational semantics of full Prolog and WAM are presented. 2 Register Allocation in WAM The Warren Abstract Machine (WAM) is widely recognized as an excellent implementation schema for PROLOG on traditional architectures. Nevertheless many improvements have been suggested for the original WAM. One of the important parts for optimization is the register allocation in process of unification responsible for data assignment and parameter passing. Most improvements in the register allocation mechanism [12, 17, 18] take advantage of the folloving property of unification. When two structures are to be unified, the order of unifying their arguments doesn't affect the result (i.e., success or failure), but can sufficiently affect the effort expended to prepare the arguments for nex...
Register Allocation in WAM
"... Paper presents a new register allocation strategy for WAM based compilation of Prolog. The proposed strategy is based on the computation of optimal order of the unification of individual head arguments. The unification of head arguments is interspersed with the execution of inline calls and with the ..."
Abstract
- Add to MetaCart
Paper presents a new register allocation strategy for WAM based compilation of Prolog. The proposed strategy is based on the computation of optimal order of the unification of individual head arguments. The unification of head arguments is interspersed with the execution of inline calls and with the preparation of arguments for the out-of-line call. Moreover, it is shown that the problem of register allocation in WAM is at least NP-Complete in general. 1 Introduction Almost all current successful Prolog implementations on traditional computer architectures are based on the Warren Abstract Machine (WAM) architecture and its instruction set [14] (for a good introduction see, e.g., [1]). Many improvements to the WAM have been suggested and also the problem of efficient code generation was extensively studied from several perspectives: ffl program transformation (e.g., unfold/fold transformations [5], global flow analysis [15]) ffl mode and type inference [4, 6, 16] ffl clause indexing...
Compiling Prolog - From the PLM to the WAM and Beyond
, 1990
"... Machine 18 4.1 Memory Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.1.1 WAM Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2 WAM Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 ..."
Abstract
- Add to MetaCart
Machine 18 4.1 Memory Allocation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19 4.1.1 WAM Registers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2 WAM Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21 4.2.1 Choice point Management Instructions . . . . . . . . . . . . . . . . . . . . . . 21 4.2.2 Environment Creation Instructions . . . . . . . . . . . . . . . . . . . . . . . . 22 4.2.3 Unification Instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 4.2.4 Unification Failure and Backtracking . . . . . . . . . . . . . . . . . . . . . . . 25 4.2.5 Clause Body Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 4.3 A Complete WAM Example . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.4 Basic WAM Optimizations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 4.4.1 Environment Trimming . . . . . . . . . . . ...

