Проектирование видов отображения для системы параллельного программирования DVM

Алгоритмы и программные средства параллельных вычислений.
Вып. 5. Екатеринбург. ИММ УрО РАН. 2001 г.

В. Л. Авербух, А. Ю. Байдалин

{averbukh, bajur}@imm.uran.ru

Работа выполнена при поддержке РФФИ, гранты N 01-07-90210, N 01-07-90215

Введение

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

В нашей работе описываются результаты первого этапа разработки средств визуализации для разработанной в ИПМ РАН системы параллельного программирования DVM [4],[5],[6]. Эта система представляет собой полноценную систему параллельного программирования, расширяющую стандартные языки C и Fortran 77 до эффективных паралельных языков. DVM включает в себя не только средства описания программ в рамках парадигмы параллелизма по данным, но и средства отладки правильности и эффективности, а также предсказания производительности. В настоящий момент DVM выдает большие объемы полезной отладочной информации в основном в текстовом и табличном виде. Отметим, что DVM функционирует на отечественных параллельных вычислителях типа МВС-1000, включая состоящий в настоящий момент из более чем 700 модулей МВС-1000/М, установленный в МСЦ. Работа с DVM на МВС-1000/М позволяет проверить предложенные методики визуализации на реальном масс-параллельном вычислителе, учитывая, что особенности программирования и отладки на сотнях процессоров резко отличаются от параллелизма на 16-32 вычислительных блоках. Важным также является возможность активных консультаций с разработчиками системы DVM и ее пользователями по ходу реализации средств визуализации.

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

Отладка эффективности

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

Системы отладки эффективности служат для того, чтобы предсказывать, находить и избегать возможную неэффективность исполнения параллельных программ. Несмотря на большое количество инструментальных средств, описанных в литературе, лишь немногие из них реально используются. Для того чтобы разработать хороший инструмент, помогающий программисту отлаживать и повышать эффективность своей программы, необходимо рассмотреть возникающие ошибки и изучить их природу. Имеет место классификация проблем отладки и настройки эффективности. При этом можно выделить следующие факторы, затрудняющие поиск ошибок:
  1. Разрыв между причиной и следствием. Часто проявление ошибки программы далеко от ее причины. Трудно понять в чем дело, когда ошибку нельзя связать с исходным текстом программы. В эту категорию относятся ошибки, которые имеют много "степеней свободы", то есть являются нечастыми, неустойчивыми, несогласованными. Знание о том, что эффективность достигается оптимальностью, не связано со знанием, какую часть кода надо оптимизировать. Хотя довольно просто определить признаки неэффективности, часто бывает очень трудно найти, где локализируется ее причина. Преодоление этого разрыва, как правило, начинается со сбора данных по трассировке программы, объем которых может быть очень большой (особенно в случае масс-параллельных программ). Сопоставить данные трассировки счета программы на низком уровне трудно. Например, отладчик показывает, что время потрачено, но не ясно где именно оно потрачено, так как показывается суммарное время для всех процессоров.
  2. Неточные инструментальные средства. Существуют ошибки, которые исчезают, когда включены средства отладки -- явление известное как "эффект зонда". Возможны также эффекты "разрушения" правильного выполнения параллельной программы за счет внедрения отладочного и визуализационного инструментария.
  3. Неверное предположение или модель. Модель, объясняющая как работает операция программного обеспечения системы или аппаратного компонента, может значительно уменьшить область поиска причины ошибки, но также в равной степени может все усложнить, если модель неверна.
  4. Неструктурированная программа. Иногда отладить чужую программу сложно из-за громоздкости кода, его засоренности. [12]
Большинство систем отладки эффективности используют отображение метрик производительности. Метрика -- зависящая от времени функция, характеризующая некоторые аспекты производительности параллельной программы, например, нагрузка центрального процессора, использование памяти, число операций с плавающей запятой.

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

Именно на методах статистической графики в основном базируются виды отображения системы ParaGraph, ставшей неофициальным стандартом системы отладки эффективности в середине 90-ых годов. ParaGraph поддерживает более 25 видов отображения, среди которых, как хорошо известные столбчатые и круговые диаграммы и графики различных типов, так и менее привычные, например, диаграммы Гантта или диаграммы Кивиатта. (См. ниже.)

Работа целого ряда систем отладки эффективности, разработанных в первой половине 90-ых годах, заключается в сборе данных о производительности параллельной программы для последующей передачи визуализирующей части системы ParaGraph. В других системах отладки эффективности (PIE, PEP, RP3) [1], [23],[17],[15] содержится примерно тот же набор визуальных средств, который представлен в системе Paragraph [11].

Интересно, что в системе VisuaLinda [16], предназначенной для отладки программ на языке параллельного программирования Linda, используется трехмерный аналог диаграмм Гантта - цветные цилиндры, отображающие состояния параллельных процессов, связанные между собой линиями, представляющими обмены сообщениями (См. Рис. 7).

