ВКР: Автоматическое отображение Фортран-программ на мультипроцессор
Описание
1 Постановка задачи
Цель данной работы — создание эксперта OpenMP – компонента системы автоматизированного распараллеливания САПФОР, предоставляющего возможность пользователю системы САПФОР преобразовать свою последовательную программу на языке Fortran в параллельную для запуска на мультипроцессоре. Задача эксперта — на основании данных статического и динамического анализа (при необходимости дополненных или скорректированных программистом), содержащихся в базе данных, представить пользователю варианты распараллеливания программы, то есть варианты расстановки директив OpenMP [1] в программе, с оценкой производительности каждого из них, включая оценки времени выполнения каждого из внутренних циклов. Кроме того, эксперт должен предоставить пользователю дополнительную информацию о мотивах выбора конкретных вариантов распараллеливания, данные о невозможности распараллелить некоторые циклы (если такие имеются) и указать причины.
2 Полученные результаты
В ходе работы было изучено описание базы данных САПФОР ([3]), а также были изучены другие эксперты системы САПФОР для мультипроцессора - эксперты OpenMP [4] и DVM/OpenMP [2]. Сделана попытка улучшить алгоритмы оценки вариантов распараллеливания и реализован программный прототип нового эксперта OpenMP.
2.1 Интеграция с САПФОР
В данный момент реализован прототип программы, который умеет открывать базу данных САПФОР, получать данные о структуре программы (циклы, индексные выражения циклов, структура дерева циклов, используемые переменные) и преобразовывать их в свои внутренние структуры данных. Кроме того, прототип имеет механизмы для добавления выходных данных в базу: в таблицы pvers и pdir.
Аннотация
Целью данной работы являлась реализация компонента “эксперт OpenMP” системы автоматизированного распараллеливания САПФОР. Эксперт отвечает за выбор вариантов распараллеливания программы, оценки их производительности, выбор директив для включения в исходную программу, предоставление дополнительной информации о возможности или невозможности распараллеливания тех или иных участков исходной программы.
Исходными данными для работы эксперта являются сведения об исходной Fortran-программе, собранные в результате своей работы анализатором и помещенные в базу данных. Эксперт принимает решения о распараллеливании программы с помощью директив OpenMP и помещает соответствующие указания в базу данных, откуда они будут считаны генератором исходного кода. В результате будет получена итоговая программа, распараллеленная для запуска на мультипроцессоре.
1. Введение
Развитие современной вычислительной техники приходит к повсеместному распространению параллельных многоядерных вычислительных систем, ориентированных не только на узкий круг научных вычислений, но и предназначенных для домашнего использования. Исторически первым многоядерным процессором, предназначенным для домашнего компьютера стал Pentium D компании Intel, выпущенный в мае 2005 года ([1]). Многоядерные процессоры существовали и ранее, но применялись только в составе высокопроизводительных кластеров и серверов, выход же их на рынок домашнего ПК стал важным моментом в развитии современной вычислительной техники. Производители домашних ПК предлагают многоядерные варианты компьютеров для повышения производительности, а так же для обеспечения повышающихся с каждым годом требований к аппаратной части в компьютерных играх, офисных приложениях, при просмотре видео высокого разрешения (HD).
Все многоядерные компьютеры для домашнего пользования являются симметричными мультипроцессорами, SMP. Система состоит из нескольких однородных процессоров и массива общей памяти. Все процессоры имеют доступ к любой точке памяти с одинаковой скоростью. Операционная система компьютера автоматически распределяет нити процессов по имеющимся в системе процессорам и следит за нагрузкой каждого из них. Программирование для таких систем происходит в модели с общей памятью на основе потоков (нитей). Выбор архитектуры SMP для домашних ПК обусловлен обычно небольшим количеством (по сравнению, например, с супервычислителями) процессоров, а также для упрощения написания прикладных программ.
1.1 Кластеры и мультикомпьютеры
Вычислительный кластер – это мультикомпьютер, состоящий из множества отдельных компьютеров (узлов), связанных между собой единой коммуникационной системой. Каждый узел имеет свою локальную оперативную память. При этом общей физической оперативной памяти для узлов не существует.
В модели SMP программа выполняется как несколько параллельно работающих потока в одной общей памяти. Все данные программы находятся в общей памяти и доступны всем потокам одновременно. В результате отсутствуют пересылки сообщений через медленные (относительно скорости передачи данных по системной шине процессора) сети передачи данных и дублирование данных, как в модели MPI. Однако аппаратная масштабируемость SMP-систем ниже, чем кластеров. Для большинства SMP-систем увеличение количества процессоров связано с большими затратами и зачастую даже невозможно без участия производителя этой системы. Также, при большом количестве процессоров в системе с общей памятью доступ к памяти становится «узким местом» (англ. «bottleneck” - дословно «горлышко бутылки»).
Кластеры предлагают более дешевую модернизацию вычислительной системы, добавление новых узлов в кластер намного проще и обычно заключается в подключении новых узлов и включении их в общую сеть кластера. Но добиться эффективного выполнения программы в рамках модели программирования кластеров (самой распространенной на данный момент является MPI, Message Passing Interface) значительно сложнее. Передача сообщений между узлами является одним из основных факторов, уменьшающих производительность вычислений. На системах с распределенной памятью необходимо произвести не только распределение вычислений, но и распределение данных, а также обеспечить на каждом процессоре доступ к удаленным данным - данным, расположенным на других процессорах.
Если некоторое время назад рассматривали и существовали кластеры с однопроцесоорными узлами, то в настоящее время их практически вытеснили так наываемые SMP-кластеры — мультикомпьютеры, узлы которых сами являются SMP-системами. Возможность запускать на каждом узле кластера несколько потоков в пределах общей памяти узла позволяет эффективнее организовать вычисления, избежать лишних пересылок данных. Однако программирование таких гибридных систем является трудной задачей, требующей учитывать особенности распределения данных и вычислений по узлам кластера, а также распределения вычисления по нитям внутри каждого узла.
Из вышеизложенного можно заключить, что SMP-системы (как в «чистом» виде в домашних ПК, так и в составе гибридных кластеров) сейчас имеют очень большое распространение и значение. Поэтому создание эффективных программ для них является важной задачей программирования.
Файлы условия, демо
Характеристики ВКР
Список файлов
- Автоматическое отображение Фортран-программ на мультипроцессор
- Дипломная работа.docx 387,44 Kb
- отчёт.doc 92,5 Kb