Петлевое деление и синтез - Википедия - Loop fission and fusion

В Информатика, деление петли (или же распределение петель) это оптимизация компилятора в котором петля разбивается на несколько циклов в одном диапазоне индексов, каждый из которых занимает только часть тела исходного цикла.[1][2] Цель состоит в том, чтобы разбить большую часть цикла на более мелкие, чтобы добиться лучшего использования местонахождение ссылки. Эта оптимизация наиболее эффективна в многоядерные процессоры которые могут разбить задачу на несколько задач для каждой процессор.

Наоборот, петля слияния (или же заклинивание петли) это оптимизация компилятора и преобразование петли который заменяет несколько петли с одним.[3][2] Это возможно, когда два цикла повторяются в одном и том же диапазоне и не ссылаются на данные друг друга. Слияние петель не всегда улучшает скорость выполнения. На некоторых архитектуры, два цикла могут работать лучше, чем один цикл, потому что, например, увеличивается местонахождение данных внутри каждого цикла.

Слияние

Пример на C

int я, а[100], б[100];за (я = 0; я < 100; я++)    а[я] = 1;                     за (я = 0; я < 100; я++)    б[я] = 2;

эквивалентно:

int я, а[100], б[100];за (я = 0; я < 100; я++){    а[я] = 1;     б[я] = 2;}

Смотрите также

Рекомендации

  1. ^ Ю.Н. Срикант; Прити Шанкар (3 октября 2018 г.). Справочник по проектированию компиляторов: Оптимизация и генерация машинного кода, второе издание. CRC Press. ISBN  978-1-4200-4383-9.
  2. ^ а б Кеннеди, Кен и Аллен, Рэнди. (2001). Оптимизация компиляторов для современных архитектур: подход, основанный на зависимостях. Морган Кауфманн. ISBN  1-55860-286-0.
  3. ^ Стивен Мучник; Muchnick and Associates (15 августа 1997 г.). Расширенная реализация проекта компилятора. Морган Кауфманн. ISBN  978-1-55860-320-2. петля слияния.