Из более поздних (середина 90-ых годов) разработок, следующих в этом направлении, мы рассмотрим системы Paradyn, P3T, AIMS, очень интересную систему Avatar, основанную на использовании виртуальной реальности для нужд отладки эффективности, системы Kanoko и Chiron.

Системы отладки и настройки производительности

Этот раздел содержит обзор систем отладки и настройки производительности, разработанных во второй половине 90-ых годов. Обзор представляется полезным в связи с проблемой разработки видов отображения отладочной информации для параллельных систем.

Paradyn [18] является инструментом измерения производительности очень больших параллельных программ и среди других модулей включает в себя Модуль "Консультант Эффективности", определяющий "узкие места" производительности путем автоматического поиска в информационном пространстве, определенном моделью поиска по трем осям: "ПОЧЕМУ", "ГДЕ" и "КОГДА". (Почему данная прикладная программа имеет низкую производительность? Где расположено "узкое место" производительности? Когда проявилось воздействие данного "узкого места" на производительность программы?)

Система не проходит по всем возможным приближениям поиска, а выбирает подмножество допустимых приближений. Упорядоченный список возможных приближений определяется (с использованием системных подсказок) при рассмотрении узлов, следующих из текущих узлов на каждой из осей. Затем из этого списка выбирается одно или более допустимых приближений. Если выбранное приближение не приводит к результату, то рассматривается следующее. Разработан специальный граф истории поиска, в котором содержится информация о пройденных путях по каждой из осей и результаты проведения проверок. Система поддерживает визуальный вид отображения этого графа. Каждый узел в этом графе представляет единичный шаг процесса поиска, который определен по одной из трех осей. Узлы раскрашены в соответствии с текущим состоянием представляемой ими конкретной гипотезы:
  • тестируемой в настоящее время (розовый цвет);
  • протестированной с положительным результатом (синий цвет);
  • протестированной с отрицательным результатом (зеленый цвет);
  • нетестированной (оранжевый цвет).
Дуги графа представляют приближения поиска и окрашены в соответствии с осями. Поиск по оси "ПОЧЕМУ" представляется синим цветом, а по оси "ГДЕ" - пурпурным (ярко-красным). Узлы снабжены текстами, объясняющим смысловое значение конкретного узла. Так как каждый шаг поиска ограничен единичным приближением, то, следуя по верному (синему) пути из корня в необходимый узел, мы можем получить полное представление о развитии процесса поиска. Когда Paradyn подсоединяется к прикладной программе, подсистема управления средствами измерения определяет все потенциальные позиции ввода средств измерения путем сканирования двоичного кода прикладной программы. После этого подсистема управления средствами измерения создает небольшие фрагменты программы (trampolines). Эти заготовки вставляются в двоичный текст прикладной программы. Используя средства ОС UNIX, подсистема управления инструментальными средствами обеспечивает функционирование этих заготовок в теле прикладной программы (См. Рис. 9).

Иной подход к отладке эффективности реализован в системе P3T [10], предназначенной для оценки и оптимизации производительности параллельных программ. Если в предыдущих работах рассматривалась отладка эффективности на уровне операций посылки сообщений, то здесь проводится оптимизация самого кода программы при ее распараллеливании. Система P3T вычисляет набор параметров параллельной программы, каждый из которых отражает различные аспекты производительности. С помощью P3T можно ответить на три основных вопроса, касающихся отладки эффективности параллельной программы, а именно:

  1. Какой из аспектов производительности необходимо улучшить?
  2. Где находятся части программы, требующие увеличения производительности?
  3. Что должно быть сделано, чтобы увеличить производительность?
Ключевой проблемой при разработке систем оценки производительности является доведение важной информации о поведении выполняемой программы до программиста и до компилятора. Это позволяет организовать настройку эффективности программ. В системе реализован набор интерактивных инструментов, служащих для настройки эффективности и визуализации данных о производительности прикладной программы. Отображаются параметры параллельной программы, а их изменение пользователем обеспечивает выбор оптимальных стратегий программирования, связанных с распараллеливанием. Визуализация производительности осуществляется для единичного выражения. В окне визуализации выдаются параметры параллельной программы в виде цветных полос. Эти значения сравниваются с результатом выполнения с наихудшей производительностью, который выводится в нижней части окна. Пользователь имеет возможность выбрать стратегию распределения по процессорам структур данных (например, массивов) и распараллеливаемых программных конструкций, таких как циклы (См. Рис. 13).

Система AIMS [22] является инструментарием для настройки и предсказания производительности программ, основанных на посылке сообщений (как работающих в сети, так и в рамках параллельного вычислителя). AIMS содержит набор подсистем, служащих для измерения и анализа производительности.

