Создание видов отображения для визуальной отладки правильности и эффективности - лишь одна из многих проблем, возникающих в связи с параллельными вычислениями. Тем не менее, вопросы поиска и конструирования способов отображения отладочных данных при работе с параллельными системами являются актуальными и в теоретическом (как частный случай проблемы генерации видов отображения в теории визуализации), и в практическом плане, поскольку от эффективности интерпретации данных зависит успех или неуспех работы с параллельной системой.
В нашей работе описываются результаты первого этапа разработки средств визуализации для разработанной в ИПМ РАН системы параллельного программирования DVM [4],[5],[6]. Эта система представляет собой полноценную систему параллельного программирования, расширяющую стандартные языки C и Fortran 77 до эффективных паралельных языков. DVM включает в себя не только средства описания программ в рамках парадигмы параллелизма по данным, но и средства отладки правильности и эффективности, а также предсказания производительности. В настоящий момент DVM выдает большие объемы полезной отладочной информации в основном в текстовом и табличном виде. Отметим, что DVM функционирует на отечественных параллельных вычислителях типа МВС-1000, включая состоящий в настоящий момент из более чем 700 модулей МВС-1000/М, установленный в МСЦ. Работа с DVM на МВС-1000/М позволяет проверить предложенные методики визуализации на реальном масс-параллельном вычислителе, учитывая, что особенности программирования и отладки на сотнях процессоров резко отличаются от параллелизма на 16-32 вычислительных блоках. Важным также является возможность активных консультаций с разработчиками системы DVM и ее пользователями по ходу реализации средств визуализации.
В первых разделах нашей статьи приводится краткий обзор современного состояния дел с разработкой видов отображения для параллельной отладки и информационной визуализации, которые по нашему мнению полезны для поиска методов представления отладочных данных в разрабатываемой системе. Основная часть посвящена описанию набора видов отображения, предлагаемых для отображения информации, получаемой системой DVM при отладке эффективности. В приложении описана макетная реализация средств визуализации отладки эффективности для DVM.
Системы отладки эффективности служат для того, чтобы предсказывать, находить и избегать возможную неэффективность исполнения параллельных программ. Несмотря на большое количество инструментальных средств, описанных в литературе, лишь немногие из них реально используются. Для того чтобы разработать хороший инструмент, помогающий программисту отлаживать и повышать эффективность своей программы, необходимо рассмотреть возникающие ошибки и изучить их природу. Имеет место классификация проблем отладки и настройки эффективности. При этом можно выделить следующие факторы, затрудняющие поиск ошибок:
Отображением метрик работы параллельных программ и занимаются системы отладки эффективности. Для визуального представления метрик применяются виды отображения, в основном, заимствованные из статистической графики.
Именно на методах статистической графики в основном базируются виды отображения системы 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.
Paradyn [18] является инструментом измерения производительности очень больших параллельных программ и среди других модулей включает в себя Модуль "Консультант Эффективности", определяющий "узкие места" производительности путем автоматического поиска в информационном пространстве, определенном моделью поиска по трем осям: "ПОЧЕМУ", "ГДЕ" и "КОГДА". (Почему данная прикладная программа имеет низкую производительность? Где расположено "узкое место" производительности? Когда проявилось воздействие данного "узкого места" на производительность программы?)
Система не проходит по всем возможным приближениям поиска, а выбирает подмножество допустимых приближений. Упорядоченный список возможных приближений определяется (с использованием системных подсказок) при рассмотрении узлов, следующих из текущих узлов на каждой из осей. Затем из этого списка выбирается одно или более допустимых приближений. Если выбранное приближение не приводит к результату, то рассматривается следующее. Разработан специальный граф истории поиска, в котором содержится информация о пройденных путях по каждой из осей и результаты проведения проверок. Система поддерживает визуальный вид отображения этого графа. Каждый узел в этом графе представляет единичный шаг процесса поиска, который определен по одной из трех осей. Узлы раскрашены в соответствии с текущим состоянием представляемой ими конкретной гипотезы:
Иной подход к отладке эффективности реализован в системе P3T [10], предназначенной для оценки и оптимизации производительности параллельных программ. Если в предыдущих работах рассматривалась отладка эффективности на уровне операций посылки сообщений, то здесь проводится оптимизация самого кода программы при ее распараллеливании. Система P3T вычисляет набор параметров параллельной программы, каждый из которых отражает различные аспекты производительности. С помощью P3T можно ответить на три основных вопроса, касающихся отладки эффективности параллельной программы, а именно:
Система AIMS [22] является инструментарием для настройки и предсказания производительности программ, основанных на посылке сообщений (как работающих в сети, так и в рамках параллельного вычислителя). AIMS содержит набор подсистем, служащих для измерения и анализа производительности.
Измерения, проведенные в ходе выполнения программы для создания файла трассировки, нарушают и коммуникационные, и временные характеристики событий, записанных в файле. Для сглаживания последствий этих нежелательных эффектов служит специальный модуль компенсации, использующий соответствующие модели оценки взаимодействий для данной вычислительной архитектуры. Компенсатор внедрения исправляет файл трассировки, который может затем служить входным файлом для разнообразных средств оценки производительности, определяющих характеристики производительности на основании "посмертных" данных (См. Рис. 10).
Визуализация производится с использованием анимационных видов отображения. Эти виды отображения представляют информацию, указывая, когда выполняются отдельные программные конструкции, когда посылаются сообщения, как долго сообщения стоят в очереди перед тем, как обработаться, когда отдельный процессор простаивает. Некоторые виды отображения показывают фрагменты истории программы, непрерывно прокручивая изображение, другие, обновляя предыдущее состояние, создают анимационную последовательность образов.
Визуальная среда Avatar [20], созданная в рамках проекта Pablo, базируется на использование средств виртуальной реальности и предназначена для представления очень больших объемов данных о производительности параллельных систем, получаемых непосредственно в ходе их работы. Avatar также обеспечивает адаптивное управление прикладными программами в реальном времени.
Основной визуальной метафоры системы Avatar является трехмерное обобщение используемого в статистической графике видов отображения "метод множественного вывода данных" (scatterplot) (См. Рис. 11) и "scatterplot-матрицы", который называют "Scattercube-матрица" (См. Рис. 12). При работе с системой пользователь, применяющий средства виртуальной реальности, как бы оказывается внутри трехмерного помещения, в котором на внутренних гранях показаны оси, а на гранях - "полу" и двух "стенах" выводятся кривые, описывающие поведение параллельной программы. Текущее положение каждого процессора в информационном пространстве оценок обозначается октаэдром. Вводится визуальное отображение - аналог фазового портрета - "лента истории", которая может ассоциироваться с октаэдром для того чтобы показать предыдущие положения октаэдра, так что недавние положения обозначены лентой ярко синего цвета, а самые старые - темно-синий (то есть градуирован от голубого до темносинего в зависимости от времени возникновения). Лента истории также выведена в приведенном примере и видна в левом верхнем углу "помещения".
Набор единичных scattercube'ов напоминает стеклянный небоскреб, каждая из комнат которого содержит трехмерный вывод, описывающий различные аспекты поведения параллельной программы. Путешествие по "небоскребу" дает возможность полного исследования данных о производительности прикладной программы. При выводе в режиме реального времени и адаптивном контроле работы параллельной программы, необходимо своевременно обновлять выводимые данные, чтобы пользователь не принимал существенных решений, базируясь на предыдущей. возможно, устарелой информации. В данной метафоре четко виден "возраст" каждого выведенного элемента. Так выведенный элемент начинает постепенно тускнеть, если с момента появления последнего сообщение с данными о производительности соответствующего процессора прошло много времени. А если временной промежуток слишком велик, то данный элемент просто исчезает.
Важную роль в системе Avatar играет пользователь, "погруженный" в виртуальную реальность, описывающую поведение параллельной программы. Пользователь осуществляет управление выводом информации, а также адаптивный контроль работы самой прикладной программы.
Существует несколько конфигураций системы Avatar на базе:
Сцена театра CAVE первоначально представляет собой куб размером с комнату, где на стены проецируется видеоизображение с высокой разрешающей способностью. Метафора scattercube реализована для всех аппаратных версий системы, базирующихся и на рабочую станцию, и на шлем с встроенным экраном, и на виртуальный театр CAVE. Avatar использует звук для подкрепления эффективности вывода информации и увеличения числа размерностей выводимых данных, за счет невизуального представления значений полученных оценок. Кроме того звук может служить и для целей перемещения, ориентировки и взаимодействия в виртуальном пространстве. При помощи характеристик звучания (например, высоты звука) описываются статистические характеристики полученных оценок. Когда пользователь впервые входит в scattercube, то появление звука помогает ему установить местоположение большинства данных.
По мнению разработчиков система обеспечивает четкое визуальное различие между эффективной и неэффективной конфигурацией прикладной программы при примененном виде отображения. Накоплен богатый опыт, полученный в области интерактивной интерпретации данных, ориентации и интерактивного управления перемещением в виртуальном пространстве.
В анимационной системе Kanoko [19] предлагается метод анимации, отображающий значения состояния программы, взятые из ее трассы, в набор состояний динамической модели системы. Затем воспроизводится работа параллельной программы (моделируется динамическая система), а результаты моделирования визуализируются (а также сонифицируются). Анимация показывает изменения в балансе между вычислениями и обменами как обычные движения некоторой динамической системы. (Таким образом, имеет место использовании привычной для пользователя метафоры.) В частности определяются используемая динамическая система и отображение элементов и состояний параллельной ЭВМ на тела и силы динамической системы. Моделирование параллельной ЭВМ ведется на основе топологии ее (физической) сети. Так для параллельного вычислителя вычислительные модули, вычисления, загруженные на данном модуле, коммуникационная сеть и количество обменов могут отображаться на тела, массу тела, пружины между телами и силы притяжения между телами соответственно (См. Рис. 8).
Визуальная система отладки эффективности параллельных программ Chiron [9] отображает эффективность работы программ многопроцессорных машин с общей памятью. Здесь используется трехмерная графика, что позволяет показывать большое количество информации (См. Рис.14). Chiron разработан для решения таких проблем, как плохое использование кэша, неудачное размещение данных в памяти, разделения работы между процессорами, неэффективность синхронизации. Проект Chiron поддерживает три вида отображения данных. Каждый вид отображения представляется как отдельный объект в трехмерном пространстве, которым можно управлять в интерактивном режиме (вращать, переключать уровень детализации, менять масштаб).
Система использует следующие виды отображения:
В 80-ые годы системы визуализации параллельных вычислений базировались на посмертной визуализации собранных данных о работе параллельной программы. В 90-ые годы реализуются интерактивные визуальные отладчики параллельных программ как для случаев отладки правильности, так и для случаев отладки эффективности. Примерами последних может служить специальный модуль компенсации, реализованный в системе AIMS для создания эффекта интерактивной отладки или "trampolines" системы Paradyn. Однако следует отметить некоторую искусственность и несомненную трудоемкость и громоздкость способов создания эффекта "живой" визуализации.
Более перспективными представляются разработки интерактивных отладочных средств для параллельных ЭВМ, использующих клиент-серверный подход. При этом в роли клиента выступает отладчик, в частности работающий на хост-машине параллельного вычислителя и отвечающий за расстановку контрольных точек, интерфейс с пользователем и визуализацию данных, тогда как сервер это параллельная счетная задача. За счет инструмента задания соответствия между переменными или компонентами отлаживаемой программы и моментов передачи данных можно осуществить описание отладочной сессии. Данные можно передать из любой части программы, в том числе осуществить промежуточную передачу для отслеживания хода программы или сохранения состояния программы 3.
Проблема разработки видов отображения связана с другой не решенной проблемой - эффективной пользовательской интерпретацией отладочных данных. При этой интерпретации следует опираться либо на привычные и апробированные формы представления данных либо на метафоры, опирающиеся на опыт пользователей и учитывающие особенности изучаемых программных объектов.
Заимствовование из статистической графики видов отображения на базе диаграмм Гантта, Кивиата, столбчатые и круговые диаграмм, графиков, гистограмм и их трехмерных модификаций позволяет использовать богатый опыт представления данных. Однако, используя эти методики, сложно получить интегральное представление о производительности масс-параллельной системы.
Несмотря на применение в системе Avatar достаточно экзотических методик, основанных на виртуальной реальности, сам репертуар видов отображения, используемых при визуализации ограничен теми же графиками, представляющими метрики производительности. Мало того, по нашему мнению пользователь может испытывать затруднения как при интерпретации десятков и сотен графиков, так и при навигации в рамках виртуальной реальности с использованием (пока) несовершенных методов взаимодействия.
Ограниченное значение имеют и попытки разработки видов отображения на базе новых метафор. Искусственные и/или случайные сближения могут дать интересные, но не слишком легко и однозначно интерпретируемые картинки.
В этой связи может помочь комплексный подход к разработке систем параллельного программирования, когда полноценно и в едином ключе реализованы средства описания параллельных программ и их отладки правильности и производительности. Тогда, опираясь на анализ основных программных сущностей системы, можно спроектировать специализированные виды отображения как для спецификации программ, так и для представления отладочных данных. Именно такой подход реализован проектировании системы DVM.
Как уже было сказано выше, наиболее распространненые виды отображений, используемые для визуальной отладки, берут свое начало от методов статистической графики. В процессе параллельной работы программы накапливалась некоторая статистическая информация. После завершения работы программы эта информация отображалась средствами визуализации. Таким образом отладка происходила в посмертном режиме. Появлялись и новые, более специализированные виды отображений, часть из которых представляла из себя композиции уже созданных видов отображений, а часть являлась новыми разработками. Ниже мы рассмотрим некоторые классические виды отображений, такие как диаграммы Гантта, диаграммы Кивиатта, графики, схемы взаимодействия, и область их применения.
Диаграммы Гантта могут служить для отображения состояний процесса или процессора. При этом каждому параллельному процессу (процессору) соответствует своя горизонталь, и разными цветами показывается время ожидания, простоя и работы данного процесса (процессора), Протяженность цветного интервала дает представление о том, сколько времени процесс находился в данном состоянии. Диаграмму Гантта можно трактовать как ось времени, на которой откладываются те или иные события. Кроме текущей информации в диаграммах Гантта показывается информация об истории развития процесса, то есть существует возможность отследить, как вел себя процесс, где и почему образовались тупики и бесконечные откладывания. Таким образом при работе в этом режиме реализуется одно из требований к визуальной отладке -- доступность информации о процессе в любой момент времени.
Сложность возникает, во-первых, при увеличении объемов параллелизма и, следовательно, при увеличении числа анализируемых процессоров, во-вторых, при усложнении системы параллельного программирования и выделении новых категорий времен. Поскольку при выполнении параллельной программы происходят те или иные обмены данными, а анализ расхода времени на коммуникации и ожидания играет важную роль в отладке эффективности, диаграммы Гантта стали снабжаться дополнительно отображением взаимодействия, обычно в виде линий, соединяющих диаграммы различных процессоров. Еще одна проблема связана с тем, что, когда стандартные диаграммы Гантта доходят до конца отведенного места, их приходится начинать рисовать сначала. Это плохо сказывается на восприятии общей картины происходящего процесса. Было предложено изображать диаграммы не в виде прямой линии, а в виде цветного кольца. Усложнение графического вывода, особенно в случае масс-параллельных систем, затрудняет адекватное понимание пользователем происходящего.
Диаграмма Кивиата предназначена для отображения значений одной и той же величины при нескольких схожих значениях или условиях. Они несколько напоминают круговые диаграммы и используются для динамического представления занятости каждого процессора и баланса распределенных между ними вычислений. Часто в системах визуальной отладки производительности диаграммы Кивиата применяются не как самостоятельный вид отображения, а как вспомогательный. Например, в связке с окном просмотра исходного текста для тех фрагментов параллельных программ, которые выполняются на нескольких процессорах. С ростом числа отображаемых категорий диаграмма Кивиатта теряет ясность представления, поэтому более перспективной является комбинация диаграмм Кивиата со средствами представления топологии процессоров. В этом случае пользователь может анализировать загрузку не всех процессоров одновременно, а какого-то интересного (и потому заданного им) блока. Расчет делается на то, что при распараллеливании пользователь придает распараллеливанию (и топологии процессоров) некий смысл и желает, чтобы средства отладки каким-то образом учитывали локализацию его интересов.
Применение графиков, отображающих метрики производительности параллельных программ также было вызвано задачей представления некоторых данных, зависящих от времени. При использовании графиков наблюдаются те же проблемы, что и у диаграмм Гантта -- с ростом числа процессоров возрастает и количество представляемых графиками метрик. Как уже отмечалось представляется сомнительной успешная интерпретация в ходе одного сеанса многих сотен (трехмерных!) графиков. Обеспечивающий эту интерпретацию "полет" по виртуальному небоскребу может только затруднить работу пользователя.
Из более новых видов отображений, появившихся в информационной визуализации в 90-ых годах, интерес для нужд отладки эффективности представляет идея информационной стены (Mural [13]).
Суть этого вида отображения заключается в том, что большие объемы данных изображаются на некоторой виртуальной поверхности, напоминающей стену. Для различения данных используется положение их в вертикальном столбце и положение этого столбца относительно других. Навигация осуществляется путем перемещения пользователя вдоль стены, возможно, с перемещением по высоте. В виде отображения "информационная стена можно использовать принцип "рыбьего глаза" -- в точке интереса изображение увеличивается или остается нормальным, а на переферии зрения уменьшается.
При отладке эффективности информационная стена может использоваться для представления исходного текста программы вместе с графической информацией, относящейся к этому тексту. Также планируется применить принцип информационной стены при выводе больших графических объектов, таких как стена, дерево или список интервалов. (См. ниже.)
При разработке видов отображения значительную роль играют особенности тех сущностей, для визуализации которых эти виды отображения предназначены. Поэтому попытка непосредственного использования для DVM видов отображения, заимствованных из уже известных систем отладки эффективности, таких как диаграммы Гантта, Кивиатта и т.п., не увенчалась успехом. Эти виды отображения не учитывали особенностей программных объектов отладочной системы DVM и не позволяли отобразить собираемые системой данные об интервалах. Например, из-за комплексной структуры временных характеристик, выдаваемых системой, традиционные виды отображения не могли дать адекватного восприятия процесса выполнения программы (будет рассмотрено в дальнейшем). Было решено доработать и модернизировать уже известные виды отображения, используемые как в системах отладки эффективности, так и в системах информационной визуализации, в частности, такие виды отображения как информационная стена, "конические револьверные деревья" и др. [21],[13],[7]. По ходу работы были предложены и оригинальные варианта видов отображения. Ниже рассматриваются упомянутые общие виды отображений и описываются специальные виды отображения, предлагаемые для использования при визуализации отладочных данных системы, которые предназначаются для представления отладочных данных, генерируемых средствами отладки эффективности системы 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 позволят превратить разработанную модель визуализатора отладки производительности в полноценную систему визуального проектирования, включающую в себя визуальные отладчики эффективности и правильности, а также средства визуального описания программ.