П РЕОБРАЗОВАНИЕ ПРОГРАММ НА ЯЗЫКЕ C-DVM В ПРОГРАММЫ ДЛЯ КЛАСТЕРОВ выполнила: студентка 527 группы Коваленко Алина Игоревна научный руководитель: профессор, д. ф.-м. н. Крюков Виктор Алексеевич Москва, 2012
В ОЗМОЖНОСТИ ОПИСАНИЯ ПАРАЛЛЕЛЬНОГО ВЫПОЛНЕНИЯ ПРОГРАММЫ НА ЯЗЫКЕ C-DVM распределение элементов массива между процессорами; распределение витков цикла между процессорами; спецификация параллельно выполняющихся секций программы (параллельных задач) и отображение их на процессоры; организация эффективного доступа к удаленным (расположенным на других процессорах) данным; организация эффективного выполнения редукционных операций - глобальных операций с расположенными на различных процессорах данными (например, суммирование или нахождение максимального или минимального значения). 2
К ОМПИЛЯЦИЯ ПРОГРАММЫ НА ЯЗЫКЕ C-DVM 3 компилятор C-DVM компилятор C + коммуникационная библиотека MPI программа на языке C-DVM программа на языке C с вызовами функций библиотеки Lib-DVM этап 1 этап 2 исполняемый модуль
П ОСТАНОВКА ЗАДАЧИ ДИПЛОМНОЙ РАБОТЫ Создать компилятор C-DVM, который будет решать следующие задачи: синтаксический и семантический анализ программы, генерация промежуточного представления; преобразование прагм DVM в вызовы функций системы поддержки Lib-DVM; генерация кода на языке C. Компилятор должен распознавать следующие конструкции: описательные прагмы ; выполняемые прагмы. Должны быть заменены на вызовы соответствующих функций Lib-DVM; неявные (т.е. не отмеченные явно DVM-прагмами): создание и уничтожение распределенных массивов; доступ к распределенным данным; функции ввода-вывода; инициализация и завершение параллельного выполнения. 4
И НСТРУМЕНТАЛЬНЫЕ СИСТЕМЫ ДЛЯ СОЗДАНИЯ КОМПИЛЯТОРОВ 5 Инструментальные системы: DMS; LLVM; Sage++; ROSE. Критерии: портируемость инструментальной системы; доступность; наличие поддержки; front-end и back-end для программ на языке C. DMSLLVMSage++ROSE Портируемость инструментальной системы –+++ Доступность–+++ Наличие поддержки++–+ Front-end и back-end для программ на языке C +–++
А РХИТЕКТУРА ИНСТРУМЕНТАЛЬНОЙ СИСТЕМЫ ROSE Система ROSE состоит из трёх основных частей: front-end – лексический и синтаксический анализаторы, генерация внутреннего представления исходных кодов программы в виде AST; middle-end – инструменты для анализа, оптимизации и трансформации дерева разбора программы; back-end – генерация бинарных файлов или файлов на высокоуровневых целевых языках из внутреннего представления. 6 middle-end исходный код front-end ROSE дерево разбора back-end ROSE новое дерево разбора целевой код
С ХЕМА РАБОТЫ КОМПИЛЯТОРА C-DVM 7 прагмы DVM дерево разбора новое дерево разбора + информация из прагм новое дерево разбора анализатор прагм анализатор массивов дерево разбора + информация из прагм этап 1 этап 2 преобразование неявных конструкций, замена описательных и выполняемых прагм этап 3 добавление вызовов функций для описательных прагм дерево разбора + информация из прагм и данные о массивах middle-end
Э КСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ. Т ЕКСТ ПРОГРАММЫ НА ЯЗЫКЕ C-DVM 8 #define DO(v,l,h,s) for(v=(l); v
Э КСПЕРИМЕНТАЛЬНОЕ ИССЛЕДОВАНИЕ. В ЫХОД КОМПИЛЯТОРА C-DVM 9 #define DO(v,l,h,s) for(v=(l); v
Р ЕЗУЛЬТАТЫ Разработан компилятор, выполняющий следующие задачи: анализирует текст входной программы в соответствии с синтаксисом языка C-DVM; преобразует исходный код во внутреннее представление в виде абстрактного дерева разбора; преобразует дерево разбора в соответствии с моделью DVM; генерирует из внутреннего представления код на языке C. Были разработаны: алгоритмы лексического и синтаксического анализа прагм DVM; структуры для хранения информации, полученной из прагм DVM, из описаний распределяемых и выравниваемых массивов и из заголовков распределяемых циклов; алгоритмы семантического анализа распределения данных и вычислений. 10
С ПАСИБО ЗА ВНИМАНИЕ 11
П АРАЛЛЕЛЬНЫЕ ПРОГРАММЫ ДЛЯ ВЫЧИСЛИТЕЛЬНЫХ КЛАСТЕРОВ. 12 компилятор C + коммуникационная библиотека MPI программа на языке C - DVM c DVM-указаниями в формате макросов программа на языке C с вызовами функций библиотеки Lib-DVM этап 1 этап 2 исполняемый модуль программа на языке C - DVM c DVM-указаниями в формате прагм существующий компилятор C-DVM новый компилятор C-DVM
С ХЕМА РАБОТЫ КОМПИЛЯТОРА C-DVM Первый этап - лексический и синтаксический анализ прагм и получение информации о массивах: количество измерений, размерность по каждому измерению, тип данных. Второй этап - преобразования в соответствии с моделью DVM: замена описания массивов и операторов доступа к элементам этих массивов; замена блоков операторов цикла и заголовков циклов; замена функций ввода-вывода; Третий этап - генерация новых вершин дерева разбора: подключение библиотечных файлов системы DVM; вызовы функций инициализации и завершения параллельного выполнения; создание и уничтожение распределённых массивов; функции выравнивания и распределения массивов. 13