Анализаторы выполнения параллельных программ предназначены для решения следующих основных задач:
Отладка параллельной программы (как и последовательной программы) включает в себя функциональную отладку (достижение правильности результатов) и отладку производительности программы.
При разработке параллельных программ основной целью является увеличение быстродействия. Исследования эффективности параллельной программы с целью выявления и устранения "узких мест", а, в конечном счете, с целью уменьшения времени выполнения программы, называется профилированием параллельной программы.
Моделированием параллельной программы называется выполнение программы на рабочей станции в режиме эмуляции параллельного выполнения. Целью моделирования является проверка корректности средств параллелизма в параллельной программе.
Отладка параллельных программ.
Отладка параллельной программы является процессом существенно более трудоемким, чем отладка последовательной программы. Причинами этого являются сложность параллельной программы и недетерминированность ее поведения.
Вероятность появления ошибок при написании параллельных программ возрастает, поскольку кроме правильного функционирования каждой из параллельных подзадач необходимо обеспечить их правильную синхронизацию, взаимные коммуникации и исключение тупиков (deadlocks).
Отладка параллельной программы требует наличия средств анализа правильности потока управления и потоков данных, а также средств анализа правильности обмена информацией между процессами.
Средства функциональной отладки предоставляют пользователю примерно тот же набор примитивов, что и обычные последовательные отладчики:
Задание состояния программы состоит в поиске и идентификации пользователем интересующих его данных и программных событий и, в частности, включает в себя трассировку программы.
Отображение состояния программы предполагает предоставление пользователю по его запросам значений переменных и элементов массивов, а также состояний потоков управления и данных.
Модификация состояния программы заключается в изменении состояния указанного пользователем процесса и/или его данных.
Современный технологический цикл отладки параллельной программы включает в себя три следующих этапа:
Трассой программы называется журнал событий, произошедших во время выполнения программы. Трассировка программ широко используется при отладке как последовательных, так и параллельных программ. Для трассировки в программу вставляются операторы вывода на экран монитора сообщений, содержащих описания событий. Для параллельных программ в сообщение следует включать идентификационный номер процесса. Средства трассировки могут работать в режиме on-line, позволяя программисту вмешиваться в работу программы. Часто используется визуальное представление трасс.
Для отладки параллельных программ могут быть использованы последовательные отладчики. Так параллельная MPICH-программа может быть запущена как обычная программа в мультипрограммном режиме. Поэтому для отладки вычислительной части такой программы можно использовать все возможности последовательного отладчика. Однако последовательные отладчики можно использовать и для анализа коммуникационных ошибок. Для этого отлаживаемые процессы параллельной программы должны быть запущены под последовательными отладчиками.
В настоящее время имеется большое количество различных параллельных отладчиков MPI-программ. Однако отсутствие стандартов на такие отладчики порождает ряд проблем, затрудняющих пользователю отладку. Отметим две из них. Во-первых, каждая система отладки предоставляет свой набор возможностей и свой интерфейс с пользователем. Во-вторых, каждая достаточно развитая система ориентирована на работу с конкретными компиляторами и библиотеками MPI.
Из параллельных отладчиков отметим широко известный высокоуровневый отладчик параллельных MPI-программ оконного типа TotalView, функционирующий под управлением операционной системы Unix. Отладчик TotalView имеет средства быстрого подключения к любому процессу, а также средства запуска, остановки, перезапуска, просмотра и удаления процессов. Важной особенностью отладчика TotalView является возможность объединения процессов, выполняемых на разных процессорах, в совокупность и установки для этой совокупности общей точки останова. Когда один процесс совокупности достигает точки останова, все сгруппированные процессы также останавливаются.