Lecture_DVM_3 (Электронные лекции)

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

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

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

Онлайн просмотр документа "Lecture_DVM_3"

Текст из документа "Lecture_DVM_3"

- 9 -

Модели параллельных вычислений и DVM–технология разработки параллельных программ

Лекция 3. Методика и средства отладки DVM-программ (2 часа)

1. Что такое DVM-программа?

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

DVM-директивы записываются как параметры макроса

DVM(<directive>)

который в последовательной программе “расширяется” в пустую строку.

DVM-программа – это один или несколько файлов с исходными текстами на языке C-DVM, имеющих расширение .cdv .

2. Настройка DVM-системы

В рабочую директорию, в которой находится DVM-программа, необходимо переписать файл запуска dvm-команд ( dvm или dvm.bat) и файл usr.par из директории dvm_sys/user DVM-системы.

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

В файле usr.par перечислены наиболее часто корректируемые параметры из базового набора параметров DVM-системы. При помощи параметра StatBufLength можно изменять размер буфера статистики. Например, если параметр IsTimeVariation задать равным единице, то буфер статистики будет использоваться также и для накопления информации о временах запуска и завершения всех коллективных операций, и поэтому его размер следует увеличить.

DVM-система имеет параметры, управляющие системой поддержки, работой динамического отладчика, сбором статистики. В документах [1,2] можно найти описание всех параметров DVM-системы и указания по составлению своих наборов параметров и файлов запуска dvm-команд, содержащих различные значения переменных окружения.

3. Методика отладки DVM-программ

Под отладкой DVM-программ подразумеваются два различных вида деятельности:

  • функциональная отладка, целью которой является достижение правильности функционального выполнения программы;

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

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

Функциональную отладку программ рекомендуется проводить на тестовых данных в следующей последовательности шагов.

3.1.1. Последовательное выполнение и отладка средствами стандартного компилятора с языка Си

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

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

Получение готовой программы (выполняемого файла) осуществляется в три этапа:

  • конвертация C-DVM программы в C- программу с получением одноименного файла (файлов) с расширением .c;

  • компиляция полученного на предыдущем этапе файла (файлов) стандартным компилятором с языка С;

  • связывание полученного объектного модуля (модулей) с библиотеками программ, используемых пользователем (если есть), и с библиотекой Lib-DVM – системой поддержки выполнения параллельных DVM-программ.

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

dvm c <имя_DVM-программы>

где:

dvm

префикс (имя файла запуска DVM-команд);

<имя_DVM-программы>

имя файла с исходным текстом программы без расширения. Поиск файла производится только в текущей директории. Предполагается, что он является правильным с точки зрения синтаксиса C и транслируется стандартным C-компилятором (конвертор не делает стандартной проверки синтаксиса и семантики C);



Результат работы: файлы <имя_DVM-программы>.с и готовая программа (выполняемый файл <имя_DVM-программы>) в текущей директории. Если конвертор обнаружил ошибки, то файл <имя_DVM-программы>.с и соответственно готовая программа не создаются. Сообщения об ошибках записываются в файл cdvm_msg.

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

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

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

  1. Необъявленная зависимость по данным в параллельном цикле.

  2. Использование в параллельном цикле или после выхода из него приватных переменных без их предварительной инициализации.

  3. Запись в переменные, доступные только на чтение.

  4. Использование редукционных переменных после запуска асинхронной редукции, но до ее завершения.

  5. Необъявленный доступ к нелокальным элементам распределенного массива.

  6. Запись в теневые грани массива.

  7. Чтение теневых элементов массива до завершения операции их обновления.

  8. Модификация нелокального элемента распределенного массива в последовательной части программы.

  9. Выход за пределы распределенного массива.

  10. Запись в буфер удаленного доступа.

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

Команда получения отладочного параллельного варианта имеет вид:

dvm cpdeb <имя_DVM-программы>

Результат работы: готовая программа (выполняемый файл <имя_DVM‑программы>_p).

Команда запуска отладочного параллельного варианта DVM-программ, осуществляющего динамический контроль DVM-указаний имеет вид:

dvm err <имя_DVM-программы>

Результат работы: ошибки, обнаруженные в DVM-указаниях (при их наличии).

В случае обнаружения неверных DVM-указаний в текущей директории появляется файл еrror.dbg, в котором перечислены все найденные ошибки. Краткое сообщение о наличии ошибок появляется после выдачи результатов выполнения задачи.

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

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

Отсутствие ошибок при динамическом контроле не гарантирует правильной работы параллельной программы по следующим причинам:

  • динамический контроль не проверяет правильность описания редукционных операций;

  • источником ошибок могут быть процедуры, вызываемые из DVM-программ, но написанные на других языках и не подлежащие динамическому контролю;

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

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

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

Для выполнения сравнения необходимо выполнить последовательность команд:

Команда получения отладочного параллельного варианта:

dvm cpdeb <имя_DVM-программы>

Результат работы: готовая программа (выполняемый файл <имя_DVM‑программы>_p).

Команда получения отладочного последовательного варианта:

dvm csdeb <имя_DVM-программы>

Результат работы: готовая программа (выполняемый файл <имя_DVMпрограммы>_s).

Команда запуска отладочного последовательного варианта DVM-программ, осуществляющая накопление эталонной трассировки на одном процессоре :

dvm trc <имя_DVM-программы>

