Система программирования DVM Н.А.Коновалов, В.А.Крюков Институт прикладной математики им. М.В. Келдыша РАН, г. Москва e-mail: konov@keldysh.ru, krukov@keldysh.ru.

Презентация:



Advertisements
Похожие презентации
Методы анализа и предсказания эффективности DVM-программ В.Н.Ильяков, Н.В.Ковалева, В.А.Крюков Институт прикладной математики им. М.В. Келдыша РАН, г.
Advertisements

Гибридная модель параллельного программирования DVM/OpenMP Бахтин В.А. ИПМ им.М.В.Келдыша РАН г. Москва, 20 марта 2008 г.
Fortan OpenMP/DVM - язык параллельного программирования для кластеров В.А. Бахтин, Н.А. Коновалов, В.А. Крюков, Н.В. Поддерюгина Институт прикладной математики.
Методика распараллеливания программ в модели DVM Институт прикладной математики им. М.В.Келдыша РАН
Система автоматизации распараллеливания: DVM-эксперт Студент 528 группы Нгуен Минь Дык Научный руководитель: Профессор, д. ф.-м. н. Крюков Виктор Алексеевич.
Стадник Е. Г. ФПМИ НГТУ Руководитель: Городничев М.А., м.н.с. ИВМ и МГ СО РАН.
Система автоматизации распараллеливания: DVM-эксперт Блюменберг Э.П. 528 Научный руководитель: профессор В.А. Крюков.
Интернет Университет Суперкомпьютерных технологий Лекция 1 Основные понятия Учебный курс Введение в параллельные алгоритмы Якобовский М.В., д.ф.-м.н. Институт.
ПРОГРАММИРОВАНИЕ/ ЯЗЫКИ ПРОГРАММИРОВАНИЯ Лекция 4 Работа с бинарными файлами (весенний семестр 2012 г.) Доцент Кафедры вычислительных систем, к.т.н. Поляков.
1 Тема 1.7. Алгоритмизация и программирование Информатика.
Кафедра ЮНЕСКО по НИТ1 Коллективные коммуникационные операции параллельное программирование.
RISC-архитектуры ( Reduced Instruction Set Computer)
Учебный курс Объектно-ориентированный анализ и программирование Лекция 4 Трансформация логической модели в программный код Лекции читает кандидат технических.
Модель параллелизма по данным и управлению. DVM Эта модель (1993 г.), положенная в основу языков параллельного программирования Фортран-DVM и Си- DVM,
Кафедра ЮНЕСКО по НИТ1 Производные типы данных Параллельное программирование.
Система фрагментированного программирования Перепелкин В.А. Всероссийская молодежная школа по параллельному программированию МО ВВС ИВМиМГ 2009 г.
Министерство образования Республики Беларусь Белорусский государственный университет Управляющие структуры языков программирования.
Система автоматизации распараллеливания: отображение на мультипроцессор Выполнил: студент 528 группы Лойко Михаил Юрьевич Научный руководитель: профессор,
Большая вычислительная задача Математическая модель (система УРЧП) в подпространстве R 3 t Дискретизация УРЧП - система линейных и нелинейных уравнений.
Лекция 3. Программное обеспечение информационных технологий По дисциплине: «Информационные технологии в коммерческой деятельности»
Транксрипт:

Система программирования DVM Н.А.Коновалов, В.А.Крюков Институт прикладной математики им. М.В. Келдыша РАН, г. Москва

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

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

Типы ошибок Синтаксические ошибки в DVM-указаниях и нарушение статической семантики Неправильная последовательность выполнения DVM- указаний или неправильные параметры указаний Неправильное выполнение вычислений из-за некорректности DVM-указаний и ошибок, не проявляющихся при последовательном выполнении программы Аварийное завершение параллельного выполнения программы (авосты, зацикливания, зависания) из-за ошибок, не проявляющихся при последовательном выполнении программы

Динамический контроль Чтение неинициализированных переменных Выход за пределы массива Необъявленная зависимость по данным в параллельной конструкции Модификация в параллельной ветви размноженных переменных (не редукционных и не приватных) Необъявленный доступ к нелокальным элементам распределенного массива Чтение теневых граней распределенного массива до завершения операции их обновления Использование редукционных переменных до завершения операции асинхронной редукции

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

Способы уменьшения ресурсов времени и памяти При конвертации посредством специальной опции задается уровень функциональной отладки – целое число от 0 до 4, определяющее события в программе, о которых сообщается отладчику: 0 - нет событий, 1 - модификация распределенных массивов, 2 - модификация и использование распределенных массивов, 3 - модификация всех переменных, 4 - модификация и использование всех переменных.

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

# Trace size = bytes # String count = # Used memory = bytes PL: 1() [2] {"jac.fdv", 13} = #, (0:1,8,1), (1:1,8,1) # Trace size = bytes # String count = 322 # Count of traced iterations = 64 # Used memory = bytes EL: 1 SL: 2() [1] {"jac.fdv", 22} = # # Trace size = bytes # String count = # Count of traced iterations = 20 # Used memory = bytes PL: 3(2) [2] {"jac.fdv", 26} = #, (0:2,7,1), (1:2,7,1) # Trace size = bytes # String count = 5800 # Count of traced iterations = 720 # Used memory = bytes EL: 3 PL: 4(2) [2] {"jac.fdv", 34} = #, (0:2,7,1), (1:2,7,1) # Trace size = bytes # String count = 5080 # Count of traced iterations = 720 # Used memory = bytes EL: 4 EL: 2 END_HEADER # Trace size = bytes # String count = # Used memory = bytes PL: 1() [2] {"jac.fdv", 13} = #, (0:1,8,1), (1:1,8,1) # Trace size = bytes # String count = 322 # Count of traced iterations = 64 # Used memory = bytes EL: 1 SL: 2() [1] {"jac.fdv", 22} = # # Trace size = bytes # String count = # Count of traced iterations = 20 # Used memory = bytes PL: 3(2) [2] {"jac.fdv", 26} = #, (0:2,7,1), (1:2,7,1) # Trace size = bytes # String count = 5800 # Count of traced iterations = 720 # Used memory = bytes EL: 3 PL: 4(2) [2] {"jac.fdv", 34} = #, (0:2,7,1), (1:2,7,1) # Trace size = bytes # String count = 5080 # Count of traced iterations = 720 # Used memory = bytes EL: 4 EL: 2 END_HEADER

