Optimización automática de programas (OAP) Germán Vidal 1 Optimización automática de programas Tema 1: Introducción 1.1. Técnicas de análisis estático.

Slides:



Advertisements
Presentaciones similares
Diseño y análisis de algoritmos
Advertisements

Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Diseño y análisis de algoritmos
Resolución de Problemas Algoritmos y Programación
TECNICATURA UNIVERSITARIA EN INFORMATICA
Nuestro reto es educar al pensamiento, para que razone de acuerdo a ciertas reglas; con ello podremos ser más eficientes al momento en que ordenamos.
Secuencia finita, ordenada y lógica de instrucciones (ó pasos), los cuales permiten realizar una ó varias tareas.
funciones Por: Carlos Alberto García Acosta
Pruebas de Unidad y Refactorización
Resolución de Problemas Algoritmos y Programación
INSTITUTO TECNOLOGICO DE MINATITLAN
Técnico en programación de Software
Ciclo de desarrollo del software
UNIDAD I MODELOS Y TOMA DE DECISIONES
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
Tipo de Dato Abstracto Tipos de datos:
ANÁLISIS DE ESTABILIDAD
KRIGING.
UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO FACULTAD DE INGENIERIA DIVISIÓN DE INGENIERÍA ELÉCTRICA COMPUTACIÓN PARA INGENIEROS NOTA IMPORTANTE: Para complementar.
Programación 1 Introducción
ALGORÍTMICA Dpto. Ingeniería de Sistemas y Automática
Preguntas tipo test (Tema I)
CÁLCULO DIFERENCIAL.
Tema 3. Optimización de Código
DERIVADAS PARCIALES Gráficas.
1. FUNCIONES. LÍMITES. Depto. Matemáticas – IES Elaios
PROGRAMACIÓN LÓGICA.
La Derivada. Ya vimos: los conceptos, métodos ó instrumentos necesarios para establecer el “comportamiento” de una función.  en un entorno de x o [ 
LEDA Un Lenguaje para la Especificación y Validación de Arquitecturas de Software Carlos Canal Velasco Depto. de Lenguajes y Ciencias de la Computación.
TEORÍA DE ERRORES SESIÓN Nº 01.
Problemas, algoritmos y programas: Modelar: Simular o programar su solución en un computador. Algoritmos: Es un conjunto finito, y no ambiguo de etapas.
TEMA 4 TRANSFORMADA DE LAPLACE


Representación de Señales y Ruido por medio de Series Ortogonales
Algoritmos ¿Que es un algoritmo?
PROGRAMACIÓN PROCEDIMENTAL
Fundamentos de programación Organización de una computadora.
Material de apoyo Unidad 4 Estructura de datos
Figure: Algoritmos Conceptos básicos. Programación: 1.Establecer una secuencia de acciones que: puedan ser ejecutadas por el procesador realicen una.
UNIDAD 2. ALGORITMOS Y ESTRUCTURAS DE DATOS.
Universidad Nacional de Colombia Curso Análisis de Datos Cuantitativos.
Simular: Representar una cosa, fingiendo o imitando lo que no es.
CONCEPTOS BÁSICOS FUNDACIÓN UNIVERSITARIA LOS LIBERTADORES Fredys Alberto Simanca Herrera Programación Estructurada Semana Bogotá, D.C
PENSAMIENTO ANALÍTICO SISTÉMICO DAISY KATERINE RODRÍGUEZ DURÁN
Universidad Central de Venezuela Facultad de Ciencias Postgrado en Ciencias de la Computación Sistemas Distribuidos Albany Márquez.
Unidad 1: FUNDAMENTOS DE COMPUTACIÓN Y PSEUDOLENGUAJE
CV Métodos numéricos en ingeniería civil
Sabemos reconocerlas, y calcularlas como soluciones de sistemas de ecuaciones, o de desigualdades Buscamos métodos de cálculo generales y eficientes Problemas.
INTRODUCCIÓN A LA INGENIERÍA DEL SOFTWARE
PROGRAMAS INFORMATICOS
Ecuaciones Algebraicas
Metodología de la programación
Límites y continuidad Podríamos empezar diciendo que los límites son importantes en el cálculo, pero afirmar tal cosa sería infravalorar largamente su.
M.S.C. Ivette Hernández Dávila
Unidad TemáticaI. Conceptos Básicos Horas Prácticas10 Horas Teóricas8 Horas Totales18 Objetivo El alumno determinará las entradas, procesos y salidas.
Introducción a los TADs
Análisis de Fourier.
Ciclo de Vida del Software
Ciclo de desarrollo del software
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Complejidad algorítmica.
6. Sistemas de ecuaciones diferenciales lineales
FUNDAMENTOS DE PROGRAMACIÓN
Soluciones en Serie de Ecuaciones Lineales
Mini-video 2 de 5 Materia: Límites de funciones Continuidad de funciones Prácticas con Introducción a Funciones de una variable.
Prof. Jonathan Silva Ingeniería Civil – Informática I Ingeniería Civil Informática I Clase 3 – Diseño de Programas.
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) IV. IMPLANTACION DE ALGORITMOS.
TEMA 7 ANÁLISIS DE LOS RESULTADOS TEMA 7 ANÁLISIS DE LOS RESULTADOS.
Transcripción de la presentación:

