ISSN 1991-3087
Рейтинг@Mail.ru Rambler's Top100
Яндекс.Метрика

НА ГЛАВНУЮ

Анализ методов компиляторной оптимизации модельного кода САЕ системы ФРУНД

 

Горобцов Александр Сергеевич,

доктор технических наук, профессор,

Шапочкин Евгений Алексеевич,

магистрант.

Волгоградский государственный технический университет.

 

В настоящее время моделирование объектов и процессов является неотъемлемой частью исследовательских и промышленых задач. Для расчетов этих моделей используются САЕ системы, такие как система многотельного моделирования ФРУНД. Общая для всех моделей тенденция увеличения детализации приводит к увеличению объемов и времени обработки модельного кода. Специфика генерации модельного кода системы ФРУНД затрудняет его оптимизацию компиляторами. Поэтому было решено произвести анализ специфики генерируемого системой ФРУНД модельного кода, и анализ методов компиляторной оптимизации с целью выявить направления дальнейших улучшений кода.

При анализе специфики модельного кода системы ФРУНД было выявлено:

·                    модельный код написан на языке FORTRAN (из-за оптимизации на уровне ассемблерного кода математических функций);

·                    модельный код содержит большое количество математических операций;

·                    в модельном коде в явном виде отсутствуют циклы;

·                    модельный код генерируется в несколько файлов. Среди них можно выделить файлы геометрии модели (fas*.for), содежащие символьные уравнения (f0*.for), и файлы значений переменных(IDAN) [1].

Эти особенности позволяют произвести анализ существующих методов оптимизации программного кода осуществляемых компиляторами [2]. Результаты анализа представлены в таблице 1.

 

Таблица 1.

Сводная таблица основных методов оптимизации программного кода компиляторами.

метод

эффект оптимизации методом

идея метода / характерный пример

Недостатки метода применительно к оптимизации модельного кода системы ФРУНД

удаление излишних инструкций

сокращение модельного кода

удалению подвергаются множественные инструкции, которые повторяют смысл уже осуществленных

удаляются только инструкции, но не переменные

удаление недостижимого кода

сокращение модельного кода

удаление участков кода с недостижимым условием выполнения

структура модельного кода системы ФРУНД не содержит недостижимых участков

применение алгебраических упрощений

сокращение модельного кода, использование более быстрых частей кода

А^2

0*Х*7=0

....

оптимизации подвергаются только константы, но не переменные

выделение общих подвыражений

сокращение количества пересылок данных в оперативной памяти

если выражение было ранее вычислено и значения переменных с того времени не изменились, то повторного вычисления можно избежать, если использовать ранее вычисленное значение.

на данный момент компиляторы не обрабатывают общие подвыражения, если они находятся в разных файлах

оптимизация циклов

увеличение модельного кода, использование более быстрых частей кода

перемещение кода вовне цикла, устранение индуктивно переменной, снижение временной стоимости операций

отсутствие циклов в явном виде в файлах модельного кода системы ФРУНД делает эти методы нецелесообразными

использование распространения констант

сокращение модельного кода

А*7*4*9

В*7*4*9

С=А+В

=>

А*252

В*252

С=А+В

оптимизации подвергаются только константы, но не переменные

анализ активных переменных

сокращение количества пересылок данных в оперативной памяти

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

на данный момент достаточно хорошо реализуется компиляторами. Перерботки не требует

поиск оптимального покрытия

сокращение количества пересылок данных в оперативной памяти, использование более быстрых частей кода

выбор самого быстрого способа реализации последовательностями машинных команд конструкций исходного кода

на данный момент достаточно хорошо реализуется компиляторами. Перерботки не требует

представление операторов управления в виде переходов

использование более быстрых частей кода

представление управляющих операторов в виде меток и условных и безусловных переходов

на данный момент достаточно хорошо реализуется компиляторами. Перерботки не требует

 

На основе проведенного анализа были сделаны выводы об узких местах компиляторной оптимизации модельного кода системы многотельного моделирования ФРУНД и были предложены способы его дальнейшей оптимизации:

·                     применение алгебраических упрощений – можно подвергать оптимизации не только константы, но и переменные, учитывая их значения, хранящиеся в файле IDAN;

·                     выделение общих подвыражений – следует учитывать при оптимизации распределение модельного кода на несколько разных файлов;

·                     удаление излишних инструкций – можно развить эту идею до удаления «мертвых переменных» - удаление переменных встречающихся в коде лишь однажды в левой части алгебраического присваивания, и в дальнейшем не используемых.

 

Литература

 

1.                  Шапочкин Е.А. Модуль предкомпиляторной оптимизации модельного кода САЕ системы ФРУНД / Е.А. Шапочкин, А.С. Горобцов // Каспийский инновационный форум: матер. Выступл. На конф. Молодых ученых и инноваторов «Инно-Каспий», 8-10 февр. 2009 г. / Астрахан. Гос. Ун-т [и др.]. – Астрахань, 2009. – С. 45-47

2.                  Шапочкин Е.А. Оптимизирующие преобразования программного кода САЕ-систем. Е.А. Шапочкин, А.С. Горобцов // Инновационные технологии в обучении и производстве: матер. V всерос. Н.-пр. конф., Камышин, 4-6 дек. 2008 г. В 3т. Т.2 / КТИ (филиал) ВолгГТУ [и др.].- Камышин, 2008. – С. 242.

 

Поступила в редакцию 30.04.2009 г.

2006-2019 © Журнал научных публикаций аспирантов и докторантов.
Все материалы, размещенные на данном сайте, охраняются авторским правом. При использовании материалов сайта активная ссылка на первоисточник обязательна.