Главная » Просмотр файлов » Вторая версия

Вторая версия (1158279), страница 5

Файл №1158279 Вторая версия (Параллельное программирование на языке Fortran DVM) 5 страницаВторая версия (1158279) страница 52019-09-18СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 5)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

где:

dvm

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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



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

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

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

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

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

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

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

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

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

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

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

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

dvm fsdeb <имя 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).

Структуру накапливаемых файлов трассировки и перечень сообщений об ошибках сравнения результатов см. в приложении 3.

Замечание. Все шаги отладки, описанные в пунктах 4.3.1.3 и 4.3.1.4., можно запустить одной командой:

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

4.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).

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

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

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

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

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

Характеристики

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

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