Optimización automática de programas (OAP) Germán Vidal 1 Optimización automática de programas Tema 1: Introducción 1.1. Técnicas de análisis estático 1.2. Evaluación parcial

Optimización automática de programas (OAP) Germán Vidal Técnicas de análisis estático

Optimización automática de programas (OAP) Germán Vidal 3 Bibliografía M. Hermenegildo. Abstract interpretation and its applications. Advanced school on foundations of logic programming, 1990.M. Hermenegildo. Abstract interpretation and its applications. Advanced school on foundations of logic programming, F. Nielson, H.R. Nielson, C. Hankin. Principles of program analysis. Springer- Verlag, 2005 (2nd edition).F. Nielson, H.R. Nielson, C. Hankin. Principles of program analysis. Springer- Verlag, 2005 (2nd edition).

Optimización automática de programas (OAP) Germán Vidal 4 Análisis de programas Muchos problemas en informática están relacionados con el análisis/síntesis de programas Demostrar que cierta propiedad se cumple para un programa P (análisis de programas) Dado un programa P, generar un programa P’ que  sea (de alguna manera) equivalente a P  se comporte mejor que P respecto a algún criterio (síntesis de programas)

Optimización automática de programas (OAP) Germán Vidal 5 EjemploEjemplo:  identificar información que se cumple de forma invariante en algún punto del programa  especializar el programa para el caso particular Los análisis de programas son frecuentes en los compiladores (poco tratados desde un punto de vista formal) Un tratamiento más formal podría aportar muchas ventajas…

Optimización automática de programas (OAP) Germán Vidal 6 Qué es la interpretación abstracta? Proporciona un marco formal para el desarrollo de herramientas para el análisis de programas (Cousot, 1977) Fase de análisis + Fase de síntesis = Interp. abstracta + Transform. de programas

Optimización automática de programas (OAP) Germán Vidal 7 Algunas observaciones:  El razonamiento humano acerca de los programas suele ser aproximado: aritmética de los signos, par/impar, etc impar + impar = parpar + impar = impar impar + par = impar par + par = par  Un análisis exhaustivo sobre el dominio estándar suele ser infinito  La mayor parte de las propiedades interesantes son “indecidibles” Conclusión: se requiere un método “aproximado” para el análisis de los programas…

Optimización automática de programas (OAP) Germán Vidal 8 Idea básicaIdea básica: usar representaciones aproximadas de los objetos computacionales (problema tratable) La interp. abstracta es una formalización de esta idea:  computar expresiones sobre un dominio abstracto (aproximado) en lugar de sobre el dominio concreto (el significado de los operadores deberá redefinirse)  definir una semántica no estándar que permita aproximar el significado de un programa de modo finito

