Главная » Учебные материалы » Дипломы и ВКР » Выпускные квалификационные работы (ВКР) » МГУ им. Ломоносова » 12 семестр (4 семестр магистратуры) » Средства анализа эффективности выполнения программ на языке Fortran DVMH на кластере с графическими процессорами
Для студентов МГУ им. Ломоносова по предмету Дипломы и ВКРСредства анализа эффективности выполнения программ на языке Fortran DVMH на кластере с графическими процессорамиСредства анализа эффективности выполнения программ на языке Fortran DVMH на кластере с графическими процессорами
2021-09-16СтудИзба

ВКР: Средства анализа эффективности выполнения программ на языке Fortran DVMH на кластере с графическими процессорами

Описание

Аннотация

В данной работе исследуется задача построения средств профилирования на графическом ускорителе. Производится анализ существующих инструментов для получения характеристик на графическом ускорителе и их применимость при построении средств профилирования на графических ускорителях в среде DVMH. Разработана библиотека для трассировки и профилирования, покрывающая весь целевой спектр характеристик и повторяющая логику профилирования (сбора ключевой информации с помощью интервалов) уже присутствующую в системе DVM для профилирования работы программы на процессорах общего назначения.

Содержание
1 Введение. 5
1.1 Модели параллельного программирования. 7
1.2 OpenMP. 9
1.3 MPI. 9
1.4 OpenACC и CUDA.. 9
1.5 OpeanCL.. 10
1.6 DVM-система. 10
1.7 DVMH-подситема. 10
2 Анализ эффективности. 11
2.1 DVM PA.. 11
3 Постановка задачи. 13
3.1 Базовые требования к библиотеке. 13
3.2 Дополнительные требования. 14
4 Анализ существующих характеристик. 15
4.1 Механизмы извлечения характеристик. 15
4.2 Механизмы CUPTI API. 15
4.2.1 Интерфейс сбора информации о деятельностях (Activity API) 16
4.2.2 Интерфейс функций-обработчиков (Callback API) 18
4.2.3 Интерфейс сбора событий (Event API) 18
4.2.4 Интерфейс сбора характеристик (Metric API) 19
4.2.5 Выводы о применимости. 20
4.3 Характеристики и методы оптимизации. 20
4.3.1 Классы характеристик эффективности DVMH-программ. 21
4.3.2 Стратегии вычисления характеристик. 22
4.3.3 Список характеристик, измеряемых на CPU. 23
4.3.4 Список характеристик, измеряемых на GPU. 27
4.4 Необходимый набор характеристик. 30
5 Анализ инструментария. 31
5.1 The PAPI CUDA Component 31
5.2 TAU Performance System.. 31
5.3 VampirTrace. 32
5.4 Результаты анализа. 33
6 Проектирование решения задачи. 34
6.1 Концепция. 34
6.1.1 Трасса и интервалы.. 35
6.1.2 Регионы.. 38
6.1.3 Записи о копировании. 38
6.1.4 Записи о выделенной памяти. 38
6.1.5 Счетчики. 38
6.1.6 Записи об исполнении интервала. 39
6.1.7 Отражение CUDA окружения. 39
6.2 Интерфейс. 40
6.2.1 Способы конфигурирования. 40
6.2.2 Список опций конфигурирования. 41
6.2.3 Поддержка многопоточности. 45
6.2.4 Управление выводом.. 46
6.2.5 Управление сбором характеристик. 46
6.2.6 Отладка. 48
6.3 Схема данных. 49
6.3.1 Состояние и конфигурация. 49
6.3.2 Трасса. 49
6.3.3 Отображение на интервалы.. 51
7 Построение решения задачи. 52
8 Полученные результаты.. 54
8.1 Документация. 54
8.2 Пример работы.. 54
8.2.1 Конфигурации запуска. 54
8.2.2 Результаты.. 54
9 Заключение. 55
10 Список литературы.. 56
Приложение А. 57
Приложение Б. 58
Приложение В. 59
Приложение Г. 60
Приложение Д. 61
  1. Введение

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

Абстрактное мышление претворяло простое любопытство в процесс познания, на протяжении которого знания не только собирались, структурировались, но и делались примитивные выводы на основе обобщения. Человек мог обобщать их в нечто большее – в модели.

Сложные для познания задачи, такие как законы физики обрастали моделями, упрощенными представлениями о действительности. Такими моделями было проще оперировать. Это позволило человеку разбираться в сути сложных явлений, выявлять закономерности и извлекать из них полезные свойства, которые могли бы быть использованы для упрощения некоторых рутинных процессов в жизни человека, экономя тем самым время и усилия, которые человек мог применить для обретения ранее недоступных благ.

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

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

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

Появились первые ЭВМ. И человечество вступило на новую ступень технологического прогресса. Появились интегральные микросхемы и процессоры. Появились вычислительные центры, а с ними и новые более сложные задачи и проблемы.

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

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

Третья проблема заключается в специализированной архитектуре процессоров. Процессоры являются совокупностью целочисленных вычислителей и сопроцессоров для вещественных вычислений. Очевидно, что их одновременное нахождение в одной плоскости кристалла, создает некоторые дополнительные издержки на вычисления больших математических задач, таких как перемножение матриц, решение СЛАУ и подобных им задач интенсивных по данным, состоящих из обширного множества одинаковых операций над разными данными.

