Вторая версия (Параллельное программирование на языке Fortran DVM)

2019-09-18СтудИзба

Описание файла

Файл "Вторая версия" внутри архива находится в папке "Параллельное программирование на языке Fortran DVM". Документ из архива "Параллельное программирование на языке Fortran DVM", который расположен в категории "". Всё это находится в предмете "модели параллельных вычислений и dvm технология разработки параллельных программ" из 7 семестр, которые можно найти в файловом архиве МГУ им. Ломоносова. Не смотря на прямую связь этого архива с МГУ им. Ломоносова, его также можно найти и в других разделах. .

Онлайн просмотр документа "Вторая версия"

Текст из документа "Вторая версия"

71


Московский Государственный Университет

имени М.В. Ломоносова

Факультет вычислительной математики и кибернетики





Параллельное программирование на языке FORTRAN Openmp/DVM

(Методическое пособие по практикуму для студентов 2-4 курсов)









Москва, 2007 год

1 Введение 4

2 Модель параллелизма OpenMP/DVM 4

3 Распараллеливание программ на языке Fortran OpenMP/DVM 6

3.1 Абстрактная модель распараллеливания 6

3.2 Распределение данных. Директива DISTRIBUTE 8

3.3 Локализация данных. Директива ALIGN 9

3.4 Распределение витков параллельного цикла. Директива PARALLEL ON 10

3.5 Удаленные данные. Их типы и спецификация 12

3.5.1 Локализация данных 12

3.5.2 Удаленные данные типа SHADOW 13

3.5.3 Удаленные данные типа ACROSS 13

3.5.4 Удаленные данные типа REMOTE 13

3.5.5 Удаленные данные типа REDUCTION 14

3.6 Распределение вычислений внутри узла. 14

3.6.1 Параллельная область 14

3.6.2 Размноженные по узлам данные 14

3.6.3 Распределение витков цикла между нитями внутри узла. Директивы DO и PARALLEL DO 15

3.6.4 Распределение витков распределенного параллельного цикла между нитями. 16

3.6.5 Работа с удаленными данными типа ACROSS внутри узла 17

3.6.6 Работа с данными типа REDUCTION внутри узла 18

3.7 Копирование секций массивов 19

3.8 Многомерные массивы 22

3.9 COMMON и EQUIVALENCE 22

3.10 Процедуры 23

3.11 Ввод-вывод 24

4 Компиляция, выполнение и отладка DVM-программ 25

4.1 Что такое DVM-программа? 25

4.2 Настройка DVM-системы 25

4.3 Методика отладки DVM-программ 26

4.3.1 Функциональная отладка программы 26

4.3.1.1 Последовательное выполнение и отладка средствами стандартного компилятора с языка Fortran 26

4.3.1.2 Компиляция. Получение готовой программы 26

4.3.1.3 Динамический контроль DVM-указаний 27

4.3.1.4 Сравнение результатов выполнения 28

4.3.1.5 Псевдопараллельное выполнение на рабочей станции (среда WINDOWS и UNIX) и параллельное выполнение на параллельной ЭВМ 30

4.3.2 Отладка эффективности DVM-программы 30

4.3.2.1 Основные характеристики производительности 31

4.3.2.2 Представление программы в виде иерархии интервалов. 32

4.3.2.3 Выполнение со сбором статистики. Запуск анализатора производительности. Представление характеристик задачи по интервалам 33

4.3.2.4 Выполнение со сбором трассы. Запуск DVM-предиктора. Представление прогнозируемых характеристик задачи по интервалам 34

4.3.2.5 Рекомендации по анализу характеристик 38

5 Пример задачи 40

5.1 Пример задачи на Fortran DVM 40

5.2 Пример задачи на Fortran OpenMP/DVM 41

6. Литература 42

Приложение 1. Синтаксис директив Fortran OpenMP/DVM 42

Приложение 2. Сообщения компилятора Fortran DVM 49

Приложение 3. Диагностические сообщения динамического отладчика 61

1. Динамический контроль 62

2. Накопление и сравнение трассировки 63

3. Структура конфигурационного файла трассировки 63

4. Структура трассировки вычислений 64

Приложение 4. Сообщения об ошибках системы поддержки 66

1. Ошибки запуска и завершения 67

2. Ошибки вида "... is not a DVM object" 67

3. Ошибки вида "[the object] is not a/the …" 67

4. Ошибки вида "…has not been aligned/mapped" и "…has already been aligned/mapped"; "…does not exist" и "…already exists" 68

5. Ошибки индексации и значений 68

6. Другие семантические ошибки 69

7. Ошибки запроса памяти и количества объектов 70

8. Ошибки нижнего уровня передачи сообщений 70

Приложение 5. Сообщения при сборе статистики 70

Приложение 6. Тест на определение производительности процессоров. 71

1Введение

Предлагаемое методическое пособие предназначено для студентов 2-го, 3-го и 4-го курсов. Целью практикума является знакомство студентов с DVM-системой, приобретение ими навыков написания и отладки параллельных программ.

DVM-система базируется на модели параллелизма по данным и управлению. При выполнении заданий практикума предполагается использование следующих компонент системы: компилятор с языка Fortran OpenMP/DVM (FDVM), система поддержки выполнения параллельных программ, отладчик параллельных программ, анализатор производительности и предсказатель производительности.