Optimización automática de programas (OAP) Germán Vidal 9 Es una técnica muy general: se puede aplicar a cualquier lenguaje (siempre que posea una semántica bien definida) La interpretación abstracta formaliza un marco en el que desarrollar análisis concretos (instanciando los parámetros del marco)

Optimización automática de programas (OAP) Germán Vidal 10 Ejemplo: aritmética de los signos Consideramos el dominio D = Z (enteros) y el operador de multiplicación: * : Z  Z Definimos un dominio “abstracto”: D a = { [-], [+] } La multiplicación “abstracta” sería: * a : D a x D a  D a * a [-][+] [-][+][-] [+][-][+] Sabemos, por ejemplo, que x 2 nunca será negativo

Optimización automática de programas (OAP) Germán Vidal 11 Algunas observaciones:  siempre que z = x*y, si x, y están aproximados por x a, y a entonces z está aproximado por z a = x a * a y a  Para poder demostrar que un análisis es correcto, es necesario formalizar esta noción de “aproximación”  Las computaciones aproximadas son generalmente menos precisas pero más rápidas (a menudo la diferencia está entre terminación o no terminación)

Optimización automática de programas (OAP) Germán Vidal 12 Consideremos ahora un dominio abstracto más refinado: D a = { [-], [0], [+] } La multiplicación abstracta sería ahora: * a [-][0][+] [-][+][0][-] [0][0][0][0] [+][-][0][+] Sabemos, por ejemplo, que y * (0 * x) siempre vale cero

Optimización automática de programas (OAP) Germán Vidal 13 Algunas observaciones:  Hay un cierto grado de libertad en la definición de los dominios y operadores abstractos  El requerimiento mínimo es que sean “seguros” o “correctos”  Pueden existir diferentes definiciones “correctas” que den lugar a diferentes tipos de análisis

Optimización automática de programas (OAP) Germán Vidal 14 Consideremos ahora la suma abstracta: + a : Z x Z  Z Si usamos el dominio abstracto D a = { [-], [0], [+] } no podemos representar el resultado de [+] + a [-] “Cerramos” el dominio añadiendo el nuevo elemento T (TOP) que aproxima a cualquier entero

Optimización automática de programas (OAP) Germán Vidal 15 La suma abstracta se define así: + a [-][0][+] T [-][-][-] T T [0][-][0][+] T [+] T [+][+] T T T T T T Sabemos, por ejemplo, que x 2 + y 2 nunca es negativo

Optimización automática de programas (OAP) Germán Vidal 16 Algunas observaciones:  Además de la imprecisión debida al dominio abstracto, los operadores abstractos también pueden provocar nuevas pérdidas de precisión  La elección del dominio abstracto es crucial!

Optimización automática de programas (OAP) Germán Vidal 17 Propiedades de la interp. abstracta RequeridasRequeridas:  corrección  corrección: las aproximaciones deben ser “seguras” Puesto que la mayoría de propiedades “interesantes” son indecidibles, los análisis deben ser necesaria- mente aproximados (hay que asegurar que sean “conservativos”, i.e., aproximen “por exceso”)  terminación  terminación: el proceso de análisis debe ser siempre finito

Optimización automática de programas (OAP) Germán Vidal 18 Propiedades de la interp. abstracta AconsejablesAconsejables:  eficiencia  eficiencia: en la práctica no basta con que el análisis sea finito, debe ser rápido…  precisión  precisión: el resultado debe estar lo más cercano posible a los valores “reales” (no aproximados) Depende del dominio abstracto y de los operadores abstractos definidos sobre él  utilidad  utilidad: la información obtenida por el análisis debe ser útil (a menudo depende del compilador)

Optimización automática de programas (OAP) Germán Vidal Evaluación parcial

Optimización automática de programas (OAP) Germán Vidal 20 Bibliografía N.D. Jones, C.K. Gomard, P. Sestoft Partial Evaluation and Automatic Program Generation Prentice Hall, 1993 Actualmente disponible online en