Проблема сложных математических вычислений стояла не только в научной сфере, но также и сферах, которые издревле были близки человеку и являлись источником дохода, а значит коммерчески выгодными. Здесь имеется ввиду сфера развлечений.

Человеком создавались компьютерные игры, и чем больше становилось игр, тем требовательнее был к ним рынок. Особенно привлекательной стала компьютерная графика и ее приближение к реальности.

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

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

Со временем задачи становились все сложнее. Одной из самой сложных задач по сей день является задача расчета теней. Появились специальные подпрограммы для графических ускорителей. Они брали свое название из первоначальной задачи, которую ставили перед ними – шейдеры (Shade – (англ.) тень).

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

Разработчики графических ускорителей подхватили идею, и начали появляться специализированные графические ускорители, которые уже не столько специализировались на выводе графического сигнала на монитор, сколько на вычислениях. Таким примером является семейство Tesla от NVidia.

Таким образом, на текущий момент, у инженеров-разработчиков программного обеспечения, присутствуют мощные инструменты для оптимизации программы путем распределения вычислений:

  1. Распределение вычислений по нитям;
  2. Распределение вычислений по процессам в рамках одного процессора;
  3. Распределение процессов по нескольким процессорам;
  4. Распределение вычислений на графические ускорители.

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

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

Таким образом, при распределении вычислений, основным средством коммуникации являются сообщения, это же касается распределения на графические ускорители.

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

  1. Модели параллельного программирования

В настоящее время в области научно-технических расчетов превалируют три модели параллельного программирования: модель передачи сообщений (МПС), модель с общей памятью (МОП) и модель параллелизма по данным (МПД).

Модель передачи сообщений.

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

Модель с общей памятью.

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

Модель параллелизма по данным.

В модели параллелизма по данным отсутствует понятие процесса и, как следствие, явная передача сообщений или явная синхронизация. В этой модели данные последовательной программы распределяются по узлам (процессорам) вычислительной системы. Последовательная программа преобразуется компилятором либо в модель передачи сообщений, либо в модель с общей памятью, либо в гибридную модель. При этом вычисления распределяются по правилу собственных вычислений: каждый процессор выполняет только вычисления собственных данных, т.е. данных, распределенных на этот процессор. К этой модели принадлежит DVM-система и ее расширение – DVMH.

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

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

  1. OpenMP

Стандарт OpenMP описывает параллельные вычисления с помощью многопоточности, в которой «главный» (master) поток создает набор подчиненных (slave) потоков, и задача распределяется между ними. Предполагается, что потоки выполняются параллельно на машине с несколькими процессорами (количество процессоров не обязательно должно быть больше или равно количеству потоков).

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

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

  1. MPI

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

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

Однако стандарт MPI не предусматривает работы с графическими ускорителями.

  1. OpenACC и CUDA

OpenACC — стандарт, описывающий набор директив для написания гетерогенных программ, использующих как центральный, так и графический процессор [4].

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

Стандарт достаточно молодой, и пока поддерживается ограниченным спектром графических ускорителей и компиляторов.

CUDA – позволяет программистам реализовывать на специальном упрощённом диалекте языка программирования алгоритмы, выполнимые на графических ускорителях NVidia, и включать специальные функции в текст программы [18].

Архитектура CUDA даёт разработчику возможность по своему усмотрению организовывать доступ к набору инструкций графического ускорителя и управлять его памятью.

  1. OpeanCL

OpenCL — стандарт для написания компьютерных программ, связанных с параллельными вычислениями на графических ускорителях и центральных процессорах.

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

  1. DVM-система

DVM-система (далее DVM) – предоставляет единый комплекс средств для разработки параллельных программ научно-технических расчетов [1].

Модель параллелизма DVM базируется на модели параллелизма по данным и управлению. Модели DVM адаптируется как для систем с общей памятью, так и для систем с распределенной памятью.

Для распределения вычислений используются специальные директивы препроцессора.

  1. DVMH-подситема

DVMH-подсистема (далее DVMH) – является расширением DVM, которое подразумевает распределение на графические ускорители. Как и в DVM, DVMH программы получаются путем добавления специальных директив [2].

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

Таким образом, в отличии от OpenCL, DVM в связке с DVMH реализуют модель параллелизма по данным и управлению, в то время, как OpenCL, на сегодняшний день, является гибридным решением между моделью передачи сообщений и моделью с общей памятью, основанных на параллелизме по инструкциям.

  1. Анализ эффективности

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

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

Файлы условия, демо

1.JPG
2.JPG

Характеристики ВКР

Учебное заведение
Просмотров
4
Покупок
0
Размер
391,7 Kb

Список файлов

  • Средства анализа эффективности выполнения программ на языке fortran dvmh на кластере с графическими процессорами.docx 433,86 Kb
Картинка-подпись
Ваше удовлетворение является нашим приоритетом, если вы удовлетворены нами, пожалуйста, оставьте нам 5 ЗВЕЗД и позитивных комментариев. Спасибо большое!

Комментарии

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