stringtranslate.com

Predicción de rendimiento

En informática , predicción del rendimiento significa estimar el tiempo de ejecución u otros factores de rendimiento (como errores de caché ) de un programa en una computadora determinada. Se está utilizando ampliamente para que los arquitectos informáticos evalúen nuevos diseños de computadoras, para que los escritores de compiladores exploren nuevas optimizaciones y también para que los desarrolladores avanzados ajusten sus programas.

Existen muchos enfoques para predecir el rendimiento de un programa en las computadoras. Se pueden dividir a grandes rasgos en tres categorías principales:

Predicción basada en simulación

Los datos de rendimiento se pueden obtener directamente de simuladores de computadora , dentro de los cuales cada instrucción del programa de destino se ejecuta dinámicamente dado un conjunto de datos de entrada particular. Los simuladores pueden predecir el rendimiento del programa con mucha precisión, pero requieren un tiempo considerable para manejar programas grandes. Los ejemplos incluyen los simuladores PACE [1] y Wisconsin Wind Tunnel [2], así como el más reciente conjunto de herramientas de simulación WARPP, [3] que intenta reducir significativamente el tiempo necesario para la simulación de sistemas paralelos.

Otro enfoque, basado en la simulación basada en seguimiento, no ejecuta todas las instrucciones, sino que ejecuta un archivo de seguimiento que almacena únicamente eventos importantes del programa. Este enfoque pierde algo de flexibilidad y precisión en comparación con la simulación con precisión de ciclo mencionada anteriormente, pero puede ser mucho más rápido. La generación de seguimientos a menudo consume cantidades considerables de espacio de almacenamiento y puede afectar gravemente el tiempo de ejecución de las aplicaciones si se registran una gran cantidad de datos durante la ejecución.

Predicción basada en perfiles

El enfoque clásico de predicción del rendimiento trata un programa como un conjunto de bloques básicos conectados por una ruta de ejecución. Así, el tiempo de ejecución de todo el programa es la suma del tiempo de ejecución de cada bloque básico multiplicado por su frecuencia de ejecución, como se muestra en la siguiente fórmula:

Las frecuencias de ejecución de los bloques básicos se generan a partir de un generador de perfiles , por lo que este método se denomina predicción basada en perfiles. El tiempo de ejecución de un bloque básico generalmente se obtiene de un programador de instrucciones simple.

La predicción clásica basada en perfiles funcionó bien para los primeros procesadores de ejecución en orden de un solo problema, pero no logra predecir con precisión el rendimiento de los procesadores modernos. La razón principal es que los procesadores modernos pueden emitir y ejecutar varias instrucciones al mismo tiempo, a veces fuera del orden original y cruzando los límites de los bloques básicos.

Referencias

  1. ^ http://www2.warwick.ac.uk/fac/sci/dcs/research/hpsg/publications/pubs/fgcs2006.pdf
  2. ^ http://pages.cs.wisc.edu/~wwt/
  3. ^ http://www2.warwick.ac.uk/fac/sci/dcs/research/hpsg/publications/pubs/simutools09.pdf