Optimización automática de programas (OAP) Germán Vidal 21 Introducción Especialización de programasEspecialización de programas: parte  generación de un programa especializado a partir de un programa y parte de sus datos de entrada (técnica general: aplicable a cualquier lenguaje) Intérprete  evaluador parcial  compilador

Optimización automática de programas (OAP) Germán Vidal 22 Aplicaciones: 1. Especialización de programas paramétricos: Bases de datos –especialización del mecanismo de comprobación de integridad respecto a unas restricciones dadas (x5 - x100) Simulación –especialización de un simulador para un circuito electrónico concreto (x2 - x5) Gráficos por ordenador –especialización para una escena dada (x1.5 - x3) Reconocimiento de patrones Redes neuronales, computación científica, etc 2. Optimización automática de programas 3. Generación automática de compiladores 4. Otros (algoritmos adaptativos, etc)

Optimización automática de programas (OAP) Germán Vidal 23 Antecedentes Teorema s-m-n de Kleene (funciones) Turchin (Rusia): supercompilador Refal Futamura (Japón): proyecciones Lombardi (USA): computación incremental

Optimización automática de programas (OAP) Germán Vidal 24 Esencia de la evaluación parcial: p(in1,in2) = out (similar a las proyecciones en matemáticas) datos estáticos in1 programa p evaluador parcial (mix) datos dinámicos in2 programa especializado p in1 out

Optimización automática de programas (OAP) Germán Vidal 25 Ejemplo Dado el programa p (calcula x n ): f(n,x) = IF (n = 0) THEN 1 ELSE IF par(n) THEN f(n/2,x)^2 ELSE x * f(n-1,x) Si n=5, podemos generar p 5 : f_5(x) = x * ((x^2)^2)

Optimización automática de programas (OAP) Germán Vidal 26 El nuevo programa p 5 es más eficiente que p, aunque sólo sirve para elevar un número a 5 (si el dato conocido hubiera sido x, no habríamos podido especializar nada…) Técnicas básicas para la EP: 1. computación “simbólica” 2. desplegado de llamadas

Optimización automática de programas (OAP) Germán Vidal 27 Meta-programación Meta-programaciónMeta-programación: programas como datos de entrada (y salida) a otros programas Notación:  D: dominio de datos (y programas)  Lenguajes de programación: L: lenguaje de implementación S: lenguaje fuente T: lenguaje objeto [[p]] S : D × … × D  D: “significado” del programa: output = [[p]] S [in1, in2,..., in n ] (similar a la idea de intérprete)

Optimización automática de programas (OAP) Germán Vidal 28 Definición ecuacional de mix Sea prog un programa con dos entradas:  in1 : datos estáticos  in2 : datos dinámicos Computación para prog en una fase:  output = [[prog]] [in1, in2] Computación para prog en dos fases:  prog in1 = [[mix]] [prog, in1]  output = [[prog in1 ]] [in2] Combinando las dos ecuaciones anteriores:  [[prog]] [in1,in2] = [[ [[mix]] [prog,in1] ]] in2] (definición ecuacional de mix) Garantiza: corrección y existencia:  [[mix]] [prog, in1] = \x -> [[prog]] [in1, x]

Optimización automática de programas (OAP) Germán Vidal 29 Tipos de evaluación parcial offlineoffline:  dos fases independientes  más rápido  menos preciso onlineonline:  una sóla fase  más preciso  más lento

Optimización automática de programas (OAP) Germán Vidal 30 Evaluación parcial offline programa parámetros estáticos BTA programa anotado mix programa especializado valores de los parámetros estáticos

Optimización automática de programas (OAP) Germán Vidal 31 Evaluación parcial online programa mix programa especializado valores de los parámetros estáticos

Optimización automática de programas (OAP) Germán Vidal 32 En ambos casos:  se evalúan expresiones (tanto como sea posible)  se despliegan las llamadas a función o procedimiento  se genera código residual para el resto… Problema común: terminación  garantizar la terminación del proceso! (e.g., especializar x n con x=3)

