Аннотация:
Рассматривается ускорение итерационных алгоритмов, которые
встречаются при решении задач математической физики, математического
моделирования, обработки изображений и других. В программной реализации
таких алгоритмов лежат гнёзда циклов (участки программы, состоящие из
вложенных циклов). Такие гнёзда циклов ускоряются при помощи комбинации
оптимизирующих преобразований, включающих тайлинг, метод гиперплоскостей
и распараллеливание на общую память. Обосновывается эквивалентность
комбинации используемых преобразований программ.
Предлагается и обосновывается метод изменения порядка обхода тайла. Метод
даёт ускорение за счёт увеличения количества чтений данных из регистров,
вместо чтений из более медленной памяти. С учётом этого метода получена
формула вычисления оптимальных размеров тайлов.
Представленной в статье цепочкой преобразований достигается ускорение в 1.4
раза большее, чем в известном алгоритме оптимизации, реализованном в системе
PLUTO. Приводятся численные эксперименты, которые в некоторых случаях
на процессоре с 8 ядрами демонстрируют ускорение относительно исходных
последовательных программ более чем на порядок. Результаты статьи могут
использоваться для ручной и автоматизированной оптимизации программ.
Ключевые слова и фразы:
тайлинг, метод гиперплоскостей, распараллеливание, общая память, гнёзда циклов итерационного типа.