Язык Fortran OpenMP/DVM предоставляет возможность написать программу, которая может одновременно рассматриваться и как последовательная, и как параллельная. Основная работа по реализации модели выполнения параллельной программы осуществляется системой поддержки выполнения DVM-программ. Отладчик параллельных программ позволит провести функциональную отладку параллельной программы. Анализатор производительности предоставит возможность оценить эффективность параллельной программы.

Язык Fortran OpenMP/DVM представляет собой язык Фортран, расширенный спецификациями параллелизма (OpenMP и DVM-спецификациями). Эти спецификации оформлены в виде специальных комментариев, которые называются директивами. В пособии дается описание только тех директив, которые необходимы для выполнения поставленной задачи.

Управление работой системы поддержки, работой динамического отладчика, сбором статистики осуществляется при помощи параметров. В пособии есть описание настройки DVM-системы и способов коррекции параметров, необходимых для работы.

Этапы компиляции, выполнения и отладки DVM-программ в пособии описаны в соответствии с поставленной задачей и с учетом того обстоятельства, что параллельные программы будут небольшими. Предлагаемая методика отладки DVM-программ позволяет упростить обнаружение ошибок в программе, оценить ее эффективность, понять причины недостаточной эффективности и найти способы ее повышения.

2Модель параллелизма OpenMP/DVM

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


На первом этапе определяются массивы, которые могут быть распределены между узлами (распределенные данные). Эти массивы специфицируются DVM-директивами отображения данных. Остальные переменные (распределяемые по умолчанию) отображаются по одному экземпляру на каждый узел (размноженные данные). Распределение данных определяет множество локальных или собственных переменных для каждого узла.

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

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

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

В Fortran OpenMP/DVM программе можно описать следующие уровни параллелизма:

  • Параллелизм распределенных задач, позволяющий отобразить параллельно выполняющиеся задачи на непересекающиеся многомерные секции узлов.

  • Параллелизм распределенных многомерных циклов, витки которых распределяются между узлами многомерной секции.

  • Параллелизм конструкций разделения работы OpenMP (циклы и секции). Эти конструкции могут быть в произвольном порядке вложены друг в друга, хотя в настоящее время компиляторы OpenMP, как правило, не поддерживают вложенный параллелизм.

Любые из указанных уровней в программе могут отсутствовать. Если в программе описаны несколько уровней параллелизма, то порядок их вложенности должен соответствовать порядку их перечисления в приведенном выше списке.

3Распараллеливание программ на языке Fortran OpenMP/DVM

3.1Абстрактная модель распараллеливания

Параллелизм последовательной программы описывается на языке Fortran OpenMP/DVM с помощью директив. Каждая директива оформляется в виде специального комментария:

CDVM$ <директива-DVM>

или

*DVM$ <директива-DVM>

или

C$OMP <директива-OpenMP>

или

!$OMP <директива--OpenMP >



Формальный синтаксис директив приведен в Приложении 1.

Распараллеливание программы в модели OpenMP/DVM можно разделить на три этапа:

  1. Распределение данных (массивов) и вычислений (распределенных параллельных циклов) на массив виртуальных узлов.

  2. Определение и спецификация удаленных данных.

  3. Распределение вычислений между нитями внутри виртуального узла.



Распределение массивов и параллельных циклов

На первом этапе используются директивы DISTRIBUTE, ALIGN и PARALLEL ON. Если рассматривать эти директивы на абстрактном уровне, то они устанавливают соответствие между точками индексных (дискретных) пространств двух объектов. При этом используются индексные пространства следующих объектов:

P – индексное пространство массива виртуальных узлов. Массив виртуальных узлов определяет пользователь и задает его при запуске программы на выполнение.

Ai - индексное пространство i–го массива данных

Lj - индексное пространство j–го параллельного цикла. Распределенный параллельный цикл рассматривается как массив, элементом которого является виток цикла. Количество измерений этого массива определяется количеством заголовков цикла.

Директивы устанавливают соответствие между точками (элементами) следующих объектов:

ALIGN: Ai1 Ai2. Каждой точке (элементу массива) Ai2 ставится в соответствие подмножество точек (элементов массива) Ai1.

PARALLEL ON: Lj Ai. Каждой точке (элементу массива) Ai ставится в соответствие подмножество точек (витков цикла) Lj.

DISTRIBUTE: Ai P. Каждой точке (виртуальному узлу) P ставится в соответствие подмножество точек (элементов массива) Ai.

Совокупность этих директив определяет для каждого виртуального узла подмножество элементов массивов и витков параллельных циклов.

Данные и операторы, не специфицированные этими директивами, автоматически распределяются на каждый виртуальный узел (размноженные данные и не распараллеливаемые вычисления).

Определение удаленных данных

Удаленными данными будем называть данные, вычисляемые на одном узле и используемые на других узлах.

Выявление удаленных данных производится с помощью анализа операторов присваивания. Оператор присваивания всегда выполняется на том узле, где размещены данные его левой части. Если данные левой и правой частей оператора присваивания размещены на одном узле, то удаленных данных для этого оператора не существует. В противном случае необходимо определить тип и размер удаленных данных и описать их соответствующими директивами (см. раздел 3.5). Такой анализ будем называть анализом локализации данных.

Свежие статьи
Популярно сейчас
А знаете ли Вы, что из года в год задания практически не меняются? Математика, преподаваемая в учебных заведениях, никак не менялась минимум 30 лет. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5259
Авторов
на СтудИзбе
421
Средний доход
с одного платного файла
Обучение Подробнее