Optimización automática de programas (OAP) Germán Vidal 33 Utilidad de la evaluación parcial Incremento de eficienciaIncremento de eficiencia: el programa p in1 suele ser más eficiente que p Dado un programa p, unos datos de entrada in1, in2 y un lenguaje L, denotamos por: t p (in1, in2) el “coste temporal” de computar [[p]] L [in1, in2]

Optimización automática de programas (OAP) Germán Vidal 34 Cuando existen datos (in2) que cambian con más frecuencia que in1:  generamos p in1 cada vez que in1 cambie (p in1 es más eficiente que p) Podemos ganar eficiencia incluso en una sóla ejecución: t mix (p, in1) + t p in1 (in2) < t p (in1, in2) (pensad en el caso de un compilador: t comp (fuente) + t objeto (input) < t int (fuente, input) )

Optimización automática de programas (OAP) Germán Vidal 35 Eficiencia vs generalidad Supongamos que tenemos que resolver varios problemas similares de manera eficiente: a) Hacemos un programa para cada caso particular b) Hacemos un programa general que resuelva todos los casos La solución (a) conlleva mucho trabajo de programación (y mayor dificultad para mantenerlo) La solución (b) da lugar a un programa ineficiente…

Optimización automática de programas (OAP) Germán Vidal 36 SoluciónSolución:  hacer un programa general y especializarlo automáticamente para cada caso VentajasVentajas:  la corrección de las distintas versiones está asegurada  obtenemos un buen nivel de eficiencia  es fácil de mantener Ejemplos de aplicaciónEjemplos de aplicación:  Aplicaciones gráficas por “ray-tracing”  Consulta a bases de datos  Redes neuronales  Computación científica

Optimización automática de programas (OAP) Germán Vidal 37 Computación en varias fases Motivo para pasar de 1 a 2 fases: eficiencia! La evaluación parcial nos ofrece un método automático para trasladar un problema resuelto en una fase a dos… programa intérpreteinputoutput programa programa objeto inputoutput compilador una fase: intérpretedos fases: compilador

Optimización automática de programas (OAP) Germán Vidal 38 Compilación dirigida por la semántica El desarrollo tradicional de un compilador no está dirigido por la semántica; las fases de desarrollo son: 1. escribir la especificación del lenguaje (por ejemplo, dando un intérprete) 2. escribir el compilador 3. depurarlo para eliminar errores y mejorar eficiencia El coste asociado al desarrollo es enorme!

Optimización automática de programas (OAP) Germán Vidal 39 AlternativaAlternativa: 1. escribir la especificación del lenguaje 2. usar un generador de compiladores El coste es mucho menor y, además, no hace falta depurar el compilador (sólo mejorar su eficiencia) evaluación parcialActualmente, una de las técnicas más adecuadas para abordar la construcción de un generador de compila- dores de uso general es la evaluación parcial…

Optimización automática de programas (OAP) Germán Vidal 40 Evaluación parcial vs compilación Elimina la EP la necesidad de escribir compiladores? A favorA favor:  dada la especificación de un lenguaje, la EP elimina la “sobrecarga de interpretación”  el programa compilado siempre es correcto En contraEn contra  el programa objeto está escrito en el lenguaje de mix (L) o en el lenguaje fuente (S) no inventa un lenguaje de bajo nivel  el programa objeto usa las estructuras de datos del programa fuente no inventa estructuras de datos nuevas

Optimización automática de programas (OAP) Germán Vidal 41 En resumenEn resumen:  la EP es la mejor opción si se está trabajando en el diseño de un nuevo lenguaje  un compilador generado mediante EP nunca será tan eficiente como uno escrito a mano  pero, puede ser un buen punto de partida para desarrollar un compilador eficiente…

Optimización automática de programas (OAP) Germán Vidal 42 Evaluación parcial e interpretación El coste de la interpretaciónEl coste de la interpretación: la ejecución de un intéprete satisface la ecuación: a p × t p (d) ≤ t int (p, d) donde a p (≥ 10) es una constante independiente de d (aunque suele ser dependiente del programa fuente p ) La constante a p nos indica la cantidad de sobrecarga computacional debida a la interpretación

