49674 (609199)
Текст из файла
Содержание
1. Введение
2. Модели параллельного программирования
2.1 Модель передачи сообщений MPI
2.2 Другие модели
3. Отладка параллельных программ
3.1 Обзор методик отладки
3.2 Обзор существующих средств отладки
3.3.1 LockInt (Sun)
3.3.2 MAD EMU и ATTEMPT (Johannes Kepler University Linz)
3.3.3 Total View (Etnus LLC), Prism(Sun), p2d2(NAS Ames), Ladebug(Compaq), GDB(GNU), DBX(Sun)
3.3.4 Assure(Intel), DVM debugger(KIAM RAS), UMPIRE (LLNL)
3.3.5 DejaVu (IBM)
3.3.6 Guard( Monash University ), DVM debugger(KIAM RAS), NASA/Ames support for debugging automatically parallelized programs
3.3.7 HOWCOME demonstrator, DD.py ( Saarland University )
4. Пользовательский интерфейс
4.1 Создание интерфейса
4.2 Современные подходы к созданию пользовательского интерфейса
5. Диалоговая оболочка отладчика MPI-программ.
5.1 Постановка задачи
5.2 Общая схема использования
5.3 Входная информация
5.4 Основные объекты визуализации
5.5 Основные функции визуализатора
5.6 Общая схема визуализации
5.7 Окно состояния задачи (Task state)
5.8 Окно обобщенных ошибок (Error location)
5.9 Окно топологии процессоров (Topology control)
5.10 Окно конкретных ошибок (Errors list)
5.11 Окно событий (Event line)
5.12 Окно просмотра стека и исходных текстов (Text control)
5.13 Окно просмотра трасс (Trace control)
Заключение
Литература
-
-
Введение
Существуют сверхсложные вычислительные задачи, для решения которых требуется применение суперкомпьютеров. Такие задачи называют grand challenges.
Grand challenges - это фундаментальные научные или инженерные задачи с широкой областью применения, эффективное решение которых возможно только с использованием мощных (суперкомпьютерных) вычислительных ресурсов [1].
Вот лишь некоторые области, где возникают задачи подобного рода:
-
Предсказания погоды, климата и глобальных изменений в атмосфере
-
Науки о материалах
-
Построение полупроводниковых приборов
-
Сверхпроводимость
-
Структурная биология
-
Разработка фармацевтических препаратов
-
Генетика человека
-
Квантовая хромодинамика
-
Астрономия
-
Транспортные задачи
-
Гидро- и газодинамика
-
Управляемый термоядерный синтез
-
Эффективность систем сгорания топлива
-
Разведка нефти и газа
-
Вычислительные задачи наук о мировом океане
-
Распознавание и синтез речи
-
Распознавание изображений
Эффективное использование ресурсов суперкомпьютеров возможно только при распараллеливании вычислений. Параллельное программирование применяется для решения задач такого рода – предсказание метеоусловий, задач структурной биологии и генетики человека, задач астрономии, гидро- и газодинамики и многих других. Программист должен оптимально распределить данные и вычисления, чтобы добиться максимальной эффективности решения задачи на суперкомпьютерах с распределенной памятью.
Очень часто требуется повысить эффективность уже написанной последовательной программы. Это связано с тем, что накоплен огромный объем последовательных программ, написанных для решения прикладных задач. Конечно, можно попытаться использовать для ее выполнения более мощные аппаратные средства или реализовать более эффективные алгоритмы решения задачи. С другой стороны, можно использовать возможности параллельной обработки информации, т.е., другими словами, попытаться написать параллельную версию последовательной программы.
Параллельная программа не обязательно должна быть параллельной версией какой-либо последовательной программы, она также может реализовывать алгоритмы, которые невыгодно использовать на последовательных ЭВМ.
В любом случае, при написании параллельной программы сложность программирования резко возрастает, по сравнению с написанием последовательной программы. Возрастает соответственно и сложность отладки параллельной программы
-
Возрастает сложность программирования, а, следовательно, возрастает и вероятность совершения ошибок;
-
Появляются новые виды ошибок, специфичные для параллельных программ: взаимная блокировка (deadlock), условия гонок (race conditions), и другие.
Эти ошибки сложны для обнаружения и вызывают недетерминированное поведение программы.
Существует ряд различных походов к отладке параллельных программ. Однако при всех этих подходах важную роль играет диалоговая оболочка отладчика, обеспечивающая для пользователя удобный графический интерфейс. Особенно важным становится такой интерфейс при отладке программ на большом числе процессоров (десятки и сотни).
Данная работа посвящена созданию диалоговой оболочки разрабатываемого в ИПМ им. Келдыша РАН отладчика MPI-программ, который войдет в состав системы автоматизации разработки параллельных программ (DVM-системы). В ней рассмотрены основные подходы к параллельному программированию и к отладке параллельных программ. Приведены примеры уже существующих средств визуализации. Описаны теоретические и практические вопросы и задачи, связанные с разработкой средств визуализации. Приводится описание реализованного прототипа, результаты его тестирования и рекомендации к применению.
2. Модели параллельного программирования
Параллельные программы выполняются не многопроцессорных ЭВМ, поэтому необходимы механизмы для взаимодействия процессоров между собой. Существуют две основных модели такого взаимодействия: через общую память, либо посредством передачи сообщений. Обе это модели являются низкоуровневыми и поэтому крайне неудобны и непривычны для программистов, разрабатывающих параллельные программы.
Системы автоматического распараллеливания могут вполне успешно использоваться на мультипроцессорах, в то же время их использования на распределенных системах существенно затруднено.
2.1 Модель передачи сообщений MPI
В модели передачи сообщений параллельная программа выполняется на множестве процессов, каждый из которых имеет свое собственное адресное пространство. Обмен данными и синхронизация между процессами производится посредством передачи сообщений. В 1993 году был разработан стандарт передачи сообщений MPI (Message Passing Interface) [2]. Внедрение этого стандарта позволило увеличить возможность переносимости программ, разрабатываемых в рамках разных подходов, с использованием модели передачи сообщений.
Достоинства MPI:
-
Возможность использования в языках Фортран, Си, Си++;
-
Предоставление возможностей для совмещения обменов сообщениями и вычислений;
-
Предоставление режимов передачи сообщений, позволяющих избежать излишнего копирования информации для буферизации;
-
Широкий набор коллективных операций (например, широковещательная рассылка информации, сбор информации с разных процессоров), допускающих гораздо более эффективную реализацию, чем использование соответствующей последовательности пересылок точка-точка;
-
Широкий набор редукционных операций (например, суммирование расположенных на разных процессорах данных, или нахождение их максимальных или минимальных значений), не только упрощающих работу программиста, но и допускающих гораздо более эффективную реализацию, чем это может сделать прикладной программист, не имеющий информации о характеристиках коммуникационной системы;
-
Удобные средства именования адресатов сообщений, упрощающие разработку стандартных программ или разделение программы на функциональные блоки;
-
Возможность задания типа передаваемой информации, что позволяет обеспечить ее автоматическое преобразование в случае различий в представлении данных на разных узлах системы.
Тем не менее, интерфейс библиотеки MPI получился достаточно громоздким, не только для использования программистом, но и для реализации. В настоящее время не существует реализаций MPI, в которых в полной мере обеспечивается совмещение обменов с вычислениями.
В 1997 году появился стандарт MPI-2 [2]. На сегодняшний день существует, хотя и не полная, реализация стандарта MPI-2. Он предусматривает развитие в следующих направлениях:
-
Динамическое создание и уничтожение процессов;
-
Односторонние коммуникации и средства синхронизации для организации взаимодействия процессов через общую память (для эффективной работы на системах с непосредственным доступом процессоров к памяти других процессоров);
-
Параллельные операции ввода-вывода (для эффективного использования существующих возможностей параллельного доступа многих процессоров к различным дисковым устройствам).
2.2 Другие модели
Модель неструктурированных нитей. Программа представляется как совокупность нитей (threads), способных выполняться параллельно и имеющих общее адресное пространство. Имеющиеся средства синхронизации нитей позволяют организовывать доступ к общим ресурсам. Многие системы программирования поддерживают эту модель: Win32 threads, POSIX threads, Java threads.
Модель параллелизма по данным. Основным её представителем является язык HPF [3]. В этой модели программист самостоятельно распределяет данные последовательной программы по процессорам. Далее последовательная программа преобразуется компилятором в параллельную, выполняющуюся либо в модели передачи сообщений, либо в модели с общей памятью. При этом каждый процессор производит вычисления только над теми данными, которые на него распределены.
Модель параллелизма по управлению. Эта модель возникла в применении к мультипроцессорам. Вместо терминов нитей предлагалось использовать специальные конструкции – параллельные циклы и параллельные секции. Создание, уничтожение нитей, распределение на них витков параллельных циклов или параллельных секций – всё это брал на себя компилятор. Стандартом для этой модели сейчас является интерфейс OpenMP [4].
Гибридная модель параллелизма по управлению с передачей сообщений. Программа представляет собой систему взаимодействующих MPI – процессов, каждый из которых программируется на OpenMP.
Модель параллелизма по данным и управлению – DVM (Distributed Virtual Machine, Distributed Virtual Memory) [5]. Эта модель была разработана в Институте прикладной математики им. М. В. Келдыша РАН.
3. Отладка параллельных программ
3.1 Обзор методик отладки
В настоящее время можно выделить следующие методики отладки параллельных программ:
-
Методика статической отладки. Для отладки программы не используются процессы ее выполнения;
-
Методика анализа отладочной информации после завершения выполнения программы (post-mortem анализ) [8] позволяет минимизировать эффект вмешательства для систем с распределенной памятью;
-
Интерактивная отладка. Обычный способ отладки последовательных программ – установка точек останова, выполнение программы (процесса (процессов), нити (нитей)) до точки останова, анализ состояния программы в точке останова и т.д.;
-
Динамический контроль. В процессе выполнения программы средство отладки производит действия по локализации ошибок;
-
Методика record & replay. Эта методика предназначена для локализации трудновоспроизводимых ошибок. Отладка программы состоит из сбора информации, необходимой для последующего детерминированного воспроизведения ее выполнения и повторных детерминированных запусков этой программы с использованием собранной информации. При повторных запусках можно использовать инструментарий интерактивной отладки – точки останова, точки контроля данных, и т.п.;
-
Сравнительная отладка [12]. Поиск ошибок в программе при помощи сравнения даны ее выполнения с некоторыми эталонными данными. В качестве эталонных данных могут выступать, например, данные последовательного выполнения отлаживаемой программы.
-
Разностная (дельта) отладка - подход автоматизированной отладки, базирующийся на систематическом тестировании. Предполагается, что путем целенаправленного перебора параметров можно обнаружить те параметры, которые приводят приложение к неправильной работе. Этими параметрами могут быть входные данные, изменения в программном коде, планировка нитей исполнения.
Отладка параллельных программ осложняется (в большей степени, чем отладка последовательных программ) так называемым эффектом вмешательства (probe effect): отлаживаемая программа может вести себя по-разному при её запуске с отладочным средством и без него. Таким образом, отладочное средство может маскировать некоторые ошибки или, наоборот, способствовать их проявлению.
На вход описываемому в данной работе программному средству подается отладочная информация, записанная по ходу выполнения программы, а также информация от компаратора, реализующего сравнительную отладку.
Отладчик, для которого реализуется визуализатор, описываемый в данной работе, реализует два метода отладки: post-mortem анализ и сравнительная отладка.
3.2 Обзор существующих средств отладки
3.2.1 LockInt (Sun)
-
Метод отладки: статическая отладка.
-
Эффект вмешательства: отсутствует.
-
Гибкость: отсутствует (не использует процессы выполнения программы).
-
Удобство использования и простота изучения: пользователю необходимо указать, какие блокировки, за какие разделяемые переменные отвечают. Обучиться использовать просто.
-
Языки программирования и операционные системы: Sun WorkShop ANSI C с Pthreads на ОС Solaris.
-
Использование ресурсов: не требует выполнения на параллельной ЭВМ, т.к. процессы выполнения программы не используются.
-
Локализация ошибок: ошибки синхронизации (дедлоки и условия гонок) ищутся по спецкомментариям пользователя и исходному коду. Возможен пропуск ошибок, в случае нехватки информации от пользователя.
-
Успешность на рынке: входит в SunTM ONEStudio 7. Использовался для отладки программы, вычисляющей множество Мандельброта [15].
3.2.2 MAD EMU и ATTEMPT (Johannes Kepler University Linz)
-
Метод отладки: post-mortem анализ.
-
Эффект вмешательства: имеется, в связи с сохранением трассировки. Для многопоточных приложений может быть очень сильным.
-
Гибкость: отсутствует, (анализ происходит после завершения выполнения программы).
-
Удобство использования и простота изучения: сбор и анализ информации происходит автоматически. Возможны визуализация и анализ производительности. Обучиться использовать просто.
-
Языки программирования и операционные системы: работает с интерфейсом MPI. Поддержки языков программирования нет.
-
Использование ресурсов: трассировка может достигать больших размеров.
-
Локализация ошибок: класс ошибок определён и ограничен (изолированный send/receive, различная длина событий-сообщений при посылке/приёме, ...)
-
Успешность на рынке: информации об использовании MAD за пределами Johannes Kepler University Linz не имеется.
3.2.3 Total View (Etnus LLC), Prism(Sun), p2d2(NAS Ames), Ladebug(Compaq), GDB(GNU), DBX(Sun)
-
Метод отладки: интерактивная отладка.
-
Эффект вмешательства: имеется. Остановка нитей/процессов нарушает стандартное расписание их выполнения.
-
Гибкость: максимальна по определению.
-
Удобство использования и простота изучения: от пользователя требуется самостоятельная установка точек останова, изучение состояния программы, ее перезапуск, изменение значений переменны и т.д. Обучение эффективному использованию может быть не простым.
-
Языки программирования и операционные системы: Поддержка традиционных языков программирования и их параллельных расширений не представляет проблем. Наиболее развитые средства параллельной отладки разработаны для ОС Unix..
-
Использование ресурсов: ресурсы ЭВМ используются эффективно, может потребовать много усилий со стороны человека.
-
Локализация ошибок: класс ошибок достаточно широк, но их локализация сильно зависит от умения программиста.
-
Успешность на рынке: широко используются. Total View и PDBX(IBM) используются на ASCI White.
3.2.4 Assure(Intel), DVM debugger(KIAM RAS), UMPIRE (LLNL)
-
Метод отладки: динамический контроль.
-
Эффект вмешательства: имеется, в процессе работы отладчик сохраняет данные и выполняет операции по идентификации ошибок.
-
Гибкость: возможна, если после обнаружения ошибки отладчик переходит в интерактивный режим.
-
Удобство использования и простота изучения: отладка полностью автоматическая. Обучиться использовать просто.
-
Языки программирования и операционные системы: поддержка традиционных языков программирования, их параллельных расширений, операционных систем не представляет проблем.
-
Использование ресурсов: отладка больших приложений может требовать больших объемов оперативной памяти и времени.
-
Локализация ошибок: класс ошибок ограничен.
-
Успешность на рынке: Assure встраивается в VTune Environment.
Выходят новые версии системы DVM, доступна в исходных кодах.
Umpire используется на ASCI White.
3.2.5 DejaVu (IBM)
-
Метод отладки: record & replay
-
Эффект вмешательства: имеется, при сохранении последовательности событий в программе.
-
Гибкость: возможна, на втором этапе (replay).
-
Удобство использования и простота изучения: отладка полностью автоматическая. Обучиться использовать просто.
-
Языки программирования и операционные системы: реализован прототипный отладчик для многопоточных приложений написанных на Java.
-
Использование ресурсов: требуется как минимум два прогона.
-
Локализация ошибок: полезен для локализации трудновоспроизводимых ошибок.
-
Успешность на рынке: примеры успешного использования можно найти в [16].
3.2.6 Guard (Monash University), DVM debugger (KIAM RAS), NASA/Ames support for debugging automatically parallelized programs
-
Метод отладки: сравнительная отладка.
-
Эффект вмешательства: имеется, при сравнении данных, нарушается планирование выполнения процессов/нитей.
-
Гибкость: возможна, в случае реализации интерактивного метода отладки.
-
Удобство использования и простота изучения: отладчик удобно и просто использовать, если он имеет графический интерфейс и средства визуализации различий в сравниваемых данных. Обучиться использовать просто.
-
Языки программирования и операционные системы: проблем с поддержкой традиционных языков программирования, их параллельных расширений и операционных систем не выявлено.
-
Использование ресурсов: возможно использование трассировки вместо выполнение программы.
-
Локализация ошибок: класс локализуемых ошибок широк, возможны трудности с локализацией трудновоспроизводимых ошибок - дедлоков и эффектов состязаний - не при каждом запуске могут проявиться.
-
Успешность на рынке: Guard, DVM - некоммерческие разработки. Прототипная поддержка для отладки полуавтоматически распараллеленных программ, разработана в NASA/Ames.
3.2.7 HOWCOME demonstrator, DD.py (Saarland University)
-
Метод отладки: дельта отладка.
-
Эффект вмешательства: отсутствует в случае перебора входных данных и строк исходного кода. Имеется при переборе возможностей планировки процессов/нитей.
-
Гибкость: отсутствует.
-
Удобство использования и простота изучения: пользователю достаточно указать параметры перебора. Обучиться использовать просто.
-
Языки программирования и операционные системы: могут возникнуть проблемы с перебором планировки процессов.
-
Использование ресурсов: неэффективно по времени - многократные запуски и/или перекомпиляция.
-
Локализация ошибок: реально локализовать некоторые ошибки может быть сложно (например, из-за больших временных затрат)
методика не позволяет локализовать трудновоспроизводимые ошибки.
-
Успешность на рынке: средства доступны для использования в Интернете.
4. Пользовательский интерфейс
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.