Для студентов МГУ им. Ломоносова по предмету Дипломы и ВКРДинамический контроль корректности OpenMP-программДинамический контроль корректности OpenMP-программ
2021-09-03СтудИзба

ВКР: Динамический контроль корректности OpenMP-программ

Описание

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

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

Кафедра Системного Программирования

Дипломная работа

«Динамический контроль корректности
OpenMP-программ»

Научные руководители

профессор, доктор физ.-мат. наук

Крюков Виктор Алексеевич

кандидат физ.-мат. наук

Бахтин Владимир Александрович

Аннотация

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

Оглавление
1 Введение. 4
1.1 Технология OpenMP. 4
1.2 Ошибки, возникающие при использовании OpenMP. 5
1.3 Отладка параллельных программ.. 7
1.4 Цель работы.. 8
2 Постановка задачи.. 9
3 Обзор существующих отладчиков.. 10
3.1 Сравнение отладчиков. 10
3.2 Выводы.. 12
4 Динамический контроль корректности.. 13
4.1 Схема работы отладчика. 13
4.2 Построение дерева контекстов. 14
4.3 Обнаружение ошибок общей памяти. 16
4.3.1 Представление критических областей. 16
4.3.2 Описание алгоритма. 17
4.4 Расширенное дерево контекстов. 20
4.5 Обнаружение ошибок инициализации. 21
5 Практическая реализация. 24
5.1 Интерфейс отладчика. 24
5.2 Объединение алгоритмов. 25
5.3 Оптимизация отладчика. 26
5.4 Результаты тестирования. 27
6 Литература. 32
  1. Технология OpenMP

Стандарт OpenMP[1] создавался для упрощения разработки параллельных программ для вычислительных систем с общей памятью, а так же для распараллеливания уже существующих последовательных программ. Стандартом определены специальные комментарии (команды препроцессору для C/C++) – директивы компилятору, непосредственно управляющие параллелизмом программы, вспомогательные функции, позволяющие создавать алгоритмы, ориентированные на параллельное выполнение, и переменные окружения, управляющие процессом выполнения параллельных областей.

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

Локальная память доступна только одной нити.

  1. Ошибки, возникающие при использовании OpenMP

В 2004-2005 годах в University of Kassel(Германия) проводилось исследование, целью которого было выявление наиболее часто совершаемых ошибок, обусловленных некорректным использованием функций и директив OpenMP, и приводящих к неверному выполнению программы. Эксперимент проводился на студентах этого университета, которые должны были написать некоторую программу с использованием OpenMP версии 2.5 или более ранней. Большинство испытуемых ранее не имели опыта работы с OpenMP, что позволило выявить ошибки, допускаемые начинающими программистами. В результате были обнаружены следующие ошибки [3]:

  1. Незащищенный доступ к общим переменным.

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

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

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

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

  1. Использование механизма замков без директивы flush.

Этот пункт является ошибкой только для ранних версий OpenMP(до версии 2.5).

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

  1. Чтение общих переменных без директивы flush.

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

1.JPG
2.JPG
3.JPG

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

Учебное заведение
Просмотров
2
Покупок
0
Размер
62,84 Kb

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

  • Динамический контроль корректности openmp-программ.doc 300 Kb
Картинка-подпись
Ваше удовлетворение является нашим приоритетом, если вы удовлетворены нами, пожалуйста, оставьте нам 5 ЗВЕЗД и позитивных комментариев. Спасибо большое!

Комментарии

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