ВКР: Сравнительная отладка OpenMP программ
Описание
Московский Государственный Университет им. М. В. Ломоносова
Факультет Вычислительной Математики и Кибернетики
Кафедра Системного Программирования
Дипломная работа
Сравнительная отладка OpenMP программ
Научный руководитель: |
профессор, доктор физ.-мат. наук Крюков Виктор Алексеевич |
1.1 Модели параллельного программирования. 4
1.2 Отладка параллельных программ.. 5
3 Обзор существующих средств отладки OpenMP-программ.. 9
4 Схема функционирования и программная реализация системы сравнительной отладки OpenMP-программ 11
4.2 Сбор трассы: Проблемы и решения. 13
4.2.1 Инструментация программ.. 13
4.3 Сравнение трасс: Проблемы и решения. 17
4.3.1 Применимость сравнения трасс. 17
4.3.2 Трассировка для сравнения. 18
4.3.3 Проблемы при сравнении. 19
4.4 Подробности реализации.. 21
4.4.1 Используемый формат файлов трассы.. 21
4.4.2 Процесс сравнения трасс. 22
Аннотация
Данная работа посвящена разработке универсальной системы сравнительной отладки для программ, написанных на языке Фортран-OpenMP.
Существующие на сегодняшний день инструменты для обнаружения ошибок в OpenMP-программах не всегда доступны пользователю. Они накладывают определенные ограничения на используемые в программе конструкции и чаще всего не могут быть использованы при отладке программ с реальными производственными данными.
Ни одна из известных нам систем сравнительной отладки для Фортран-OpenMP не является универсальной, то есть способной принять произвольную инструментированную программу на данном языке, и провести сравнительную отладку. Имеющиеся инструменты входят в более общие системы, например разрабатываемый в NAS инструмент автоматического распараллеливания [14], и используют информацию о связях и зависимостях, доступную только при использовании данной системы.
Разработанная экспериментальная версия системы позволяет проверить предложенные в данной работе подходы и может находить некоторые распространённые ошибки, возникающие при распараллеливании или появляющиеся при переносе с машины на машину таких программ.
1 Введение
В наши дни параллельная обработка данных перестаёт быть чем-то особенным. Сегодня любой человек, имеющий навыки программирования на последовательных языках, без лишних трудностей может создать достаточно эффективную программу, производящую параллельные вычисления. Это происходит в основном благодаря развитию визуальных сред разработки программ и появлению систем и языков, пользуясь которыми программист должен лишь добавить директивы в свою последовательную программу, и ему не надо задумываться над разделением данных между процессорами или организацией взаимодействия, как например в MPI.
Ярким подобным примером является расширение языков С/С++ и Fortran - OpenMP. Благодаря использованию директив компилятора, привычная последовательная программа легко может быть переделана для выполнения в параллельном режиме. Однако, такая простота в высшей степени обманчива как для новичков, так и для опытных программистов. Прежде чем говорить о проблемах отладки OpenMP программ, проведём краткий обзор темы параллельных вычислений.
1.1 Модели параллельного программирования
Для организации доступа к данным на многопроцессорных ЭВМ требуется взаимодействие между её процессорами. Это взаимодействие может происходить либо через общую память, либо через механизм передачи сообщений – две основные модели выполнения параллельной программы.
В настоящее время существуют следующие модели программирования параллельных программ:
- Модель передачи сообщений. В этой модели программа представляет собой совокупность процессов, каждый из которых имеет своё адресное пространство. Причем эти процессы взаимодействуют и синхронизируются только через передачу сообщений между собой. Для этой модели разработан стандарт MPI (Message Passing Interface);
- Модель неструктурированных нитей. Программа представляется как совокупность нитей (threads), способных выполняться параллельно и имеющих общее адресное пространство. Имеющиеся средства синхронизации нитей позволяют организовывать доступ к общим ресурсам. Многие среды программирования поддерживают эту модель: Win32 threads, POSIX threads, Java threads;
- Модель параллелизма по данным. Основным её представителем является язык HPF. В этой модели программист самостоятельно распределяет данные последовательной программы по процессорам. Далее последовательная программа преобразуется компилятором в параллельную, выполняющуюся либо в модели передачи сообщений, либо в модели с общей памятью. При этом каждый процессор производит вычисления только над теми данными, которые на него распределены;
- Модель параллелизма по управлению. Эта модель возникла в применении к многопроцессорным машинам. Вместо терминов нитей предлагалось использовать специальные конструкции – параллельные циклы и параллельные секции. Создание, уничтожение нитей, распределение на них витков параллельных циклов или параллельных секций – всё это брал на себя компилятор. Стандартом для этой модели сейчас является интерфейс OpenMP;
- Гибридная модель параллелизма по управлению с передачей сообщений. Программа представляет собой систему взаимодействующих MPI – процессов, каждый из которых программируется на OpenMP [4, 5, 6].
1.2 Отладка параллельных программ
При переходе от одного процессора к нескольким возрастает сложность как программирования, так и отладки программ. В параллельных программах могут возникать ошибки, принципиально не встречающиеся в последовательных программах. Параллельным программам, взаимодействующим через общую память, также свойственны ошибки, вызывающие их недетерминированное поведение. Такие ошибки очень тяжело находить с помощью традиционных методов отладки.
Отладка параллельных программ осложняется (в большей степени, чем отладка последовательных программ) так называемым эффектом вмешательства (probe effect): отлаживаемая программа может вести себя по-разному при её запуске с отладочным средством и без него. Таким образом, отладочное средство может маскировать некоторые ошибки или, наоборот, способствовать их проявлению.
Поначалу ситуация с отладчиками параллельных программ была примерно такой же, как с первыми языками программирования – каждый владелец параллельной вычислительной системы имел свои собственные средства отладки. В 1997 году усилия по стандартизации командного интерфейса интерактивного отладчика параллельных программ возглавил форум по отладке высокопроизводительного программного обеспечения – HPDF (High Performance Debugging Forum) консорциума по параллельным инструментальным средствам Ptools (The Parallel Tools Consortium). В результате в 1998 году была создана версия 1 стандарта командного интерфейса интерактивного отладчика, однако, до сих пор не известно ни одной реализации отладчика, удовлетворяющей этому стандарту. Казалось бы, почему? По-видимому, стандарт был создан слишком поздно. Ко времени его написания уже существовало несколько широко используемых средств отладки параллельных программ [6].
2 Постановка задачи
Данная работа рассматривает теоретические и практические проблемы трассировки и сравнительной отладки программ, написанных на языке Fortran-OpenMP.
Главной целью данной работы является разработка экспериментальной версии универсальной системы сравнительной отладки для OpenMP программ, то есть такой системы, которая могла бы взять на входе произвольную инструментированную программу, написанную на языке Fortran-OpenMP, и провести её трассировку с последующим сравнением трасс. Система состоит из библиотеки трассировки событий исполнения OpenMP программы и средств сравнения трасс с целью обнаружения расхождений.
На разработанной экспериментальной версии следует проверить эффективность и производительность предложенных в данной работе решений и методов ускорения и оптимизации сравнительной отладки OpenMP программ.
Никакие методы анализа и логические изыскания не помогут проводящей их программе определить по алгоритмически неправильному коду, что он алгоритмически неправилен, т.к. для этого нужно знать цель написания этого кода. Принципиальное отличие сравнительной отладки от таких методов в том, что у неё есть работающая однопоточная версия исследуемой программы, которая по определению верна. Следовательно, отладчик в какой-то мере знает, что должна делать исследуемая им программа, и может находить в ней алгоритмические ошибки, внесённые при распараллеливании. Наличие такого преимущества является хорошим доводом в пользу практической необходимости данного инструмента.
Файлы условия, демо
Характеристики ВКР
Список файлов
