ISSN: 2165- 7866
Йонис Оливейра
За последние три десятилетия было реализовано большое количество преобразований компиляторов для оптимизации программ. Большинство оптимизаций для однопроцессорных процессоров сокращают количество инструкций, выполняемых программой, используя преобразования, основанные на анализе скалярных величин и методах потоков данных. Напротив, оптимизации для высокопроизводительных суперскалярных, векторных и параллельных процессоров максимизируют параллелизм и локальность памяти с преобразованиями, которые полагаются на отслеживание свойств массивов с использованием анализа зависимости циклов. Этот обзор представляет собой всесторонний обзор важных высокоуровневых методов реструктуризации программ для императивных языков, таких как C и Fortran. Подробно рассматриваются преобразования как для последовательных, так и для различных типов параллельных архитектур. Мы описываем цель каждого преобразования, объясняем, как определить, является ли оно допустимым, и приводим пример его применения.