Диагностика расхождений Файл трассы BW: [3] "maxeps"; {"jac.fdv", 9} AW: [3] "maxeps" = ; {"jac.fdv", 9} PL: 1() [2]; {"jac.fdv", 13} IT: 9, (1,1) BW: [3] "a(i,j)"; {"jac.fdv", 15} AW: [3] "a(i,j)" = ; {"jac.fdv", 15} BW: [3] "b(i,j)"; {"jac.fdv", 17} AW: [3] "b(i,j)" = ; {"jac.fdv", 17} IT: 10, (1,2) Диагностика *** CMPTRACE *** : TraceRecord(36), Loop( No(1), Iter(1,3) ). File: jac.fdv, Line: 17 Different FLOAT values: != *** Total found errors: 1; Limit: 1000 *** CMPTRACE *** : TraceRecord(36), Loop( No(1), Iter(1,3) ). File: jac.fdv, Line: 17 Different FLOAT values: !=

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

Интервалы выполнения программы При конвертации посредством специальной опции задается, какие участки программы рассматриваются в качестве интервалов выполнения программы. 0 - нет интервалов, 1 - параллельные циклы и охватывающие их последовательные циклы, 2 - последовательности операторов, указанные в программе посредством директив INTERVAL и END INTERVAL, 3 - объединение подмножеств 1 и 2, 4 - все циклы и интервалы, заданные с помощью директив INTERVAL и END INTERVAL.

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

Характеристики эффективности DVM-программ Пользователь может получить следующие характеристики эффективности программы и отдельных ее частей: execution time - астрономическое время выполнения productive time - прогнозируемое время выполнения на одном процессоре parallelization efficiency – прогнозируемая эффективность параллельного выполнения = productive time / (N * execution time) lost time – потерянное время = N * execution time - productive time где N - число процессоров

Характеристики эффективности DVM-программ Компоненты lost time: insufficient parallelism - потери из-за выполнения последовательных частей программы на всех процессорах communication - потери из-за межпроцессорных обменов Idle time - простои процессоров из-за отсутствия работы и важный компонент времени коммуникаций – real synchronization - реальныепотери из-за рассинхронизации

Характеристики эффективности DVM-программ Кроме того, выдаются характеристики: load imbalance - возможные потери из-за разной загрузки процессоров synchronization - возможные потери на синхронизацию time_variation - возможные потери из-за разброса времен overlap - возможное сокращение коммуникационных расходов за счет совмещения межпроцессорных обменов с вычислениями

Processor system=16 Statistics has been accumulated on DVM-system version 348, platform MVS1000m Analyzer is executing on DVM-system version 348, platform MVS1000m INTERVAL ( NLINE=6 SOURCE=sorb.fdv ) LEVEL=0 EXE_COUNT=1 --- The main characteristics --- Parallelization efficiency Execution time Processors 16 Total time Productive time ( CPU= Sys= I/O= ) Lost time Insufficient parallelism ( User= Sys= ) Communication ( Real_sync= Starts= ) Idle time Load imbalance Nop Communic Real_sync I/O Reduction Shadow

Проблема – нестабильность характеристик Нестабильность коммуникаций Изменение состава процессоров при неоднородности коммуникационной среды Загрузка коммуникационной среды другими работами Можно выдавать стабильные характеристики коммуникаций (вычислять их по формулам, зависящим от длин сообщений, латентности и пропускной способности коммуникационной среды) Нестабильный разброс времен => рассинхронизация

Нестабильность производительности процессоров Попадание на медленные процессоры (появляется разбалансировка, можно запрашивать лишние процессоры и отключать медленные) Частая активизация системных процессов (возрастает время коммуникаций за счет времени реальной рассинхронизации) Можно моделировать не только коммуникации, но и загрузку процессоров => предсказание эффективности

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

Параметры целевого компьютера // System type = network | transputer | myrinet type = myrinet ( 8 ); // Communication characteristics (mks) start time = 10; send byte time = 0.01; // Comparative processors performance power = 1.00;

Принципиальные трудности предсказания эффективности Для современных процессоров трудно прогнозировать время выполнения разных фрагментов программы (кэш-память и динамическое планирование выполнения) Трудно моделировать работу программных компонентов коммуникационной системы => очень сложно получить точные характеристики выполнения программы

Предсказатель – инструмент отладки эффективности Он может довольно точно оценить влияние основных факторов: степень распараллеливания программы - доля параллельных вычислений в общем объеме вычислений равномерность загрузки процессоров во время выполнения параллельных вычислений время, необходимое для выполнения межпроцессорных обменов степень совмещения межпроцессорных обменов с вычислениями =>есть еще важный фактор – эффективное выполнение вычислений на процессорах

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