Bucle normalizado


En informática , un ciclo normalizado (a veces llamado ciclo de buen comportamiento), es un ciclo en el que la variable del ciclo comienza en 0 (o cualquier constante) y se incrementa en uno en cada iteración hasta que se cumple la condición de salida. Los bucles normalizados son muy importantes para la teoría del compilador , el análisis de dependencia de bucles, ya que simplifican el análisis de dependencia de datos. [ cita requerida ]

Debido a que el incremento es unitario y constante, es muy fácil ver que, si tanto a como b son mayores que MAX, este bucle nunca accederá a la memoria fuera del rango asignado.

Un ciclo no normalizado puede comenzar en diferentes índices, incrementarse en cantidades no unitarias y tener condiciones de salida complicadas de definir. Dichos bucles son difíciles de optimizar, vectorizar e incluso atravesar, especialmente si las funciones se ejecutan en cualquier parte de las condiciones del bucle.

Los bucles también pueden tener un comportamiento no predecible durante el tiempo de compilación, donde la condición de salida depende del contenido de los datos que se modifican:

Si el no normalizado no tiene un comportamiento dinámico, normalmente es muy fácil transformarlo en uno normalizado. Por ejemplo, el primer ejemplo (Ejemplo 1) anterior se puede convertir fácilmente a:

Si bien el tercer ejemplo se puede normalizar parcialmente para permitir cierta paralelización, pero aún carece de la capacidad de conocer el intervalo de bucle (cuántas iteraciones habrá), lo que dificulta la vectorización mediante el uso de hardware multimedia.