Нормализованный цикл


В компьютерных науках нормализованный цикл (иногда называемый корректным циклом) — это цикл, в котором переменная цикла начинается с 0 (или любой константы) и увеличивается на единицу на каждой итерации, пока не будет выполнено условие выхода. Нормализованные циклы очень важны для теории компиляторов , анализа зависимостей циклов , поскольку они упрощают анализ зависимостей данных. [ нужна ссылка ]

Поскольку приращение является унитарным и постоянным, очень легко увидеть, что если и a, и b больше, чем MAX, этот цикл никогда не будет обращаться к памяти за пределами выделенного диапазона.

Ненормализованный цикл может начинаться с разных индексов, увеличиваться на неединичные величины и иметь сложные для определения условия выхода. Такие циклы трудно оптимизировать, векторизовать и даже обходить, особенно если функции выполняются в любой части условий цикла.

Циклы также могут иметь непредсказуемое поведение во время компиляции, когда условие выхода зависит от содержимого изменяемых данных:

Если ненормализованное поведение не имеет динамического поведения, обычно очень легко преобразовать его в нормализованное. Например, первый пример (Пример 1) выше можно легко преобразовать в:

В то время как третий пример можно частично нормализовать, чтобы обеспечить некоторое распараллеливание, но по-прежнему не хватает возможности узнать продолжительность цикла (сколько будет итераций), что затрудняет векторизацию с использованием мультимедийного оборудования.