Результат работы: файл с накопленной трассировкой 0.trd. При наличии ошибок сбора трассировки – сообщение об ошибках после выдачи результатов выполнения задачи и появление файла error.trd в текущей директории.

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

dvm red <имя_DVM-программы>

Результат работы: При наличии ошибок – сообщение об ошибках после выдачи результатов выполнения задачи и появление файла error.trd в текущей директории.

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

dvm dif N1 [N2 [N3]] <имя_DVM-программы>

где N1, N2, N3  размеры матрицы процессоров (по умолчанию – 1 1 1).

Результат работы: При наличии ошибок – сообщение об ошибках после выдачи результатов выполнения задачи и появление файла error.trd в текущей директории.

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

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

Для этого используется следующая команда.

dvm ptrc N1 [N2 [N3]] <имя DVM-программы>,

где N1, N2, N3  размеры матрицы процессоров(по умолчанию – 1 1 1).

Результат работы: Для каждого процессора накапливается трассировка в отдельном файле с именами: 0.trd, 1.trd, 2.trd и т.д. При наличии ошибок выдается соответствующее сообщение после выдачи результатов выполнения задачи.

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

dvm dbgerr <имя файла трассы> <имя файла ошибок>

Результат работы: Выдается номер строки в указанном файле трассировки (например, 0.trd), где начинается выполнение витка цикла, на котором обнаружена первая ошибка, указанная в файле ошибок (например, error.trd).

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

Для этого необходимо выполнить команду компиляции:

dvm c <имя DVM-программы>


и команду запуска программы:

dvm run [N1 [N2 [N3]]] <имя DVM-программы>

где N1, N2, N3  размеры матрицы процессоров (по умолчанию – 1 1 1).

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

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

Эффективность выполнения параллельных программ на многопроцессорных ЭВМ с распределенной памятью определяется следующими основными факторами:

  • степенью распараллеливания программы - долей параллельных вычислений в общем объеме вычислений;

  • равномерностью загрузки процессоров во время выполнения параллельных вычислений;

  • временем, необходимым для выполнения межпроцессорных обменов;

  • степенью совмещения межпроцессорных обменов с вычислениями.

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

Основные характеристики и их компоненты

  • Коэффициент эффективности (Parallelization efficiency) равен отношению полезного времени к общему времени использования процессоров.

  • Время выполнения (Execution time) - максимальное значение среди времен выполнения программы на всех используемых ею процессорах

  • Число используемых процессоров (Processors).

  • Общее время использования процессоров (Total time) - произведение времени выполнения (Execution time) на число используемых процессоров (Processors).

  • Полезное время (Productive time) - сумма трех составляющих – полезного процессорного времени (CPU), времени ввода-вывода (I/O) и полезного системного времени (Sys).

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

  • Недостаточный параллелизм (Insufficient_par) и его компоненты

  • Коммуникации (Communication) и все их компоненты.

  • Простои (Idle time) процессора из-за его недостаточной загрузки.

  • Потенциальные потери из-за разбалансировки (Load_Imbalance).

  • Потенциальные потери из-за синхронизации (Synchronization) при выполнении коллективных операций и все их компоненты.

  • Потенциальные потери из-за разброса времен (Time_variation) выполнения коллективных операций и все их компоненты.

  • Время перекрытия (Overlap) и его компоненты. Эта характеристика отражает потенциальное сокращение коммуникационных расходов за счет совмещения межпроцессорных обменов с вычислениями.

Характеристики выполнения программы на каждом процессоре

  • Потерянное время (Lost time) - сумма его составляющих – потерь из-за недостаточного параллелизма (User insufficient_par), системных потерь из-за недостаточного параллелизма (Sys insufficient_par), коммуникаций (Communication) и простоев (Idle time).

  • Потери из-за недостаточного параллелизма (User insufficient_par).

  • Системные потери из-за недостаточного параллелизма (Sys insufficient_par).

  • Простои на данном процессоре (Idle time) - разность между максимальным временем выполнения интервала (на каком-то процессоре) и временем его выполнения на данном процессоре.

  • Общее время коммуникаций (Communication).

  • Реальные потери из-за рассинхронизации (Real synchronization).

  • Потенциальные потери из-за рассинхронизации (Synchronization).

  • Потенциальные потери из-за разброса времен (Variation).

  • Время перекрытия асинхронных операций (Overlap).

  • Разбалансировка (Load_imbalance) вычисляется как разность между максимальным процессорным временем (CPU+Sys) и соответствующим временем на данном процессоре.

  • Время выполнения интервала (Execution_time).

  • Полезное процессорное время (User CPU_time).

  • Полезное системное время (Sys CPU_time).

  • Время ввода-вывода (I/O_time).

  • Число используемых процессоров для данного интервала (Processors).

  • Времена коммуникаций для всех типов коллективных операций (Reduction, Shadow, Remote_access, Redistribution и I/O).

  • Реальные потери из-за рассинхронизации для всех типов коллективных операций.

  • Потенциальные потери из-за рассинхронизации для всех типов коллективных операций.

  • Потенциальные потери из-за разброса времен для всех типов коллективных операций.

  • Время перекрытия для всех типов коллективных операций.

Замечание. Последние три характеристики выдаются только в том случае, если в параметрах запуска задан параметр IsTimeVariation=1;

Для получения величины реальных потери из-за рассинхронизации необходимо задать параметр IsSynchrTime=1.

3.2.2. Представление программы в виде иерархии интервалов. Выполнение со сбором статистики сбором статистики.

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

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