Модельпараллелизмаподаннымиуправлению – DVM (Distributed Virtual Machine, Distributed Virtual Memory)[5]. Эта модель была разработана в Институте прикладной математики им. М. В. Келдыша РАН.
3. Отладка параллельных программ
В настоящее время можно выделить следующие методики отладки параллельных программ:
· Методика статической отладки. Для отладки программы не используются процессы ее выполнения;
· Методика анализа отладочной информации после завершения выполнения программы (post-mortem анализ) [8] позволяет минимизировать эффект вмешательства для систем с распределенной памятью;
· Интерактивная отладка. Обычный способ отладки последовательных программ – установка точек останова, выполнение программы (процесса (процессов), нити (нитей)) до точки останова, анализ состояния программы в точке останова и т.д.;
· Динамический контроль. В процессе выполнения программы средство отладки производит действия по локализации ошибок;
· Методика record & replay. Эта методика предназначена для локализации трудновоспроизводимых ошибок. Отладка программы состоит из сбора информации, необходимой для последующего детерминированного воспроизведения ее выполнения и повторных детерминированных запусков этой программы с использованием собранной информации. При повторных запусках можно использовать инструментарий интерактивной отладки – точки останова, точки контроля данных, и т.п.;
· Сравнительная отладка [12]. Поиск ошибок в программе при помощи сравнения даны ее выполнения с некоторыми эталонными данными. В качестве эталонных данных могут выступать, например, данные последовательного выполнения отлаживаемой программы.
· Разностная (дельта) отладка - подход автоматизированной отладки, базирующийся на систематическом тестировании. Предполагается, что путем целенаправленного перебора параметров можно обнаружить те параметры, которые приводят приложение к неправильной работе. Этими параметрами могут быть входные данные, изменения в программном коде, планировка нитей исполнения.
Отладка параллельных программ осложняется (в большей степени, чем отладка последовательных программ) так называемым эффектом вмешательства (probeeffect): отлаживаемая программа может вести себя по-разному при её запуске с отладочным средством и без него. Таким образом, отладочное средство может маскировать некоторые ошибки или, наоборот, способствовать их проявлению.
На вход описываемому в данной работе программному средству подается отладочная информация, записанная по ходу выполнения программы, а также информация от компаратора, реализующего сравнительную отладку.
Отладчик, для которого реализуется визуализатор, описываемый в данной работе, реализует два метода отладки: post-mortem анализ и сравнительная отладка.
3.2 Обзор существующих средств отладки
3.2.1 LockInt (Sun)
· Метод отладки: статическая отладка.
· Эффект вмешательства: отсутствует.
· Гибкость: отсутствует (не использует процессы выполнения программы).
· Удобство использования и простота изучения: пользователю необходимо указать, какие блокировки, за какие разделяемые переменные отвечают. Обучиться использовать просто.
· Языки программирования и операционные системы: Sun WorkShop ANSI C с Pthreads на ОС Solaris.
· Использование ресурсов: не требует выполнения на параллельной ЭВМ, т.к. процессы выполнения программы не используются.
· Локализация ошибок: ошибки синхронизации (дедлоки и условия гонок) ищутся по спецкомментариям пользователя и исходному коду. Возможен пропуск ошибок, в случае нехватки информации от пользователя.
· Успешность на рынке: входит в SunTMONEStudio 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..
· Использование ресурсов: ресурсы ЭВМ используются эффективно, может потребовать много усилий со стороны человека.
· Локализация ошибок: класс ошибок достаточно широк, но их локализация сильно зависит от умения программиста.
· Успешность на рынке: широко используются. TotalView и PDBX(IBM) используются на ASCIWhite.
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.6Guard(Monash University), DVM debugger(KIAM RAS), NASA/Ames support for debugging automatically parallelized programs
· Методотладки: сравнительная отладка.
· Эффект вмешательства: имеется, при сравнении данных, нарушается планирование выполнения процессов/нитей.
· Гибкость: возможна, в случае реализации интерактивного метода отладки.
· Удобство использования и простота изучения: отладчик удобно и просто использовать, если он имеет графический интерфейс и средства визуализации различий в сравниваемых данных. Обучиться использовать просто.
· Языки программирования и операционные системы: проблем с поддержкой традиционных языков программирования, их параллельных расширений и операционных систем не выявлено.
· Использование ресурсов: возможно использование трассировки вместо выполнение программы.
· Локализация ошибок: класс локализуемых ошибок широк, возможны трудности с локализацией трудновоспроизводимых ошибок - дедлоков и эффектов состязаний - не при каждом запуске могут проявиться.
· Успешность на рынке: Guard, DVM - некоммерческие разработки. Прототипная поддержка для отладки полуавтоматически распараллеленных программ, разработана в NASA/Ames.
3.2.7HOWCOME demonstrator, DD.py (Saarland University)
· Методотладки: дельта отладка.
· Эффект вмешательства: отсутствует в случае перебора входных данных и строк исходного кода. Имеется при переборе возможностей планировки процессов/нитей.
· Гибкость: отсутствует.
· Удобство использования и простота изучения: пользователю достаточно указать параметры перебора. Обучиться использовать просто.
· Языки программирования и операционные системы: могут возникнуть проблемы с перебором планировки процессов.
· Использование ресурсов: неэффективно по времени - многократные запуски и/или перекомпиляция.
· Локализация ошибок: реально локализовать некоторые ошибки может быть сложно (например, из-за больших временных затрат)
методика не позволяет локализовать трудновоспроизводимые ошибки.
· Успешность на рынке: средства доступны для использования в Интернете.
В понятие пользовательского интерфейса (ПИ) входит не только, способ визуализации данных (трехмерные, анимированные изображения), но и способы взаимодействия пользователя с системой. Дизайн имеет подчиненное положение, его главная цель – облегчить использование системы [11].