Оптимизация инварианта цикла в языке Пифагор

Перевод названия: Loop-invariant Optimization in the Pifagor Language

Тип публикации: статья из журнала

Год издания: 2018

Идентификатор DOI: 10.18255/1818-1015-2018-4-347-357

Ключевые слова: оптимизация циклов, Loop optimization, data driven functional parallel programming, Pifagor programming language, Code optimization, invariant optimization, Program dependence graph, функционально-потоковое параллельное программирование, язык программирования Пифагор, оптимизация кода, оптимизация инварианта, граф программных зависимостей

Аннотация: В работе рассматриваются методы преобразования программ, эквивалентные оптимизации инварианта цикла, применительно к функционально-потоковой модели параллельных вычислений, реализованной в языке программирования Пифагор. В императивных языках при оптимизации инварианта из цикла выносятся вычисления, не зависящие от изменяемых в нем переменных. Особенностью языка функционально-потокового параллельного программирования Пифагор является отсутствие явно задаваемых циклических вычислений (оператора цикла). Тем не менее, повторяющиеся вычисления в этом языке можно задать рекурсивно или за счет применения специфических языковых конструкций (параллельных списков). Оба механизма обеспечивают возможность параллельного выполнения. В случае оптимизации рекурсивной функции повторяющиеся операции выносятся во вспомогательную функцию, а основная функция выполняет лишь вычисление инварианта. При оптимизации внутри параллельных списков вычисление инварианта перемещается в дополнительную функцию, содержащую вызов функции, использующую данный параллельный список. В статье приводится определение «инварианта» применительно к языку Пифагор, алгоритмы его оптимизации, а также примеры программ, их графовых представлений (граф программных зависимостей) до и после оптимизации. Алгоритм оптимизации, описанный для вычислений над параллельными списками, применим только для языка Пифагор, так как опирается на специфические структуры данных и модель вычислений этого языка. Вместе с тем, алгоритм преобразования рекурсивных функций может быть применим и для других языков программирования.

Ссылки на полный текст

Издание

Журнал: Моделирование и анализ информационных систем

Выпуск журнала: Т.25, 4

Номера страниц: 347-357

ISSN журнала: 18181015

Место издания: Ярославль

Издатель: федеральное государственное бюджетное образовательное учреждение высшего образования "Ярославский государственный университет им. П.Г. Демидова"

Авторы

Вхождение в базы данных

Информация о публикациях загружается с сайта службы поддержки публикационной активности СФУ. Сообщите, если заметили неточности.

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