Измерения, проведенные в ходе выполнения программы для создания файла трассировки, нарушают и коммуникационные, и временные характеристики событий, записанных в файле. Для сглаживания последствий этих нежелательных эффектов служит специальный модуль компенсации, использующий соответствующие модели оценки взаимодействий для данной вычислительной архитектуры. Компенсатор внедрения исправляет файл трассировки, который может затем служить входным файлом для разнообразных средств оценки производительности, определяющих характеристики производительности на основании "посмертных" данных (См. Рис. 10).

Визуализация производится с использованием анимационных видов отображения. Эти виды отображения представляют информацию, указывая, когда выполняются отдельные программные конструкции, когда посылаются сообщения, как долго сообщения стоят в очереди перед тем, как обработаться, когда отдельный процессор простаивает. Некоторые виды отображения показывают фрагменты истории программы, непрерывно прокручивая изображение, другие, обновляя предыдущее состояние, создают анимационную последовательность образов.

Визуальная среда Avatar [20], созданная в рамках проекта Pablo, базируется на использование средств виртуальной реальности и предназначена для представления очень больших объемов данных о производительности параллельных систем, получаемых непосредственно в ходе их работы. Avatar также обеспечивает адаптивное управление прикладными программами в реальном времени.

Основной визуальной метафоры системы Avatar является трехмерное обобщение используемого в статистической графике видов отображения "метод множественного вывода данных" (scatterplot) (См. Рис. 11) и "scatterplot-матрицы", который называют "Scattercube-матрица" (См. Рис. 12). При работе с системой пользователь, применяющий средства виртуальной реальности, как бы оказывается внутри трехмерного помещения, в котором на внутренних гранях показаны оси, а на гранях - "полу" и двух "стенах" выводятся кривые, описывающие поведение параллельной программы. Текущее положение каждого процессора в информационном пространстве оценок обозначается октаэдром. Вводится визуальное отображение - аналог фазового портрета - "лента истории", которая может ассоциироваться с октаэдром для того чтобы показать предыдущие положения октаэдра, так что недавние положения обозначены лентой ярко синего цвета, а самые старые - темно-синий (то есть градуирован от голубого до темносинего в зависимости от времени возникновения). Лента истории также выведена в приведенном примере и видна в левом верхнем углу "помещения".

Набор единичных scattercube'ов напоминает стеклянный небоскреб, каждая из комнат которого содержит трехмерный вывод, описывающий различные аспекты поведения параллельной программы. Путешествие по "небоскребу" дает возможность полного исследования данных о производительности прикладной программы. При выводе в режиме реального времени и адаптивном контроле работы параллельной программы, необходимо своевременно обновлять выводимые данные, чтобы пользователь не принимал существенных решений, базируясь на предыдущей. возможно, устарелой информации. В данной метафоре четко виден "возраст" каждого выведенного элемента. Так выведенный элемент начинает постепенно тускнеть, если с момента появления последнего сообщение с данными о производительности соответствующего процессора прошло много времени. А если временной промежуток слишком велик, то данный элемент просто исчезает.

Важную роль в системе Avatar играет пользователь, "погруженный" в виртуальную реальность, описывающую поведение параллельной программы. Пользователь осуществляет управление выводом информации, а также адаптивный контроль работы самой прикладной программы.

