Full text
Preview |
PDF
- Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (866kB) | Preview |
Klemen, Maximiliano (2015). Improved static analysis and verification of energy consumption and other resources via abstract interpretation. Thesis (Master thesis), E.T.S. de Ingenieros Informáticos (UPM).
Title: | Improved static analysis and verification of energy consumption and other resources via abstract interpretation |
---|---|
Author/s: |
|
Contributor/s: |
|
Item Type: | Thesis (Master thesis) |
Masters title: | Software y Sistemas |
Date: | July 2015 |
Subjects: | |
Faculty: | E.T.S. de Ingenieros Informáticos (UPM) |
Department: | Lenguajes y Sistemas Informáticos e Ingeniería del Software |
Creative Commons Licenses: | Recognition - No derivative works - Non commercial |
Preview |
PDF
- Requires a PDF viewer, such as GSview, Xpdf or Adobe Acrobat Reader
Download (866kB) | Preview |
Resource analysis aims at inferring the cost of executing programs for any possible input,
in terms of a given resource, such as the traditional execution steps, time ormemory,
and, more recently energy consumption or user defined resources (e.g., number of
bits sent over a socket, number of database accesses, number of calls to particular procedures,
etc.). This is performed statically, i.e., without actually running the programs.
Resource usage information is useful for a variety of optimization and verification
applications, as well as for guiding software design. For example, programmers
can use such information to choose different algorithmic solutions to a problem; program
transformation systems can use cost information to choose between alternative
transformations; parallelizing compilers can use cost estimates for granularity control,
which tries to balance the overheads of task creation and manipulation against the
benefits of parallelization.
In this thesis we have significatively improved an existing prototype implementation
for resource usage analysis based on abstract interpretation, addressing a number
of relevant challenges and overcoming many limitations it presented. The goal of that
prototype was to show the viability of casting the resource analysis as an abstract domain,
and howit could overcome important limitations of the state-of-the-art resource
usage analysis tools. For this purpose, it was implemented as an abstract domain in the
abstract interpretation framework of the CiaoPP system, PLAI.We have improved both
the design and implementation of the prototype, for eventually allowing an evolution
of the tool to the industrial application level.
The abstract operations of such tool heavily depend on the setting up and finding
closed-form solutions of recurrence relations representing the resource usage behavior
of program components and the whole program as well. While there exist many
tools, such as Computer Algebra Systems (CAS) and libraries able to find closed-form
solutions for some types of recurrences, none of them alone is able to handle all the
types of recurrences arising during program analysis. In addition, there are some types
of recurrences that cannot be solved by any existing tool. This clearly constitutes a bottleneck
for this kind of resource usage analysis. Thus, one of the major challenges we
have addressed in this thesis is the design and development of a novel modular framework
for solving recurrence relations, able to combine and take advantage of the results
of existing solvers. Additionally, we have developed and integrated into our novel
solver a technique for finding upper-bound closed-form solutions of a special class of
recurrence relations that arise during the analysis of programs with accumulating parameters.
Finally, we have integrated the improved resource analysis into the CiaoPP general
framework for resource usage verification, and specialized the framework for verifying
energy consumption specifications of embedded imperative programs in a real application,
showing the usefulness and practicality of the resulting tool.---ABSTRACT---El Análisis de recursos tiene como objetivo inferir el coste de la ejecución de programas
para cualquier entrada posible, en términos de algún recurso determinado, como
pasos de ejecución, tiempo o memoria, y, más recientemente, el consumo de energía
o recursos definidos por el usuario (por ejemplo, número de bits enviados a través de
un socket, el número de accesos a una base de datos, cantidad de llamadas a determinados
procedimientos, etc.). Ello se realiza estáticamente, es decir, sin necesidad de
ejecutar los programas.
La información sobre el uso de recursos resulta muy útil para una gran variedad
de aplicaciones de optimización y verificación de programas, así como para asistir en
el diseño de los mismos. Por ejemplo, los programadores pueden utilizar dicha información
para elegir diferentes soluciones algorítmicas a un problema; los sistemas de
transformación de programas pueden utilizar la información de coste para elegir entre
transformaciones alternativas; los compiladores paralelizantes pueden utilizar las estimaciones
de coste para realizar control de granularidad, el cual trata de equilibrar el
coste debido a la creación y gestión de tareas, con los beneficios de la paralelización.
En esta tesis hemos mejorado de manera significativa la implementación de un
prototipo existente para el análisis del uso de recursos basado en interpretación abstracta,
abordando diversos desafíos relevantes y superando numerosas limitaciones
que éste presentaba. El objetivo de dicho prototipo era mostrar la viabilidad de definir
el análisis de recursos como un dominio abstracto, y cómo se podían superar las limitaciones
de otras herramientas similares que constituyen el estado del arte. Para ello,
se implementó como un dominio abstracto en el marco de interpretación abstracta
presente en el sistema CiaoPP, PLAI. Hemos mejorado tanto el diseño como la implementación
del mencionado prototipo para posibilitar su evolución hacia una herramienta
utilizable en el ámbito industrial.
Las operaciones abstractas de dicha herramienta dependen en gran medida de la
generación, y posterior búsqueda de soluciones en forma cerrada, de relaciones recurrentes,
las cuales modelizan el comportamiento, respecto al consumo de recursos, de
los componentes del programa y del programa completo. Si bien existen actualmente
muchas herramientas capaces de encontrar soluciones en forma cerrada para ciertos
tipos de recurrencias, tales como Sistemas de Computación Algebraicos (CAS) y librerías
de programación, ninguna de dichas herramientas es capaz de tratar, por sí sola,
todos los tipos de recurrencias que surgen durante el análisis de recursos. Existen incluso
recurrencias que no las puede resolver ninguna herramienta actual. Esto constituye
claramente un cuello de botella para este tipo de análisis del uso de recursos. Por lo tanto, uno de los principales desafíos que hemos abordado en esta tesis es el diseño
y desarrollo de un novedoso marco modular para la resolución de relaciones recurrentes,
combinando y aprovechando los resultados de resolutores existentes. Además
de ello, hemos desarrollado e integrado en nuestro nuevo resolutor una técnica para
la obtención de cotas superiores en forma cerrada de una clase característica de relaciones
recurrentes que surgen durante el análisis de programas lógicos con parámetros
de acumulación.
Finalmente, hemos integrado el nuevo análisis de recursos con el marco general
para verificación de recursos de CiaoPP, y hemos instanciado dicho marco para la verificación
de especificaciones sobre el consumo de energía de programas imperativas
embarcados, mostrando la viabilidad y utilidad de la herramienta resultante en una
aplicación real.
Item ID: | 37260 |
---|---|
DC Identifier: | https://oa.upm.es/37260/ |
OAI Identifier: | oai:oa.upm.es:37260 |
Deposited by: | Biblioteca Facultad de Informatica |
Deposited on: | 30 Jul 2015 10:55 |
Last Modified: | 02 Sep 2015 11:08 |