Dividir el cuerpo del bucle

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 20 de mayo de 2013; las comprobaciones requieren 13 ediciones .

La fisión de bucles es una optimización del compilador que divide un bucle de un programa en varios bucles, cada uno de los cuales tiene los mismos límites de índice, pero contiene solo una parte del cuerpo del bucle original . 

Por ejemplo, el siguiente código :

int i , a [ 100 ], b [ 100 ]; para ( yo = 0 ; yo < 100 ; yo ++ ) { un [ yo ] = 1 ; segundo [ yo ] = 2 ; }

como resultado de aplicar la optimización se convierte en:

int i , a [ 100 ], b [ 100 ]; para ( yo = 0 ; yo < 100 ; yo ++ ) { un [ yo ] = 1 ; } para ( yo = 0 ; yo < 100 ; yo ++ ) { segundo [ yo ] = 2 ; }

El objetivo clave de dichas optimizaciones es reducir el número de operaciones de bucle. Aquí, el principal método de optimización es dividir el bucle en varios bucles, para cada uno de los cuales la cantidad de instrucciones requeridas para empaquetar el cuerpo del bucle es estrictamente menor que la cantidad de instrucciones para el bucle original.

La distribución es útil para aislar las dependencias de los bucles de datos en preparación para la vectorización de bucles , para las permutaciones de bucles o para mejorar la localidad al reducir la cantidad total de datos a los que se hace referencia en cada bucle.

Notas

Véase también

Literatura

  • Alfred Aho, Monica Lam, Ravi Seti, Jeffrey Ullman. Compiladores : Principios, Técnicas y Herramientas = Compiladores: Principios, Técnicas y Herramientas. — 2ª edición. - M. : "Williams", 2008. - 1184 p. - 1500 copias.  - ISBN 978-5-8459-1349-4 .
  • Steven S. Muchnick. Diseño e implementación de compiladores avanzados. — 5ª edición. - San Francisco: Morgan Kaufmann Publishers , 1997. - 856 p. - ISBN 1-55860-320-4 .
  • Kennedy, Ken; y Allen, Randy. Optimización de compiladores para arquitecturas modernas: un enfoque basado en la dependencia  . -Morgan Kaufmann , 2001. -ISBN 1-55860-286-0 .