Информационная система "Конференции"



Вычислительные и информационные технологии в науке, технике и образовании

Усть-Каменогорск, Казахстан, 11-14 сентября 2003 года

Тезисы докладов


Система для быстрого прототипирования распараллеливающего компилятора

Маркин В.А.

Институт систем информатики СО РАН (Новосибирск)

Работа с новыми распараллеливающими программными комплексами требует определенных знаний и навыков. Следовательно, возникает необходимость в создании различных программных систем для обучения параллельному программированию. К тому же при построении эффективных распараллеливающих компиляторов для конкретной целевой архитектуры необходимо определить оптимальное множество средств анализа программ, оптимизирующих преобразований и т.п. Помимо этого, постоянно возникают новые подходы и алгоритмы для анализа и оптимизации программ, которые требуют комплексных проверок их применимости и эффективности. В связи с этим данная система разрабатывается как инструмент для обучения и проведения научных исследований в области теории трансляций и параллельного программирования.

Система рассматривается как КОНСТРУКТОР для построения прототипа компилятора, кирпичиками которого являются различные функциональные и инструментальные компоненты. Компонентами системы являются подпрограммы внешних библиотек, отображающих какой-либо из этапов процесса трансляции: front-end, back-end, средства анализа, оптимизирующие преобразования, средства визуализации и взаимодействия с пользователем. Внешние библиотеки реализованы как динамические DLL, что позволяет свободно добавлять и модифицировать компоненты системы. Данные библиотеки могут разрабатываться как создателями системы, так и самим пользователем.

Для взаимодействия компонент системы между собой, реализовано Расширяемое Внутреннее Представление (РВП), одна из основных базовых компонент системы. Главными целями при его проектировании являлись универсальность (общность), расширяемость и гибкость. Данное представление должно было позволить переводить во внутреннее отображение многие широко распространенные языки программирования, а также обобщить различные теоретико-графовые внутренние представления, разработанные за последнее время. РВП системы можно разбить на три составляющие: языковая составляющая, графовая составляющая и директивная составляющая. Языковая составляющая ВП - это множество синтаксических и семантических объектов, иерархически упорядоченных, отображающих большинство общих конструкций входных языков. К управляющим вершинам относятся так называемые директивы компилятора. Это системно-зависимые объекты, которые могут быть установлены пользователем между запуском различных частей компилятора и могут указывать системе на вызов каких-либо библиотечных алгоритмов, функций и т.д. (См. Сценарий). Поскольку одной из задач при проектировании системы являлось обобщение и реализация различных теоретико-графовых представлений, была выделена отдельно графовая составляющая ВП - абстрактный синтаксический граф (АСГ) - для отображения графовой структуры программы. На первом этапе трансляции (front-end) строится абстрактное синтаксическое дерево (АСД). Затем в зависимости от сценария работы компилятора строятся так называемые графовые тени (ГТ), ориентированные на явные описания свойств транслируемых программ. Основной целью при проектировании РВП являлась его расширяемость. Поэтому РВП организовано в виде иерархии классов и библиотеки работы с ними. При разработке новых функциональных блоков системы пользователь может либо по-своему интерпретировать зарезервированное поле, присутствующее в любом из классов, либо наследовать от уже существующих классов новые типы объектов.

Центральным понятием работы системы является СЦЕНАРИЙ прототипа создаваемого компилятора, в котором определяются множество и порядок исполнения компонент системы. СЦЕНАРИЙ системы реализован как специальный Язык СЦЕНАРИЕВ и интерпретатор входного языка. По сути, для того чтобы создать прототип транслируемой системы, требуется определить или запрограммировать необходимое множество функциональных компонент, формализовать работу компилятора на языке сценариев системы и запустить интерпретатор. Язык сценариев определяет последовательность выполнения функциональных компонент, условия их применения, связывание той или компоненты с типами вершин РВП.

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

В отличие от похожих систем, данная система ориентирована на платформу Windows, в силу ее распространенности в российских учебных и научных заведениях. Кроме этого разработан графический интерфейс пользователя, включающий в себя средства визуального программирования и средства графической визуализации внутреннего состояния системы.

Примечание. Тезисы докладов публикуются в авторской редакции



Ваши комментарии
Обратная связь
[ICT SBRAS]
[Головная страница]
[Конференции]

© 1996-2000, Институт вычислительных технологий СО РАН, Новосибирск
© 1996-2000, Сибирское отделение Российской академии наук, Новосибирск