Нижегородский государственный университет им. Н.И. Лобачевского Лаборатория Информационных Технологий Мини-проект Визуальные средства создания, отладки и анализа программ для параллельных вычислений 2007г. Участники: Гусева Мария (лидер, технический писатель) Ткаченко Роман (главный тестер) Минаев Дмитрий (технический писатель) Руководитель: Лабутина Анна Андреевна Цели проекта: Цели Конечная цель Исследовательская работа: Обзор визуальных средств для создания и анализа параллельных программ Промежуточные цели Практические навыки: •Опыт работы в коллективе •Получение новых знаний Обзор визуальных программных средств для создания, анализа и отладки параллельных программ. Введение Развитие программирования: Эффективность (низкий уровень) Понятность (высокий уровень) Параллельные программы Эффективность Визуализация Сложность Классификация средств визуализации: Средства визуализации Системы визуального программирования (Visual Programming) Инструменты визуализации (Program Visualization Tools) On-line Post-mortem Средства визуального представления данных Немного истории: 80-е гг. Первые разработки – визуализация данных и алгоритмов Нач. 90-х гг. Расцвет визуализации С сер. 90-х гг. Замедление темпов развития, отсутствие новых идей. Настоящее время: ? Системы визуального программирования Системы визуального программирования Проблема создания систем визуального программирования на данный момент является не решенной. Основная проблема в установке этих продуктов состоит в том, что это узкоспециализированные программы, даже установка которых требует больших навыков работы с операционной системой Unix like. Самые последние билды датируются 2002 годом. Более свежих версий продуктов найдено не было. Code TRAPPER Коммерческий продукт, разработка немецкой компании GENIAS. Графическая среда программирования, поддерживающая все стадии жизненного цикла программных систем. Содержит компоненты построения параллельного ПО, конфигурирования аппаратных средств, распределения процессов по процессорам (process mapping), графической отладки и мониторинга производительности. DEEP DEEP (DEvelopment Environment for Parallel Programming) - интегрированная среда для параллельного программирования. Коммерческий продукт; разработка компании Pacific-Sierra Research. Обеспечивает графический интерфейс, который связывает средства анализа производительности и отладки с исходным кодом программы. Помогает понять структуру и поведение параллельной программы. Heterogeneous Network Computing Environment Исследовательский проект; разработчики - Adam Beguelin, Jack Dongarra, G. A. Geist, Robert Manchek, Keith Moore, Peter Newton, Vaidy Sunderam и др. Система графического создания параллельных программ. HENCE представляет интерфейс для создания, выполнения, отладки параллельных программ которые исполняются с помощью PVM библиотек. Данные программы могут выполняться в гетерогенных системах построенных на основе Unix Система PCG Обзор некоторых визуальных средств отладки и онлайн анализа Система визуализации и отладки параллельных программ Panorama (Panorama - Visualization and debugging tool for parallel programs) Использует средства базового отладчика Processor Map view, Time Line view и Array Map view. Возможность онлайн визуализации Для корректных результатов лучше воспользоваться анализом трассы Гибкость и открытость Paradyn – средство для анализа больших параллельных программ (Paradyn Parallel Performance Tool for measuring the performance of large-scale parallel programs) o Масштабируемость Последовательный поиск «узких мест» Абстракции данных: metric-focus grids и time histograms Универсальность и удобство Дополнительные затраты системных ресурсов, изменения в ходе выполнения программы Falcon – система онлайн мониторинга для параллельных и распределенных программ (The on-line monitoring Falcon system) Основные инструменты онлайн мониторинга: event buffers, local monitor Нарушение порядка событий Переполнение буфера Средства графической библиотеки Polka ordering filter perturbation event Выводы Основная задача: минимизировать вмешательство в работу программы и использование системных ресурсов Как и какие данные собирать о работе программы? Как восстановить правильный порядок событий? Оффлайн анализ параллельных программ Jumpshot-4 Программа для визуализации трассы параллельной программы. Визуальные компоненты: состояние стрелка событие Для использования нужно создать некий отчет – лог-файл. Лог-файлы Лог-файл – файл трассы отмеченных во времени событий. Как создать лог-файл? Библиотека Multi-Processing Environment (MPE) содержит процедуры, которые облегчают написание, отладку и оценку эффективности программ. Создание лог-файлов Создать такой отчет можно двумя способами: автоматически (mpich2mpe.lib) вручную (используя процедуры MPE непосредственно в коде) Создание лог-файлов int MPE_Init_log (void) int MPE_Start_log (void) int MPE_Stop_log (void) int MPE_Finish_log (char *logfilename) int MPE_Log_get_event_number (void) int MPE_Describe_state (int start, int end, char *name, char *color) int MPE_Describe_event (int event, char *name) int MPE_Log_event (int event, int intdata char *chardata) HelloWorld #include "stdafx.h" #include "C:\Program Files\MPICH2\include\mpi.h" #include "C:\Program Files\MPICH2\include\mpe.h" int _tmain(int argc, char* argv[]) { int ProcsNum,ProcRank; int event1a,event1b; int event2a,event2b; MPI_Init(&argc,&argv); MPE_Init_log(); event1a = MPE_Log_get_event_number(); event1b = MPE_Log_get_event_number(); event2a = MPE_Log_get_event_number(); event2b = MPE_Log_get_event_number(); MPE_Describe_state(event1a,event1b,"GetSize" ,"magenta"); MPE_Describe_state(event2a,event2b,"GetRank ","green"); MPE_Start_log(); MPE_Log_event(event1a,0,"start size"); MPI_Comm_size(MPI_COMM_WORLD,&ProcsNu m); MPE_Log_event(event1b,0,"finish size"); MPE_Log_event(event2a,0,"start rank"); MPI_Comm_rank(MPI_COMM_WORLD,&ProcRan k); MPE_Log_event(event2b,0,"finish rank"); printf("Hello from process %d\n",ProcRank); MPE_Finish_log("logfile1"); MPI_Finalize(); return 0; } Графическое представление Графическое представление Графическое представление QuickSort QuickSort Заключение Сокращение числа серьезных работ Отсутствие новых идей Перспективы развития: Новые подходы, соответствующие современным параллельным вычислениям Доступность Сложность Поиск новых визуальных абстракций(тема для отдельного исследования)