Traditional schemes for abstract interpretation-based global analysis of logic programs generally focus on obtaining procedure argument mode and type information. Variable sharing information is often given only the attention needed to preserve the correctness of the analysis. However, such sharing information can be very useful. In particular, it can be used for predicting runtime goal independence, which can eliminate costly run-time checks in and-parallel execution. In this paper, a new algorithm for doing abstract interpretation in logic programs is described which concentrates on inferring the dependencies of the terms bound to program variables with increased precisión and at all points in the execution of the program, rather than just at a procedure level. Algorithms are presented for computing abstract entry and success substitutions which extensively keep track of variable aliasing and term dependence information. In addition, a new, abstract domain independent ñxpoint algorithm is presented and described in detail. The algorithms are illustrated with examples. Finally, results from an implementation of the abstract interpreter are presented.[14], conventional abstract interpretation techniques can be applied (with only minor modifications) to programs which are to be evaluated in IAP (Debray presents in [7] an analysis framework for other types of parallelism where the properties of IAP regarding the similarity with sequential execution don't hold). In [27] we reported some results obtained from an abstract interpreter for IAP constructed more or less along the lines of conventional systems, except for the techniques used to improve its efñciency. This interpreter is most apt at generating groundness information and it was shown in [27] to be reasonably effective at reducing run-time checks. The approach presented in this paper is targeted at improving those results through better tracking of terms which are independent but not ground. 4 Even though the representation that we use for abstract substitutions is essentially the same as in Jacobs and Langen [16], there are fundamental differences between our approach and theirs. Most importantly, our algorithm for abstract interpretation uses a top-down directed bottom-up approach while theirs uses a puré bottom-up approach ([8], [20], [19]). Consequently, we use a novel fixpoint computation algorithm which takes care of additional complexities brought about by the top-down directed approach, as opposed to the conventional bottom-up fixpoint computation.
Abstract. Software pipelining is a technique to improve the performance of a loop by overlapping the execution of several iterations. The execution of a software-pipelined loop goes through three phases: prolog, kernel, and epilog. Software pipelining works best if most of the time is spent in the kernel phase rather than in the prolog or epilog phases. This can happen only if the trip count of a pipelined loop is large enough to amortize the overhead of prolog and epilog phases. When a softwarepipelined loop is part of a loop nest, the overhead of filling and draining the pipeline is incurred for every iteration of the outer loop. This paper introduces two novel methods to minimize the overhead of softwarepipeline fill/drain in nested loops. In effect, these methods overlap the draining of the software pipeline corresponding to one outer loop iteration with the filling of the software pipeline corresponding to one or more subsequent outer loop iterations. This results in better instructionlevel parallelism (ILP) for the loop nest, particularly for loop nests in which the trip counts of inner loops are small. These methods exploit Itanium T M architecture software pipelining features such as predication, register rotation, and explicit epilog stage control, to minimize the code size overhead associated with such a transformation. However, the key idea behind these methods is applicable to other architectures as well. These methods have been prototyped in the Intel optimizing compiler for the Itanium T M processor. Experimental results on SPEC2000 benchmark programs are presented.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.
customersupport@researchsolutions.com
10624 S. Eastern Ave., Ste. A-614
Henderson, NV 89052, USA
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
Copyright © 2024 scite LLC. All rights reserved.
Made with 💙 for researchers
Part of the Research Solutions Family.