Разработка системы автоматизированного построения Q-эффективных программ
|
ВВЕДЕНИЕ 5
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 8
1.1. Описание концепции Q-детерминанта 8
1.2. Практическое применение концепции Q-детерминанта 13
1.3. Постановка задачи 17
2. ПРОЕКТИРОВАНИЕ СИСТЕМЫ 19
2.1. Варианты использования компонентов системы 19
2.2. Размещение компонентов системы 21
2.3. Описание структуры дерева алгоритма 23
2.4. Взаимодействие компонентов виртуальной машины 25
2.5. Описание работы компонентов виртуальной машины 26
3. РЕАЛИЗАЦИЯ СИСТЕМЫ 31
3.1. Выбор инструментов разработки 31
3.2. Формат файла метаданных 34
3.3. Формат файла программы 35
3.4. Формат файлов входных и выходных данных алгоритма 40
3.5. Алгоритм распределения памяти 40
4. ТЕСТИРОВАНИЕ СИСТЕМЫ 42
4.1. Модульное тестирование 42
4.2. Интеграционное тестирование 42
4.3. Функциональное тестирование 43
4.4. Пример сеанса работы с системой 49
ЗАКЛЮЧЕНИЕ 52
ЛИТЕРАТУРА 53
1. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ 8
1.1. Описание концепции Q-детерминанта 8
1.2. Практическое применение концепции Q-детерминанта 13
1.3. Постановка задачи 17
2. ПРОЕКТИРОВАНИЕ СИСТЕМЫ 19
2.1. Варианты использования компонентов системы 19
2.2. Размещение компонентов системы 21
2.3. Описание структуры дерева алгоритма 23
2.4. Взаимодействие компонентов виртуальной машины 25
2.5. Описание работы компонентов виртуальной машины 26
3. РЕАЛИЗАЦИЯ СИСТЕМЫ 31
3.1. Выбор инструментов разработки 31
3.2. Формат файла метаданных 34
3.3. Формат файла программы 35
3.4. Формат файлов входных и выходных данных алгоритма 40
3.5. Алгоритм распределения памяти 40
4. ТЕСТИРОВАНИЕ СИСТЕМЫ 42
4.1. Модульное тестирование 42
4.2. Интеграционное тестирование 42
4.3. Функциональное тестирование 43
4.4. Пример сеанса работы с системой 49
ЗАКЛЮЧЕНИЕ 52
ЛИТЕРАТУРА 53
В современном мире процессоры с многоядерной архитектурой плотно вошли в нашу повседневную жизнь. Сегодня сложно кого-то удивить восьмиядерным процессором в смартфоне и уж тем более в персональном компьютере. Однако, даже сегодня, можно встретить современные программы, не предполагающие распараллеливания задач, что сводит на нет всю вложенную производителем процессора мощь. Все дело в том, что писать параллельные программы действительно сложно, ведь нет четких формальных правил, которых необходимо придерживаться, разрабатывая программы для многопроцессорных архитектур.
В качестве решения данной проблемы в области распараллеливания численных алгоритмов может выступать концепция Q-детерминанта, разработанная В.Н. Алеевой [1]. В современном ее виде данная теория позволяет проводить автоматизированный анализ ресурса параллелизма алгоритма, что сильно упрощает разработку параллельных программ [2].
Цель и задачи
Целью данной работы является разработка программной системы автоматизированного построения Q-эффективных программ. Конечный продукт должен позволять исполнять Q-эффективные программы.
В программную систему должно входить два продукта: преобразователь Q-детерминанта в исполняемую программу (компилятор), а также виртуальный исполнитель полученных в ходе преобразования программ (виртуальная машина).
Компилятор на вход должен принимать Q-детерминант алгоритма в формате, выдаваемом «Q-системой» (ранее разработанный продукт, строящий Q-детерминант алгоритма из его блок-схемы), а также дополнительные необходимые метаданные алгоритма. Результатом работы компилятора будет являться программа, которая может быть исполнена виртуальной машиной.
Виртуальная машина на вход должна получать программу, а также входные данные исполняемого алгоритма. Результатом работы машины будут являться выходные данные исполняемого алгоритма.
Для достижения обозначенной цели были поставлены следующие задачи.
1. Изучение концепции Q-детерминанта и ее применения для исследования и использования ресурса параллелизма численных алгоритмов.
2. Проектирование компонентов системы автоматизированного построения Q-эффективных программ.
3. Разработка спроектированной системы.
4. Тестирование полученных программных компонентов.
Обзор литературы
Работу [1] можно назвать основополагающей, так как в ней впервые была описана концепция Q-детерминанта. В ней проработаны основные понятия, такие как Q-терм и Q-детерминант алгоритма, даются развернутые доказательства состоятельности данной теории, а также проводится анализ ресурса параллелизма численных алгоритмов, используя Q-детерминант.
В работах [2-4] продолжается развитие теории, также показываются практические результаты работы. Описывается расширенная модель концепции Q-детерминанта, позволяющая получать Q-эффективные реализации алгоритмов, представленных в форме Q-детерминанта, для вычислительных систем с общей и распределенной памятью. Описана разработанная программа для построения представления алгоритма в форме Q- детерминанта по его блок-схеме, являющаяся подсистемой программной Q- системы для исследования ресурса параллелизма численных алгоритмов. Также представлены результаты практических замеров производительности, реализованных вручную некоторых численных алгоритмов на языке программирования высокого уровня с помощью концепции.
Структура и объем работы
Работа включает в себя введение, 4 основных раздела, заключение и список литературы. Общий объем работы составляет 54 страницы, библиографический список включает 22 наименования.
Краткое содержание работы
Раздел «Введение» содержит обоснование актуальности работы, ее значение, а также обзор литературных источников в рамках предметной области.
Первый раздел «Теоретическая часть» содержит понятия концепции Q-детерминанта, ее значение и возможности применения для исследования ресурса параллелизма алгоритмов. В разделе рассмотрены текущие результаты применения концепции на практике, описаны существующие программные решения, берущие за основу описываемую концепцию, а также постановка задачи текущей работы.
Второй раздел «Проектирование системы» посвящен проектированию разрабатываемой программной системы, позволяющей исполнять численные алгоритмы, представленные в форме Q-детерминанта. В нем описаны архитектурные решения и применяемые алгоритмы.
Третий раздел «Реализация системы» посвящен разработке алгоритмов компиляции и их исполнения. В нем описаны применяемые при разработке инструменты и методики.
Четвертый раздел «Тестирование системы» посвящен описанию проведенных тестов для программной системы, показывающих корректность ее реализации. Также в этом разделе описаны примеры входных и выходных данных реализованной программной системы.
Раздел «Заключение» содержит основные результаты, достигнутые в рамках работы.
В качестве решения данной проблемы в области распараллеливания численных алгоритмов может выступать концепция Q-детерминанта, разработанная В.Н. Алеевой [1]. В современном ее виде данная теория позволяет проводить автоматизированный анализ ресурса параллелизма алгоритма, что сильно упрощает разработку параллельных программ [2].
Цель и задачи
Целью данной работы является разработка программной системы автоматизированного построения Q-эффективных программ. Конечный продукт должен позволять исполнять Q-эффективные программы.
В программную систему должно входить два продукта: преобразователь Q-детерминанта в исполняемую программу (компилятор), а также виртуальный исполнитель полученных в ходе преобразования программ (виртуальная машина).
Компилятор на вход должен принимать Q-детерминант алгоритма в формате, выдаваемом «Q-системой» (ранее разработанный продукт, строящий Q-детерминант алгоритма из его блок-схемы), а также дополнительные необходимые метаданные алгоритма. Результатом работы компилятора будет являться программа, которая может быть исполнена виртуальной машиной.
Виртуальная машина на вход должна получать программу, а также входные данные исполняемого алгоритма. Результатом работы машины будут являться выходные данные исполняемого алгоритма.
Для достижения обозначенной цели были поставлены следующие задачи.
1. Изучение концепции Q-детерминанта и ее применения для исследования и использования ресурса параллелизма численных алгоритмов.
2. Проектирование компонентов системы автоматизированного построения Q-эффективных программ.
3. Разработка спроектированной системы.
4. Тестирование полученных программных компонентов.
Обзор литературы
Работу [1] можно назвать основополагающей, так как в ней впервые была описана концепция Q-детерминанта. В ней проработаны основные понятия, такие как Q-терм и Q-детерминант алгоритма, даются развернутые доказательства состоятельности данной теории, а также проводится анализ ресурса параллелизма численных алгоритмов, используя Q-детерминант.
В работах [2-4] продолжается развитие теории, также показываются практические результаты работы. Описывается расширенная модель концепции Q-детерминанта, позволяющая получать Q-эффективные реализации алгоритмов, представленных в форме Q-детерминанта, для вычислительных систем с общей и распределенной памятью. Описана разработанная программа для построения представления алгоритма в форме Q- детерминанта по его блок-схеме, являющаяся подсистемой программной Q- системы для исследования ресурса параллелизма численных алгоритмов. Также представлены результаты практических замеров производительности, реализованных вручную некоторых численных алгоритмов на языке программирования высокого уровня с помощью концепции.
Структура и объем работы
Работа включает в себя введение, 4 основных раздела, заключение и список литературы. Общий объем работы составляет 54 страницы, библиографический список включает 22 наименования.
Краткое содержание работы
Раздел «Введение» содержит обоснование актуальности работы, ее значение, а также обзор литературных источников в рамках предметной области.
Первый раздел «Теоретическая часть» содержит понятия концепции Q-детерминанта, ее значение и возможности применения для исследования ресурса параллелизма алгоритмов. В разделе рассмотрены текущие результаты применения концепции на практике, описаны существующие программные решения, берущие за основу описываемую концепцию, а также постановка задачи текущей работы.
Второй раздел «Проектирование системы» посвящен проектированию разрабатываемой программной системы, позволяющей исполнять численные алгоритмы, представленные в форме Q-детерминанта. В нем описаны архитектурные решения и применяемые алгоритмы.
Третий раздел «Реализация системы» посвящен разработке алгоритмов компиляции и их исполнения. В нем описаны применяемые при разработке инструменты и методики.
Четвертый раздел «Тестирование системы» посвящен описанию проведенных тестов для программной системы, показывающих корректность ее реализации. Также в этом разделе описаны примеры входных и выходных данных реализованной программной системы.
Раздел «Заключение» содержит основные результаты, достигнутые в рамках работы.
В результате выполнения работы был создан программный комплекс, автоматизирующий построение Q-эффективных программ. Для достижения данной цели были решены следующие задачи.
1. Изучена концепция Q-детерминанта и ее применение для исследования и использования ресурса параллелизма численных алгоритмов.
2. Спроектированы компоненты системы автоматизированного построения Q-эффективных программ.
3. Спроектированная система разработана.
4. Полученные программные компоненты прошли тестирование.
Все поставленные задачи были решены, а цель была достигнута.
Разработанная система имеет перспективы дальнейшего развития:
• планируется добавить поддержку систем с распределенной памятью, используя стандарт MPI;
• провести исследования эффективности диспетчеризации и предложить более совершенные алгоритмы, учитывающие особенности современных платформ;
• провести дальнейшее улучшение производительности.
1. Изучена концепция Q-детерминанта и ее применение для исследования и использования ресурса параллелизма численных алгоритмов.
2. Спроектированы компоненты системы автоматизированного построения Q-эффективных программ.
3. Спроектированная система разработана.
4. Полученные программные компоненты прошли тестирование.
Все поставленные задачи были решены, а цель была достигнута.
Разработанная система имеет перспективы дальнейшего развития:
• планируется добавить поддержку систем с распределенной памятью, используя стандарт MPI;
• провести исследования эффективности диспетчеризации и предложить более совершенные алгоритмы, учитывающие особенности современных платформ;
• провести дальнейшее улучшение производительности.