Optimización automática de programas (OAP) Germán Vidal 43 OptimalidadOptimalidad: diremos que mix es óptimo si a p ≈ 1 (i.e., si elimina completamente la sobrecarga de interpretación) La optimalidad de un evaluador parcial se puede comprobar haciendo uso de un meta-intérprete ( m_int ) [[p]] d = [[m_int]] [p, d] = [[ [[mix]] [m_int, p] ]] d p’ Diremos que mix es óptimo si t p’ (d) ≤ t p (d) para todo p y d (informalmente, p’ debería ser igual a p )

Optimización automática de programas (OAP) Germán Vidal 44 Proyecciones de Futamura Suponemos que mix:  está escrito en L  toma un programa escrito en S  devuelve un programa especializado escrito en L (mix : S  L) Vamos a demostrar que mix puede usarse para:  compilar programas  generar compiladores  generar generadores de compiladores

Optimización automática de programas (OAP) Germán Vidal 45 Ecuaciones de partida: IntérpreteIntérprete: output = [[fuente]] S [input] = [[int]] L [fuente, input] CompiladorCompilador: output = [[fuente]] S [input] = [[ [[comp]] L [fuente] ]] T [input] = [[objeto]] T [input] ( objeto = [[comp]] L [fuente] ) EspecializadorEspecializador: output = [[fuente]] S [in1, in2] = [[ [[mix]] L [fuente, in1] ]] L [in2]

Optimización automática de programas (OAP) Germán Vidal 46 Primera proyección de Futamura La compilación de programas usando mix se deriva de: output = [[fuente]] S [input] = [[int]] S [fuente, input] = [[[[mix]] L [int,fuente] ]] L [input] = [[objeto]] L [input] Primera proyección de Futamura: objeto = [[mix]] L [int, fuente]

Optimización automática de programas (OAP) Germán Vidal 47 Algunas cuestiones:  mix hace el papel de un compilador, traduciendo del lenguaje S al lenguaje L  suponemos que int y fuente están ambos escritos en S (int es un meta-intérprete)  el programa objeto estará escrito en L y no en T  si tuvieramos un programa mix que especializase programas escritos en S y produjese programas especializados escritos en T, la equivalencia con un compilador (de S a T) sería completa

Optimización automática de programas (OAP) Germán Vidal 48 Segunda proyección de Futamura La generación de compiladores se deriva de: objeto = [[mix]] L [int, fuente] = [[ [[mix]] L [mix, int] ]] L [fuente] = [[comp]] L [fuente] Segunda proyección de Futamura: comp = [[mix]] L [mix, int]

Optimización automática de programas (OAP) Germán Vidal 49 Algunas cuestiones:  mix nos permite generar un compilador (a partir de un intérprete)  mix debe ser auto-aplicable (S = L), ya que de otro modo no podría tomar como entrada mix (escrito en L)  complejo, pero buenos resultados en la práctica

Optimización automática de programas (OAP) Germán Vidal 50 Tercera proyección de Futamura La generación de generadores de compiladores se deriva de: comp = [[mix]] L [mix, int] = [[ [[mix]] L [mix, mix] ]] L [int] = [[cogen]] L [int] Tercera proyección de Futamura: cogen = [[mix]] L [mix, mix]

Optimización automática de programas (OAP) Germán Vidal 51 Algunas cuestiones:  mix nos permite generar un generador de compiladores (a partir de mix únicamente)  qué efecto puede tener ejecutar un programa tomando como datos de entrada el propio programa que, a su vez, toma como datos de entrada el propio programa?  qué relación habrá entre los compiladores generados con cogen y los generados a mano?

Optimización automática de programas (OAP) Germán Vidal 52 Concluyendo… La EP tiene muchas aplicaciones prome- tedoras, pero también siguen habiendo problemas por resolver:  hacer más fácil el proceso (para el usuario)  predecir cuándo habrán incrementos de eficiencia y cuándo no (antes de realizar la EP)  clarificar los límites de la EP (qué cosas no podrá nunca hacer)  etc, etc