Существует несколько конфигураций системы Avatar на базе:

  • рабочей станции, снабженной монитором,
  • ручного манипулятора с шестью степенями свободы и шлема с встроенным экраном,
  • "театра виртуальной реальности" CAVE.

    Сцена театра CAVE первоначально представляет собой куб размером с комнату, где на стены проецируется видеоизображение с высокой разрешающей способностью. Метафора scattercube реализована для всех аппаратных версий системы, базирующихся и на рабочую станцию, и на шлем с встроенным экраном, и на виртуальный театр CAVE. Avatar использует звук для подкрепления эффективности вывода информации и увеличения числа размерностей выводимых данных, за счет невизуального представления значений полученных оценок. Кроме того звук может служить и для целей перемещения, ориентировки и взаимодействия в виртуальном пространстве. При помощи характеристик звучания (например, высоты звука) описываются статистические характеристики полученных оценок. Когда пользователь впервые входит в scattercube, то появление звука помогает ему установить местоположение большинства данных.

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

    В анимационной системе Kanoko [19] предлагается метод анимации, отображающий значения состояния программы, взятые из ее трассы, в набор состояний динамической модели системы. Затем воспроизводится работа параллельной программы (моделируется динамическая система), а результаты моделирования визуализируются (а также сонифицируются). Анимация показывает изменения в балансе между вычислениями и обменами как обычные движения некоторой динамической системы. (Таким образом, имеет место использовании привычной для пользователя метафоры.) В частности определяются используемая динамическая система и отображение элементов и состояний параллельной ЭВМ на тела и силы динамической системы. Моделирование параллельной ЭВМ ведется на основе топологии ее (физической) сети. Так для параллельного вычислителя вычислительные модули, вычисления, загруженные на данном модуле, коммуникационная сеть и количество обменов могут отображаться на тела, массу тела, пружины между телами и силы притяжения между телами соответственно (См. Рис. 8).

    Визуальная система отладки эффективности параллельных программ Chiron [9] отображает эффективность работы программ многопроцессорных машин с общей памятью. Здесь используется трехмерная графика, что позволяет показывать большое количество информации (См. Рис.14). Chiron разработан для решения таких проблем, как плохое использование кэша, неудачное размещение данных в памяти, разделения работы между процессорами, неэффективность синхронизации. Проект Chiron поддерживает три вида отображения данных. Каждый вид отображения представляется как отдельный объект в трехмерном пространстве, которым можно управлять в интерактивном режиме (вращать, переключать уровень детализации, менять масштаб).

    Система использует следующие виды отображения:

    1. Глобальный, являющийся кратким обзором интересующего показателя для всех объектов, классов или выражений программы. Система поддерживает два показателя: стоимость обращения к памяти и стоимость синхронизации (включая время ожидания). Глобальный вид отображения представляет собой трехмерный свернутый граф. Объекты сортируются согласно некоторому критерию (показателю), затем объекты помещаются последовательно вдоль диагоналей квадратной сетки в результате чего получается поверхность.
    2. Отображение корреляций, полезное для понимания как некоторые свойства всего набора объектов соотносится к свойствам определенного объекта, или подмножества объектов, или участка программы. Отображение корреляции включает проектирование дополнительного интересующего нас показателя на поверхности свернутого графа (т.е. поверх глобального вида) либо с помощью расцветки текстуры на поверхности, либо добавляя дополнительный показатель как малое возмущение основной поверхности.
    3. Временное отображение. Обеспечивается несколько типов временных отображений. (Далее ось Z -- время)
      • Отображение размещения кэша показывает как объекты и блоки кэша пространства виртуальной адресации перемещаются из различных кэшей: ось X -- номер процессора, ось Y -- номер объекта. Точка (x, y, z) -- окрашена, если данный объект находится в кэше данного процессора во время Z. Визуально это выглядит как непрерывная линия, начиная со времени когда объект попал в кэш, и до момента когда покинул кэш.
      • Отображение активности процессора показывает с каким объектом какие процессоры обращаются в данное время. Ось X -- это номер процессора, ось Y -- это номер объекта. Точка (x, y, z) окрашена, если данный процессор обращается к данному объекту во время z. -- Отображение температуры объекта приблизительно соответствует производной отображения кэша. Точка (x, y, z) окрашена, если во время z произошло изменение в состоянии объекта y в кэше процессора x.

    В 80-ые годы системы визуализации параллельных вычислений базировались на посмертной визуализации собранных данных о работе параллельной программы. В 90-ые годы реализуются интерактивные визуальные отладчики параллельных программ как для случаев отладки правильности, так и для случаев отладки эффективности. Примерами последних может служить специальный модуль компенсации, реализованный в системе AIMS для создания эффекта интерактивной отладки или "trampolines" системы Paradyn. Однако следует отметить некоторую искусственность и несомненную трудоемкость и громоздкость способов создания эффекта "живой" визуализации.

    Более перспективными представляются разработки интерактивных отладочных средств для параллельных ЭВМ, использующих клиент-серверный подход. При этом в роли клиента выступает отладчик, в частности работающий на хост-машине параллельного вычислителя и отвечающий за расстановку контрольных точек, интерфейс с пользователем и визуализацию данных, тогда как сервер это параллельная счетная задача. За счет инструмента задания соответствия между переменными или компонентами отлаживаемой программы и моментов передачи данных можно осуществить описание отладочной сессии. Данные можно передать из любой части программы, в том числе осуществить промежуточную передачу для отслеживания хода программы или сохранения состояния программы 3.

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

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

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

    Ограниченное значение имеют и попытки разработки видов отображения на базе новых метафор. Искусственные и/или случайные сближения могут дать интересные, но не слишком легко и однозначно интерпретируемые картинки.

    В этой связи может помочь комплексный подход к разработке систем параллельного программирования, когда полноценно и в едином ключе реализованы средства описания параллельных программ и их отладки правильности и производительности. Тогда, опираясь на анализ основных программных сущностей системы, можно спроектировать специализированные виды отображения как для спецификации программ, так и для представления отладочных данных. Именно такой подход реализован проектировании системы DVM.

    Разработка видов отображения

    Вид отображения определим как абстракцию графического вывода, содержащую спецификацию визуальных объектов, их атрибутов, их взаиморасположения, возможной динамики и способов взаимодействия. При этом визуальные формы абстрактных данных не связаны ограничениями, накладываемыми определенными графическими системами [1],[2].

    Как уже было сказано выше, наиболее распространненые виды отображений, используемые для визуальной отладки, берут свое начало от методов статистической графики. В процессе параллельной работы программы накапливалась некоторая статистическая информация. После завершения работы программы эта информация отображалась средствами визуализации. Таким образом отладка происходила в посмертном режиме. Появлялись и новые, более специализированные виды отображений, часть из которых представляла из себя композиции уже созданных видов отображений, а часть являлась новыми разработками. Ниже мы рассмотрим некоторые классические виды отображений, такие как диаграммы Гантта, диаграммы Кивиатта, графики, схемы взаимодействия, и область их применения.

    Диаграммы Гантта могут служить для отображения состояний процесса или процессора. При этом каждому параллельному процессу (процессору) соответствует своя горизонталь, и разными цветами показывается время ожидания, простоя и работы данного процесса (процессора), Протяженность цветного интервала дает представление о том, сколько времени процесс находился в данном состоянии. Диаграмму Гантта можно трактовать как ось времени, на которой откладываются те или иные события. Кроме текущей информации в диаграммах Гантта показывается информация об истории развития процесса, то есть существует возможность отследить, как вел себя процесс, где и почему образовались тупики и бесконечные откладывания. Таким образом при работе в этом режиме реализуется одно из требований к визуальной отладке -- доступность информации о процессе в любой момент времени.

    Сложность возникает, во-первых, при увеличении объемов параллелизма и, следовательно, при увеличении числа анализируемых процессоров, во-вторых, при усложнении системы параллельного программирования и выделении новых категорий времен. Поскольку при выполнении параллельной программы происходят те или иные обмены данными, а анализ расхода времени на коммуникации и ожидания играет важную роль в отладке эффективности, диаграммы Гантта стали снабжаться дополнительно отображением взаимодействия, обычно в виде линий, соединяющих диаграммы различных процессоров. Еще одна проблема связана с тем, что, когда стандартные диаграммы Гантта доходят до конца отведенного места, их приходится начинать рисовать сначала. Это плохо сказывается на восприятии общей картины происходящего процесса. Было предложено изображать диаграммы не в виде прямой линии, а в виде цветного кольца. Усложнение графического вывода, особенно в случае масс-параллельных систем, затрудняет адекватное понимание пользователем происходящего.

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

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

    Из более новых видов отображений, появившихся в информационной визуализации в 90-ых годах, интерес для нужд отладки эффективности представляет идея информационной стены (Mural [13]).

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

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

    При разработке видов отображения значительную роль играют особенности тех сущностей, для визуализации которых эти виды отображения предназначены. Поэтому попытка непосредственного использования для DVM видов отображения, заимствованных из уже известных систем отладки эффективности, таких как диаграммы Гантта, Кивиатта и т.п., не увенчалась успехом. Эти виды отображения не учитывали особенностей программных объектов отладочной системы DVM и не позволяли отобразить собираемые системой данные об интервалах. Например, из-за комплексной структуры временных характеристик, выдаваемых системой, традиционные виды отображения не могли дать адекватного восприятия процесса выполнения программы (будет рассмотрено в дальнейшем). Было решено доработать и модернизировать уже известные виды отображения, используемые как в системах отладки эффективности, так и в системах информационной визуализации, в частности, такие виды отображения как информационная стена, "конические револьверные деревья" и др. [21],[13],[7]. По ходу работы были предложены и оригинальные варианта видов отображения. Ниже рассматриваются упомянутые общие виды отображений и описываются специальные виды отображения, предлагаемые для использования при визуализации отладочных данных системы, которые предназначаются для представления отладочных данных, генерируемых средствами отладки эффективности системы DVM.

    Разработка видов отображения для отладки производительности в системе DVM

    Система DVM [4] использует парадигму параллелизма по данным и расширяет стандартные языки программирования C и Fortran77 до эффективных языков параллельного программирования. Система DVM снабжена развитой системой сбора отладочной информации, включая анализатор эффективности и предсказатель производительности. Единицей отладочной информации является интервал - фрагмент кода, выделенный системой или заданный пользователем, выполняемый на конкретном процессоре. Следует отметить, что интервал - сущность динамическая. К примеру, система позволяет рассматривать как интервал каждую итерацию цикла или вызов функции. Временные характеристики интервала включают в себя не только общее время выполнения, но и такие важные его составляющие как время вычислений, время, потраченное на операции обмена данными, время простоя процессора. Сбор отладочной информации производится для каждого из процессоров, что позволяет обнаруживать потенциально неэффективные участки кода.

    Столь богатые возможности отладочной системы DVM обусловлены особенностями ее функционирования. Сбор отладочной информации производится по мере работы программы за счет внедрения средств сбора информации (своеобразных программных закладок) в используемые программой библиотеки. Получаемые при этом временные характеристики практически не отличаются от тех, которые имели бы место быть без вмешательства измерительных средств [4], [8]. В некоторых работах авторы отмечают, что, зная как работают их измерительные средства, они могут предсказать вносимые искажения и попытаться из скомпенсировать.

    Большинство видов отображений используются для представления простых по своей природе данных, например, набора скалярных величин. Основная сложность их применения для визуальной отладки DVM заключается в том, что характеристики, собираемые подсистемой и используемые для отладки эффективности, являются комплексными, состоящими из, возможно, комплексных же, компонентов. Отображение этих компонентов по отдельности либо потребует от пользователя весьма напряженной работы мысли по созданию и удержанию в голове связей между всеми этими величинами, либо приведет его к неполной и/или искаженной интерпрерации. При этом нужно помнить еще и то, что DVM является системой параллельного программирования и отладочная информация собирается для нескольких (от нескольких штук до нескольких сотен) процессоров. Традиционно в визуальных отладчиках либо используются общеизвестные простые виды отображений, приданные стандартному текстовому отладчику [8], либо разрабатываются свои собственные виды отображений. В последнем случае основную сложность может представлять само взаимодействие пользователя со средствами отладки, например, по причине того, что у пользователя могут быть внутренние представления программных объектов, отличающиеся от предлагаемых. Для создания эффективного и удобного в работе визуального отладчика требуется не просто создавать виды отображений и навязывать их пользователю (поскольку других все равно нет). Необходимо изучить структуру визуализируемой информации и при разработке новых специальных видов отображений отталкиваться от внутреннего устройства, взаимодействия и функционирования визуализируемых сущностей. При этом крайне желательно использовать не только опыт, накопленный при разработке визуальных отладчиков, но и пользоваться средствами информационной визуализации, которые позволяют представлять в воспринимаемом для человека виде весьма сложные и информационные структуры.

    Информационная стена

    Основным способом отладки эффективности по-прежнему остается анализ большого количества отладочной информации и соотнесение ее с исходным текстом отлаживаемой программы. Легко интерпретируемыми, являются отображения исходного текста и дополнительной информации, использующие идею "информационной стены"[13]. Предложен ряд вспомогательных видов отображения, базирующихся на таких метафорах, как "рулон распечатки с комментариями" и "стена, оклеенная распечатками". Первый представляет исходный текст программы с дополнительной информацией в графическом виде. Второй - информацию о выполнении параллельной программы на каждом из процессоров. Для анализа выполнения фрагмента кода на разных процессорах целесообразно применить горизонтальные срезки такой стены - "выступающий карниз". Задача стены не только в представлении сразу всех данных, но и в обеспечении навигации в этих совокупностях данных и кода, а также в облегчении локализации и поиска интересующих мест в коде и данных (поиск узкого места, неверных вычислений и пр.).

    Виды отображений интервалов

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

    Отображение характеристик интервала (диаграмма интервала)

    Единицей сбора отладочной информации в DVM является набор характеристик выполнения интервала на процессоре, поэтому один из элементарных видов отображения должен обеспечивать информативное представление этих данных. Этот вид отображения называется диаграмма интервала. Его аналогом является такое средство статистической графики как диаграмма Гантта. На диаграмме интервала отображаются слагаемые полного времени выполнения, по отдельности или в объединении каждое своим цветом (См. Рис. 1). За счет разной (пропорциональной величине показателя) ширины полос разного цвета диаграмма отождествляется с суммой нескольких различных слагаемых. Анализ такой диаграммы позволяет определить, на какие цели и, примерно, в каком количестве было потрачено время выполнения. За счет варьирования размера можно получать разное разрешение. Возможность выбора отображаемых компонент и отображение компоненты как целиком так и в качестве набора отдельных составляющих позволяет пользователю эффективно анализировать ход и временные характеристики выполнения программы.

    Стена интервалов

    Параллельная программа, экземпляры которой взаимодействуют друг с другом редко или с низкой интенсивностью, по своим временным характеристикам гораздо ближе к последовательной программе. В случае же, когда взаимодействие происходит достаточно часто, важно увидеть выполнение фрагмента кода на нескольких процессорах одновременно, особенно если интервал содержит не только вычисления, но обмен данными. Обычно для представления нескольких значений одного показателя применяются столбчатые диаграммы, однако применение для отображения комплексных характеристик интервала набора столбчатых диаграмм оказалось весьма неудобным. Одновременный обзор нескольких диаграмм, представляющих связанные величины затрудняет адекватное восприятие картины в целом. Было решено строить столбчатую диаграмму из диаграмм интервалов. Отметим, что это позволило при той же занимаемой площади экрана увеличить информативность графических образов без снижения качества восприятия [21] (См. Рис. 2).

    Лес интервалов

    Первые же опыты применения стены интервалов для визуализации отладочной информации показали, что с ростом числа процессоров возникает ряд проблем, которые не были предусмотрены для малого параллелизма. В массивнопараллельных задачах процессоры не соединены в линейку, как может интерпретироваться стена. Совершенно логично, поэтому, ставить несколько стен параллельно. Какие направления (линейки) будут сгруппированы в стены, определяет пользователь. При этом возникает проблема перехода внимания от одной плоской стены к стене. Для решения этой проблемы было предложено решение о разделении стены на ряд диаграмм интервалов. Дальнейшим развитием является отображение некоторой квадратной сетки, в узлах которой будут размещаться диаграммы интервалов, направленные по нормали к плоскости сетки. Для облегчения восприятия планируется реализация возможности перемещения между столбами диаграмм. Полученный вид отображения интерпретируется следующим образом: отображается сетка процессоров, а в процессоре отображается информация о выполнении интервала на этом процессоре. Его отдаленным аналогом является вид "коническая диаграмма" из набора видов диаграмм Microsoft Office 97.

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

    Радиальная диаграмма

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

    Данное отображение применяется в основном для анализа скалярного показателя выполнения одного интервала на различных процессорах. В отличии от обычных круговых диаграмм авторы используют отображение величины не угловым размером, а радиусом сегмента. Интерес здесь представляет возможность отображения на одном круге нескольких величин и изображение каждого из сегментов как круговой диаграммы, состоящей из нескольких суммируемых компонент.

    Дерево интервалов

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

    Иерархический список интервалов

    Анализ дерева интервалов показал, что при большой глубине вложенности дерево сильно вытягивается в ширину, что затрудняет восприятие картины в целом, а разнесенность узлов-диаграмм рассеивает внимание. Для решения этой проблемы было применено отождествление списка интервалов с исходным текстом программы, имея при этом возможность разворачивать интервалы в список вложенных подинтервалов. Это аналог методики последовательного проваливания или детализации, применяемый в средствах управления проектами и предприятиями. Особенную эффективность этого вида авторы связывают с отождествлением вертикального списка горизонтальных диаграмм интервалов с соответствующим ему исходным текстом программы (в виде блоков, которыми являются тела циклов, составные операторы и пр.). В перспективе планируется использовать этот вид в совмещении с окном просмотра исходного текста программы, подсвечивая фрагмент кода соответствующей ему диаграммой интервала. (См. Рис. 1, 5)

    Это аналог методики последовательного проваливания или детализации, применяемый в средствах управления проектами и предприятиями. Развертывание составного интервала в подинтервалы интерактивно, что позволяет пользователю уточнять положение неэффективного фрагмента кода.

    Связь визуальных образов с исходным текстом

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

    Массивонавигатор

    При распределенной обработке массивов на сетке процессоров возникает необходимость анализа работы процессора, ответственного за обработку конкретных элементов массива. Для этого предполагается использовать представление сетки процессоров с выбором обрабатываемого массива и определением конкретного процессора (на основе сведений об организации массива виртуальных процессоров), значений переменных цикла и т.д., а также вывод характеристик работы массива. Для анализа узких мест, связанных с взаимоблокировкой процессоров, предполагается представление информации о коммуникационных операциях, в которых участвует процессор, как в численном виде, так и в графическом, отображая на сетке процессоры, с которыми ведется обмен данными [11].

    Перспективы и заключение

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

    Разработанная на данном этапе в среде C++ Builder 5.0 действующая модель, показывает, как будет выглядеть система визуализации, и позволяет оценить пригодность разработанных видов отображений. В дальнейшем предполагается проектирование видов отображений для представления данных, генерируемых при отладке правильности. Планируется провести опробование модели и методик для отладки реальных задач реальными конечными пользователями.

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

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

    Мы надеемся, что контакты с разработчиками и с пользователями системы DVM позволят превратить разработанную модель визуализатора отладки производительности в полноценную систему визуального проектирования, включающую в себя визуальные отладчики эффективности и правильности, а также средства визуального описания программ.

  • Библиография

    1. Авербух В.Л. Средства визуализации параллельного программирования (обзор) // Пользоват. интерфейс: исслед., проектирование, реализация. 1993. N4. с.32--41.
    2. Авербух В.Л. Визуальная отладка параллельных программ (Обзор) // Алгоритмы и програм. ср-ва параллельн.вычислений: Сб.науч.тр./ ИММ УрО РАН. Екатеринбург, 1995.-- с.21--46.
    3. Авербух В.Л., Манаков Д.В., Шагубаков М.Р. DVM-система разработки параллельных программ // Материалы Всероссийской научной конференции "Высокопроизводительные вычисления и их приложения" Черноголовка 31 октября -- 2 ноября 2001 года." Черноголовка. Подмосковный фи- лиал МГУ им. М.В.Ломоносова, Институт Проблем Химической Физики РАН, 2001, Стр. 13--17
    4. Коновалов Н.А., Крюков В.А. DVM-система разработки параллельных программ // Материалы Всероссийской научной конференции "Высокопроизводительные вычисления и их приложения" Черноголовка 31 октября -- 2 ноября 2000 года." Черноголовка. Подмосковный фи- лиал МГУ им. М.В.Ломоносова, Институт Проблем Химической Физики РАН, 2000, Стр. 33.
    5. Крюков В.А. Разработка параллельных программ для вычислительных кластеров и сетей // Материалы Всероссийской научной конференции "Высокопроизводительные вычисления и их приложения" Черноголовка 31 октября -- 1 ноября 2001 года." Черноголовка. Подмосковный фи- лиал МГУ им. М.В.Ломоносова, Институт Проблем Химической Физики РАН, 2001, Стр. 106--121
    6. Крюков В.А., Удовиченко Р.В. "Отладка DVM программ" Программирование. -- 2001. N. 3.-- c. 19-29
    7. Ankerst M., Keim D.A., Kriegel H.--P. Circle Segments: A Technique for Visually Exploring Large Multidimensional Data Sets. // Proc. Visualization'96, Hot Topic Session, San Francisco, CA, 1996.
    8. Wylie Brian J.N., Endo Akiyoshi Annai/PMA Multi-level Hierarchical Parallel Program Performance Engineering. // Proc. 1st International Workshop on High-level Programming Models and Supportive Environments, pp. 58--67, IEEE Computer Society Press, April 1996. [ISBN: 0--8186--7567--5]
    9. Goosen H.A., Hinz P., Polzin D.W. Experience Using The Chiron Parallel Program Performance Visualization System. 1997. http://www.nhse.org/rib/repositories/ptlib/objects/Asset/chiron.html
    10. Fahringer Th. Estimating and Optimizing Performance for Parallel Programs // IEEE Computer, V.28, N 11, (November 1995) pp. 46-56.
    11. Heath M.T. Performance Visualization with ParaGraph.//Proc. Second Workshop on Environments and Tools for Parallel Sci. Comput., SIAM, Philadelphia, 1994, pp. 221--230.
    12. Hondroudakis A. Procter R. An empirically derived framework for classifying parallel program performance tuning problems // Proceedings of the SIGMETRICS Symposium on Parallel and Distributed Tools, pp. 112--121. ACM Press, August 1998.
    13. Jerding D.F., StaskoJ.T. "The Information Mural: A Technique for Displaying and Navigating Large Information Spaces." Technical Report GIT--GVU--97--24
    14. Kim S.W., Park I., Eigenmann R. A Performance Advisor Tool for Novice Programmers in Parallel Programming // to appear in the Proceedings of the 13th Workshop on Languages and Compilers for Parallel Computing (LCPC'2000)
    15. Kimelman D.N., Ngo T.A. The RP3 program visualization environment // IBM J. Res. Develop. Vol. 35 No 5/6 September/November 1991. pp. 635-651.
    16. Koike H., Takada T., Masui T. VisualLinda: A Framework for Visualizing Parallel Linda Programs // Proceeding 1997 IEEE Symposium on Visual Languages. September 23-26, 1997 Isle of Capri, Italy. Los Alamitos, Ca. IEEE Computer Society. 1997. pp. 174-178.
    17. Lehr T., Seggal Z., Vrsalovich D.F., Caplan E., Chung A.L., Fineman Ch.E. Visualizing Performance Debugging // IEEE Computer. Vol. 22, No 10 (October 1989). pp. 38-51.
    18. Miller B., Calaghan M., Cargille J., Hollingsworth J., Irvin R.B., Karavanic K., Kunchithapadam K., Newhall T. The Paradyn Parallel Performance Measurement Tool //IEEE Computer, V.28, N 11, (November 1995) pp. 37-46.
    19. Osawa N. An Enhanced 3-D Animation Tool for Performance Tuning of Parallel Programs Based on Dynamic Models // SPDP 98 Welches Or. USA. pp. 72-80.
    20. Reed D., Scullin W., Tavera L., Shields K., Elford Ch. Virtual Reality and Parallel Systems Performance Analysis //IEEE Computer, V.28, N 11, (November 1995) pp. 57-67.
    21. Robertson G.G., Card S.K., Mackinlay J.D. Information visualization using 3D interactive Animation // Communications of the ACM, Vol.36. No.4 (April 1993), pp. 57-71
    22. Yan J., Sarukkai S., Mehra P. Performance Measurement, Visualisation and Modeling of Parallel And Distributed Programs using AIMS Toolkit // Software - Practice and Experience. V. 25, N 4 (April 1995) pp. 429-461.
    23. Szelenyi F., Zecca V. Visualizing Parallel Execution of FORTRAN Programs // IBM Jorn. Res. and Develop., 1991, Vol.35, N1/2, pp. 270-282.

    Приложение


    1. Диаграмма интервала и легенда диаграммы


    2. Стена из диаграмм интервалов


    3. Радиальная диаграмма для 78 процессоров


    4. Дерево интервалов


    5. Иерархический список интервалов


    6. Общий вид визуализатора


    7. Трехмерные диаграммы Гантта в VisuaLinda


    8. Визуальная система Kanoko


    9. Визуальная система ParaDyn


    10. Система AIMS


    11. Система Avatar. Пример ScatterPlot


    12. Система Avatar. Пример ScatterCube-матрицы


    13. Система P3T


    14. Трехмерная графика системы Chiron