6 research outputs found

    Removing superfluous versions in polyvariant specialization of prolog programs.

    Get PDF
    Polyvariant specialization allows generating m煤ltiple versions of a procedure, which can then be separately optimized for different uses. Since allowing a high degree of polyvariance often results in more optimized code, polyvariant specializers, such as most partial evaluators, can gen茅rate a large number of versions. This can produce unnecessarily large residual programs. Also, large programs can be slower due to cache miss effects. A possible solution to this problem is to introduce a minimization step which identifies sets of equivalent versions, and replace all occurrences of such versions by a single one. In this work we present a unifying view of the problem of superfluous polyvariance. It includes both partial deduction and abstract m煤ltiple specialization. As regards partial deduction, we extend existing approaches in several ways. First, previous work has dealt with pur茅 logic programs and a very limited class of builtins. Herein we propose an extensi贸n to traditional characteristic trees which can be used in the presence of calis to external predicates. This includes all builtins, librarles, other user modules, etc. Second, we propose the possibility of collapsing versions which are not strictly equivalent. This allows trading time for space and can be useful in the context of embedded and pervasive systems. This is done by residualizing certain computations for external predicates which would otherwise be performed at specialization time. Third, we provide an experimental evaluation of the potential gains achievable using minimization which leads to interesting conclusions

    Constrained partial deduction and the preservation of characteristic trees

    No full text
    Partial deduction strategies for logic programs often use an abstraction operator to guarantee the finiteness of the set of goals for which partial deductions are produced. Finding an abstraction operator which guarantees finiteness and does not lose relevant information is a difficult problem. In earlier work Gallagher and Bruynooghe proposed to base the abstraction operator on characteristic paths and trees, which capture the structure of the generated incomplete SLDNF-tree for a given goal.In this paper we exhibit the advantages of characteristic trees over purely syntactical measures: if characteristic trees can be preserved upon generalisation, then we obtain an almost perfect abstraction operator, providing just enough polyvariance to avoid any loss of local specialisation. Unfortunately, the abstraction operators proposed in earlier work do not always preserve the characteristic trees upon generalisation. We show that this can lead to important specialisation losses as well as to non-termination of the partial deduction algorithm. Furthermore, this problem cannot be adequately solved in the ordinary partial deduction setting.We therefore extend the expressivity and precision of the Lloyd and Shepherdson partial deduction framework by integrating constraints. We provide formal correctness results for the so obtained generic framework of constrained partial deduction. Within this new framework we are, among others, able to overcome the above mentioned problems by introducing an alternative abstraction operator, based on so called pruning constraints. We thus present a terminating partial deduction strategy which, for purely determinate unfolding rules, induces no loss of local specialisation due to the abstraction while ensuring correctness of the specialised programs

    Constrained Partial Deduction and the Preservation of Characteristic Trees

    No full text
    Partial deduction strategies for logic programs often use an abstraction operator to guarantee the finiteness of the set of goals for which partial deductions are produced. Finding an abstraction operator which guarantees finiteness and does not lose relevant information is a difficult problem. In earlier work Gallagher and Bruynooghe proposed to base the abstraction operator on characteristic paths and trees, which capture the structure of the generated incomplete SLDNF-tree for a given goal. In this paper we exhibit the advantages of characteristic trees over purely syntactical measures: if characteristic trees can be preserved upon generalisation, then we obtain an almost perfect abstraction operator, providing just enough polyvariance to avoid any loss of local specialisation. Unfortunately, the abstraction operators proposed in earlier work do not always preserve the characteristic trees upon generalisation. We show that this can lead to important specialisation losse..

    Poly-controlled partial evaluation and its application to resource-aware program specialization

    Get PDF
    La Evaluaci贸n Parcial es una t茅cnica autom谩tica para la optimizaci贸n de programas. Su objetivo principal es el de especializar un programa con respecto a parte de sus datos de entrada, los que se conocen como datos est谩ticos. La calidad del c贸digo generado por la evaluaci贸n parcial de programas l贸gicos depende, en gran medida, de la estrategia de control que se haya empleado. Desafortunadamente, a煤n estamos lejos de contar con una estrategia de control suficientemente sofisticada como para comportarse de manera 贸ptima para cualquier programa. La principal contribuci贸n de esta tesis es el desarrollo de la Evaluaci贸n Parcial Policontrolada, un novedoso entorno para la evaluaci贸n parcial de programas l贸gicos, el cual es policontrolado en el sentido de que puede tomar en cuenta conjuntos de reglas de control global y local, en lugar de emplear una 煤nica combinaci贸n predeterminada (como es el caso de la evaluaci贸n parcial tradicional). Este entorno es m谩s flexible que los enfoques existentes, ya que permite asignar diferentes reglas de control local y global a diferentes patrones de llamada. De este modo, es posible obtener programas especializados que no pueden ser generados usando evaluaci贸n parcial tradicional. En consecuencia, el entorno de evaluaci贸n parcial policontrolada puede generar conjuntos de programas especializados, en lugar de un 煤nico programa. A trav茅s de t茅cnicas auto-ajustables, es posible hacer que este enfoque sea completamente autom谩tico. Dichas t茅cnicas permiten medir la calidad de los diferentes programas especializados obtenidos. Este entorno es consciente de los recursos, en el sentido de que cada una de las soluciones obtenidas a trav茅s de la evaluaci贸n parcial policontrolada es valorada utilizando funciones de adecuaci贸n, las que pueden tener en cuenta factores tales como el tama帽o de los programas especializados, o la cantidad de memoria que consumen, adem谩s de la velocidad del programa especializado que es el factor habitualmente considerado en otros entornos de evaluaci贸n parcial. Este entorno de evaluaci贸n parcial policontrolada ha sido implementado en el sistema CiaoPP, y evaluado con numerosos programas de prueba. Los resultados experimentales muestran que nuestra propuesta obtiene en muchos casos mejores especializaciones que aquellas generadas usando la evaluaci贸n parcial tradicional, especialmente cuando la especializaci贸n es consciente de los recursos. Otra de las principales contribuciones de esta tesis es la presentaci贸n de una visi贸n unificada del problema de eliminar la polivarianza superflua en la evaluaci贸n parcial y en la especializaci贸n abstracta m煤ltiple, a trav茅s del uso de un paso de minimizaci贸n, el cual agrupa versiones equivalentes de predicados. Este paso se puede aplicar en la especializaci贸n de cualquier programa Prolog, inclusive aquellos que contienen llamadas a predicados predefinidos o predicados externos. Adem谩s, ofrecemos la posibilidad de agrupar versiones que no sean estrictamente equivalentes, con el prop贸sito de obtener programas m谩s peque帽os
    corecore