ВКР: Диалог с программистом в системе автоматизации распараллеливания Фортран-программ
Описание
Московский государственный университет имени М.В.Ломоносова, факультет Вычислительной математики и кибернетики,
кафедра системного программирования
ДИПЛОМНАЯ РАБОТА
Тема: “ Диалог с программистом в системе автоматизации распараллеливания Фортран-программ ”
СодержаниеАннотация. 3
1. Введение. 4
1.1 Место и важность параллельных программ в программировании. 4
1.2 Автоматическое распараллеливание. 5
1.3 Устройство САПФОР. 6
1.4 Необходимость диалоговой оболочки. 9
1.5 Цели диалоговой оболочки. 9
2. Постановка задачи. 11
3. Обзор существующих решений рассматриваемой задачи. 12
3.1 Инструментарий для работы с OpenMP. 12
3.2 Parawise. 13
3.3 BERT77. 14
3.4 ДВОР. 14
4. Исследование и построение решения задачи. 15
4.1 Реализация кроссплатформенности. 15
4.2 Структура базы данных САПФОР. 16
4.3 Доступ к базе данных. 19
4.4 Сценарии работы с диалоговой оболочкой. 20
4.5 Устройство интерфейса диалоговой оболочки. 21
5. Описание практической части. 23
6. Заключение. 35
7. Список цитируемой литературы.. 36
Приложение А. Комбинации быстрого доступа 37
Аннотация
Для эффективного исполнения программ на вычислительной системе параллельной архитектуры применяется процесс распараллеливания.
Распараллеливание програм может быть выполнено вручную или автоматизированно. Автоматизированное распараллеливание часто приводит к проигрышу в эффективности. При ручном распараллеливании программы велики ресурсозатраты. В качестве компромисса можно рассматривать участие пользователя в процессе распараллеливания.
Для осуществления удобного взаимодействия с системой автоматизированного распараллеливания фортран программ (САПФОР) необходима диалоговая оболочка.
В данной работе представлены требования к диалоговой оболочке, исследование возможностей оболочки и её реализация с использованием кросплатформенной библиотеки Qt.
Ключевое значение придается повышению эффективности распараллеливания программы с помощью управления распределением размерностей массивов.
1. Введение
1.1 Место и важность параллельных программ в программировании.
В настоящее время частота отдельного процессора практически достигла своего максимума. Размеры функциональных элементов кристалла близки к своему физическому пределу. Теперь для решения сложных задач используются высокопроизводительные вычислительные комплексы, состоящие из нескольких сотен или тысяч процессоров. А в каждом процессоре может быть несколько ядер. Для того чтобы запустить программу на вычисление на таком комплексе, необходимо четко распределить операции этой программы по процессорам, т.е. написать параллельную программу. Существует возможность написания параллельных программ, с помощью разных технологий, например, MPI(Message Passing Interface), DVM(Distributed Virtual Machine или Distributed Virtual Memory)[1] и OpenMP. Использование параллельных программ особенно важно на задачах, требующих длительного времени выполнения.
При написании параллельной программы сложность программирования резко возрастает, по сравнению с написанием последовательной программы. Распределение операций по процессорам порождает необходимость организовать распределение данных или синхронизацию доступа к общим данным.
Отладка параллельной программы значительно сложнее. Кроме ошибок, которые могли быть в последовательной программе, появляются еще специфические ошибки. Например, тупики. Эти ошибки сложны для обнаружения и вызывают недетерминированное поведение программы. Повторное использование исходного кода старой программы в новых программах тоже затруднительно.
Не всегда представляется возможным отлаживать эффективность параллельной программы, так как не всегда можно понять, сколько времени будет выполняться программа. Иногда можно получить разные результаты при разных запусках программы. Часто для написания эффективной параллельной программы необходимо учесть все особенности вычислительного комплекса так, чтобы минимизировать временные затраты на доступ к данным.
Писать и отлаживать последовательную программу на порядок проще, чем её параллельный аналог. Отсюда вытекает задача распараллеливания последовательных программ, как уже написанных, так и новых.
Существует множество вычислительных последовательных программ, которые написаны на языках C и Fortran. Существует возможность написания параллельных программ на этих языках с использованием библиотек передачи сообщений. Но при использовании такого подхода как раз и возникают перечисленные трудности.
Распараллеливание последовательных программ возможно с применением таких технологий, как DVM и OpenMP. Достаточно вставить в нужные места последовательной программы специальные указания компилятору – директивы и, в некоторых случаях, для повышения эффективности следует изменить исходный код в соответствии с некоторыми требованиями. Процесс вставки директив можно производить в автоматическом режиме. Это ещё больше упрощает работу программиста.
DVM поддерживает директивы для языков C и Fortran. При добавлении DVM-директив программу можно компилировать двумя способами: как параллельную или как последовательную.
1.2 Автоматическое распараллеливание.
В настоящее время имеется несколько систем автоматизированного распараллеливания для кластеров – Parawise[2], Bert77[4] и др. Также заслуживает внимания набор инструментов для работы с OpenMP[3] программами(VivaMP, Intel Threading Tools).
Главным достоинством системы Parawise являются развитые возможности межпроцедурного анализа, которые создавались в течение многих лет.
Главный недостаток – программист должен сам принимать ответственное решение о том, какие массивы и каким образом требуется распределить между процессорами. А система помогает ему дораспределить другие массивы. Основное отличие DVM от Parawise именно в этом. Система DVM распределяет данные сама.
Помимо ручного и автоматического распараллеливания, существует полуавтоматический подход к распараллеливанию программ:
При полуавтоматическом подходе следует требовать от программиста не решения о распараллеливании, а свойства его программы (влияющие на ее распараллеливание). Такая автоматизированная система не должна полностью автоматически и эффективно распараллеливать любые существующие последовательные программы. Существуют правила написания последовательного кода программы, который может быть автоматически преобразован в эффективную параллельную программу.
Примером такой полуавтоматической системы является САПФОР.
1.3 Устройство САПФОР.
САПФОР – система автоматизированного распараллеливания Фортран-программ. САПФОР является частью системы DVM. Сапфор включает в себя анализаторы, генераторы кода, базу данных, эксперты и диалоговую оболочку.




Файлы условия, демо
Характеристики ВКР
Список файлов
