Оглавление
Оптимизация цикла
-
Оптимизация циклов в компиляторах
- Оптимизация циклов увеличивает скорость и уменьшает накладные расходы.
- Важна для кэширования и параллельной обработки.
- Большая часть времени выполнения научных программ тратится на циклы.
-
Представление вычислений и преобразований
- Невозможно точно определить количество выполнений команд в циклах.
- Проблемы с корректностью и преимуществами оптимизации.
-
Последовательность преобразований циклов
- Преобразования сохраняют временную последовательность зависимостей.
- Оценка выгоды от преобразований сложна из-за возможных потерь производительности.
-
Общие преобразования цикла
- Деление и распределение улучшают локальность ссылок.
- Слияние и комбинирование объединяют тела циклов.
- Перестановка заменяет внутренние циклы внешними.
- Инверсия преобразует цикл while в цикл do/while.
- Движение кода за пределы цикла повышает эффективность.
- Распараллеливание и реверсирование улучшают производительность в многопроцессорных системах.
- Планирование и перекосы оптимизируют доступ к многомерным массивам.
- Программная конвейерная обработка скрывает задержки процессора.
- Разделение и пилинг упрощают циклы и устраняют зависимости.
- Векторизация и развертывание улучшают производительность SIMD-систем.
- Отмена переключения и секционирование улучшают производительность памяти.
-
Унимодулярное преобразование
- Унимодулярная матрица описывает объединенный результат преобразований.
- Лексикографическое упорядочение точек в n-мерном пространстве.
- Влияние унимодулярного преобразования на производительность сложно измерить.
-
Многогранная структура
- Обрабатывает более широкий класс программ и преобразований.
- Аффинные преобразования для описания нового порядка выполнения.
- Ограничения для описания границ многогранников и зависимостей данных.
- Оценка преимуществ преобразований и поиск наилучшего преобразования продолжаются.